k8s 证书延期

查看证书有效期

kubeadm certs check-expiration

或者进入/etc/kubernetes/pki下

用openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not  查看

操作前备份

备份下面

/etc/kubernetes/    # 静态pods配置以及证书

/var/lib/kubelet/pki/  #证书pem存放目录

然后执行

kubeadm certs renew all 全更新/etc/kubernetes/pki 下的证书与/etc/kubernetes/ *.conf的配置文件,但是不会更新kubelet.conf 。

证书生成后要重启下面的服务

kubectl -n kube-system delete pod-l'component=kube-apiserver'

kubectl -n kube-system delete pod-l'component=kube-controller-manager'

kubectl -n kube-system delete pod-l'component=kube-scheduler'

kubectl - n kube-system delete pod-l'component=etcd'

之后把/etc/kubernetes/admin.conf 放到~/.kube/config 

上面说到kubelet.conf不会更新,kubelet.conf是连接apiserver的。kubelet启动时会加载kubelet.conf这个文件并在/var/lib/kubelet/pki/下生成.pem证书。

查看自己的kubelet 是否过期可以用以下命令查看

openssl x509 -in /var/lib/kubelet/pki/*.pem -noout -text 查看过期时间

如果kubelet 也过期的话

可以单独生成kubelet 的config 文件kubelet.conf,用以下命令

kubeadm init --kubernetes-version=v1.22.5 phase kubeconfig kubelet  会在/etc/kubernetes/下生成kubelet.conf。然后重启kubelet就可以,重启后就会跟据kubelet.conf生成/var/lib/kubelet/pki/下生成.pem证书

systemctl restart kubelet

最后用下面命令验证kubelet证书时间

用openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not  查看

----------------------------------------------------------------------------------------------------------------

下面是kubelet.conf在老版的k8s 中是没有 --kubernetes-version=v1.22.5参数进行指定版本的。但是可以用之前备份的老版本的kubelet.conf 把里面的client-certificate-date与client-key-data 换成新的,新的可以从刚生成的admin.conf 中取如下图,把kubelet.conf中的替换

然后重启kubelet ,systemctl restart kubelet。此时会生成新的证书在/var/lib/kubelet/pki/kubelet-client-current.pem ,这时可以用openssl x509就是上面的命令查看过期时间有没有更新。或者看此文件的创建时候也可以。如果还是没有更新。那么可以把这个kubelet-client-current.pem 文件删除,他只是一个软链接。删除后。再次重启kubelet。此时他会生成新的kubelet-client-current.pem软链接。

其它node节点可以把任何一台主机延长后的的有效的client-certificate-date与client-key-data替换kubelet.conf中的即可,操作与上面一致 

-------------------------------------------------------------------------------------------------------------------------如以上操作完成后,kubectl 命令还是说证书过期,可以用

docker ps |grep 'kube-apiserver'| awk '{print $1}'

docker ps |grep 'controller-manager'| awk '{print $1}'

docker ps |grep 'scheduler'| awk '{print $1}'

docker ps |grep 'etcd'  | awk '{print $1}'

把上面找到的id 都docker restart 一下。第个组件应该是2个。

然后如果还有问题可以重启node节点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容