k8s证书过期处理过程
- 以下步骤在master节点操作
cp -r /etc/kubernetes/ /etc/kubernetes_bak$(date +%Y%m%d)
cp -r /var/lib/kubelet/pki/ /var/lib/kubelet/pki_bak$(date +%Y%m%d)
-
查看k8s自签证书过期时间
kubeadm alpha certs check-expiration
-
续订k8s自签证书
kubeadm alpha certs renew all
-
验证k8s自签证书过期时间
kubeadm alpha certs check-expiration
- 如果有多个master节点时在剩余master-2,master-3上重复上述操作
-
重启k8s组件apiserver,sechudler,controller-manager,etcd
kubectl get pod -n kube-system|grep apiserver|awk '{print $1}'|xargs kubectl delete pod -n kube-system kubectl get pod -n kube-system|grep scheduler|awk '{print $1}'|xargs kubectl delete pod -n kube-system kubectl get pod -n kube-system|grep controller-manager|awk '{print $1}'|xargs kubectl delete pod -n kube-system kubectl get pod -n kube-system|grep etcd|awk '{print $1}'|xargs kubectl delete pod -n kube-system
-
更新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$(date +%Y%m%d)
将配置文件备份一份 #在续期完成后可以重新用回原来的配置文件
vi /etc/kubernetes/kubelet.conf
将此处的crt和key配置删除
把刚刚从admin.conf复制的crt和key的所有内容粘贴进来
重启kubelet服务
systemctl restart kubelet
查看kubelet 证书,在里面会看到新生成的证书
ls -lh /var/lib/kubelet/pki/
如果特殊情况下,证书在重启kubelet后也没生成得话,就删除软连接里的老证书,在重启一次kubelet
cp /var/lib/kubelet/pki/kubelet-client-current.pem /var/lib/kubelet/pki/kubelet-client-current.pem_bak$(date +%Y%m%d)
rm -rf /var/lib/kubelet/pki/kubelet-client-current.pem
systemctl restart kubelet
重启完成后就会生成新的证书了
通过以下命令查看证书是否续期成功
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not
至此该节点证书续期完成,可以正常使用kubectl命令
其余master节点也是按照以上步骤续期证书即可
6. work节点证书续期
- 以下在work节点操作
- work节点只要续期kubelet证书即可
同 更新kubelet证书 操作。所有的work节点均需要更新
注意:crt和key的值,需要从任意一个续期后的master节点复制下来