一个客户线上环境没运维没留意证书日期,导致过期后整个环境异常。挑灯夜战,错误依旧。一缕晨曦,柳暗花明。
master1 执行:
# 移动到/tmp备份
/etc/kubernetes/ssl
{apiserver.crt,apiserver-etcd-client.key,apiserver-kubelet-client.crt,front-proxy-ca.crt,front-proxy-client.crt,front-proxy-client.key,front-proxy-ca.key,apiserver-kubelet-client.key,apiserver.key,apiserver-etcd-client.crt} /tmp
# 新生成证书,注意:参考文档1中用的是kubeadm alpha certs renew,这个不需要把源文件删除,目前用的是下面指令,renew方式未实践
# 备忘:采用kubeadm init phase certs 执行,是查看了kubesphere中安装脚本的执行参数,参考文档2里面提到保持安装时候kubeadm init的参数,之前折腾很久没恢复主要和参数有关
kubeadm init phase certs all --config /etc/kubernetes/kubeadm-config.yaml
# 新生成配置
cd /etc/kubernetes/
mv {admin.conf,controller-manager.conf,kubelet.conf,scheduler.conf} /tmp
kubeadm init phase kubeconfig all --config /etc/kubernetes/kubeadm-config.yaml
# 放置默认配置文件,否则kubectl执行会异常
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# 重启机器
init 6
如果是多master,在master2, master3执行:
# 复制master1生成的证书
scp -r master1IP:/etc/kubernetes/ssl/* /etc/kubernetes/ssl/
# 新生成配置
cd /etc/kubernetes/
mv {admin.conf,controller-manager.conf,kubelet.conf,scheduler.conf} /tmp
kubeadm init phase kubeconfig all --config /etc/kubernetes/kubeadm-config.yaml
# 重启机器
init 6
其它:
# 证书查看到期时间
openssl x509 -in /etc/kubernetes/ssl/apiserver.crt -text -noout |grep Not
参考资料:
文档1:https://www.jianshu.com/p/3e9e59e738be
文档2:https://platformengineer.com/fix-kubernetes-bootstrap-client-certificate-expired-error/