手动安装的基于二进制的k8s 昨天突然出现所有节点都连接不上控制节点了,到kubelet看到node节点证书过期了,node节点上的证书都是从控制节点(kube-controller-manager)自动获取的,那么原因肯定出在控制器(kube-controller-manager)上,经过排查和其他环境启动参数对比,发现少了 --cluster-signing-duration=xxxxxh 这个参数忘记加上了,这个参数默认的时间是一年 (The length of duration signed certificates will be given. (default 8760h0m0s));
直到问题所在在 kube-controller-manager 启动配置文件中加上 --cluster-signing-duration=43800h, 然后 node节点上重启了下 kubelet.service ,通过kubectl get csr 没有出现证书请求信息,然后查资料发现,客户端生成的证书都是
kubelet-client-current.pem -> /opt/kubernetes/k8s/ssl/kubelet-client-2022-07-11-21-57-19.pem
形式,是一个快捷连接,如果重启kuelet.service 的时候,如果证书过期时间不到期,是不会从新生成证书请求的。所以,使用unlink kubelet-client-current.pem 删除快捷方式,然后重启kubelet.serive ,然后再 kubectl get csr 发现有证书请求了,最后使用
kubectl certificate approve node-csr-cWhu09pMjFTsJPr-qacRKikG8DYKEYt11x3jOR46rb8 命令批准证书,ok,搞定!!!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!