问题说明
kubelet证书默认有效期是一年,这样一年之后我们的node节点就会处于not ready的状态,为了避免这个问题就需要想一个解决方案。
curl -s -L -o /bin/cfssl-certinfo https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod a+x /bin/cfssl-certinfo
cfssl-certinfo -cert /etc/kubernetes/ssl/kubelet.crt
解决方案
证书替换
使用admin证书替换kubelet证书。
备份 mkdir ~/sslback && mv /etc/kubernetes/kubelet.kubeconfig ~/sslback/
使用admin证书文件替换
cp ~/.kube/config /etc/kubernetes/kubelet.kubeconfig
systemctl restart kubelet && systemctl status kubelet
重新请求证书
手动签发,在 kubelet 首次启动后,如果用户 Token 没问题,并且 RBAC 也做了相应的设置,那么此时在集群内应该能看到 kubelet 发起的 CSR 请求 ,必须通过后kubernetes 系统才会将该 Node 加入到集群。
在证书过期node删除kubelet相关证书文件
rm -rf /etc/kubernetes/kubelet.kubeconfig
rm -rf /etc/kubernetes/ssl/kubelet.*
systemctl restart kubelet && systemctl status kubelet
自动生成了kubelet kubeconfig 文件和公私钥
查看未授权的CSR请求
kubectl get csr
通过CSR 请求:
kubectl certificate approve csr
查看重新生成的证书文件
ll /etc/kubernetes/ssl/kubelet.*
kubectl get nodes --show-labels