一般我们在部署k8s集群,创建的证书期限只有一年,当master节点证书重建以后,那么此时在低版本的K8s集群中可能还会遇到以下客户端证书过期问题
此时我们备份故障节点/etc/kubernets/kubelet.conf文件并删除,然后去一个正常的master节点,使用以下命令重新生成一个kubelet.conf文件
kubeadm kubeconfig user --org system:nodes --client-name system:node:$NODE > kubelet.conf
$NODE需要修改为你的节点名,然后将生成的文件复制到出现故障节点的/etc/kubernets目录下。然后重启kubelet。
我们可以在通过kubectl get csr查看是否有未授权的CSR请求,如果有,我们需要手工将其通过验证。
kubectl get csr kubectl certificate approve <csr_name>
一般情况下此时节点就会恢复正常。
针对于1.17以下的k8s,kubelet.conf文件需要将client-certificate-data
和 client-key-data
改为如下配置
client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem client-key: /var/lib/kubelet/pki/kubelet-client-current.pem