笔者的集群的证书已经过期,需要进行处理。
1.执行kubeadm config view > kubeadm.yaml会在当前目录生成一个kubeadm.yaml文件。
因为此命令需要集群正常运行时才能执行,如果你的集群已经GG可以先修改系统时间让集群先work,获取kubeadm.yaml之后再恢复系统时间。
查看证书有效期:kubeadm alpha certs renew all --config=kubeadm.yaml
修改系统时间:date -s "2020-08-30 00:00:00"
恢复系统时间:ntpdate -u ntp.api.bz
2.备份
mv admin.conf admin.conf.bak
mv controller-manager.conf controller-manager.conf.bak
mv scheduler.conf scheduler.conf.bak
mv kubelet.conf kubelet.conf.bak
否则后边更新证书后此文件不会被自动更改,依然不work。
3.执行 kubeadm alpha certs renew all --config=kubeadm.yaml 更新证书。然后查看证书有效期
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep 'Not'
证书有效期延长了。
4.重新初始化admin.conf等文件
kubeadm init phase kubeconfig all --config kubeadm.yaml
5.清除原有配置文件
rm -rf HOME/.kubemkdir -p HOME/.kubesudo cp -i /etc/kubernetes/admin.conf HOME/.kube/configsudo chown (id -u):(id -g) HOME/.kube/config
6.完成后重启kube-apiserver,kube-controller,kube-scheduler,etcd这4个容器
kubectl delete -n kube-system pod etcd-future kube-apiserver-future kube-controller-manager-future kube-scheduler-future
如果你的集群已经是GG状态,直接重启docker即可:
systemctl restart docker