1.查看证书期限
kubeadm certs check-expiration
2.更改系统时间为证书过期的时间
因为要保持集群的时间一直,使用xshell对多个会话同时执行以下命令
systemctl stop chrondy #停止时间同步工具
date -s 06/15/2024 #更改系统时间为证书过期后的时间
date #查看当前系统时间
3. 再次查看k8s的证书
kubeadm certs check-expiration
可以看到residual time变成了invalid
此时执行任何kubectl的命令都会提示证书过期的报错
4.证书续期(以下是对一个master节点的续期)
kubeadm certs renew all
查看 续期后的证书期限
kubeadm certs check-expiration
residual time会重新续期为一年
5.查看配置文件是否更新
ls -ll /etc/kubernetes/
根据配置文件的更改时间可以知道,k8s组件的配置文件在续期证书后自动更新了,但是kubelet并没有自动更新,因为证书续期的时候是没有给kubelet的证书续期的,kubelet用的还是旧的过期证书,需要手动更新kubelet证书
一般情况下是不用重启k8s组件的,如果配置没有生效的情况下需要使用以下命令手动重启k8s组件
docker ps |grep -v pause |grep -E "etcd|scheduler|controller|apiserver" |awk '{print $1}' |xargs docker restart
加入去除pause的原因是,k8s的组件在docker中有两个容器,一个是带pod,我们重启的是不带pod的
6.更新kubelet证书
在更新kubelet证书前,还需要替换以下config的配置,因为更新证书也是不会自动更新config配置的
cp /etc/kubernetes/admin.conf ~/.kube/config #不更改此配置的也会报错
现在来手动更新kubelet证书
cat /etc/kubernetes/admin.conf
将此crt和key全都一起复制下来
cp /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.bak
将配置文件备份一份 #在续期完成后可以重新用回原来的配置文件
vi /etc/kubernetes/kubelet.conf
将此处的crt和key配置删除
把刚刚从admin.conf复制的crt和key的所有内容粘贴进来,重启kubelet服务
systemctl restart kubelet
查看kubelet 证书,在里面会看到新生成的证书
ls -ll /var/lib/kubelet/pki/
或者通过以下命令查看证书是否续期成功
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not
至此该节点证书续期完成,可以正常使用kubectl命令
其余master节点也是按照以上步骤续期证书即可
7.work节点证书续期
work节点只要续期kubelet证书即可
备份kubelet配置文件 #在续期完成后可以重新用回原来的配置文件
cp /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.bak
手动更新kubelet证书
cat /etc/kubernetes/admin.conf #在任意一个续期后的master节点执行此命令
将此crt和key全都一起复制下来
vi /etc/kubernetes/kubelet.conf
将此处的crt和key配置删除
把刚刚从admin.conf复制的crt和key的所有内容粘贴进来,重启kubelet服务
systemctl restart kubelet
查看kubelet 证书,在里面会看到新生成的证书
ls -ll /var/lib/kubelet/pki/
或者通过以下命令查看证书是否续期成功
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not
至此该节点证书续期完成,可以正常使用
其余work节点也是按照以上步骤续期证书即可