k8s证书过期问题
问题描述
使用 kubectl 输出异常
# kubectl get pod
异常结果如下
解决方案
- 检查证书
# kubeadm certs check-expiration
- 备份文件
# cp -r /etc/kubernetes /etc/kubernetes_bak
3.更新证书
# kubeadm certs renew all
4.检查证书更新是否成功
# kubeadm certs check-expiration
5.重启服务(控制平面组件是以 static Pod(静态 Pod)运行的)
cp -rp $HOME/.kube/config $HOME/.kube/config.bak
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
systemctl restart kubelet
为什么这样做就够了
- kubelet 会自动监控
/etc/kubernetes/manifests/*.yaml中定义的静态 Pod; - 这些 Pod(apiserver / controller-manager / scheduler / etcd)挂载的证书文件已经被你更新;
- 当 kubelet 发现底层挂载的文件时间戳变化,就会自动重新拉起这些 Pod,从而加载新证书。