早上登录测试环境发现k8s证书过期了
PS:简单,2条命令更新一下证书,没想到麻烦才刚刚开始
刷新证书
# 重新刷新证书
kubeadm certs renew all
# 查看证书过期时间
kubeadm certs check-expiration
更新了不好使,分析报错
证书更新了,执行kubectl命令发现不能执行,查看kubelet,发现kubelet没有正常启动,重启发现也不好使
Systemctl status kubelet
没有可用信息,查看具体报错
journalctl -xu kubelet
发现了问题
Error: failed to run Kubelet: unable to load bootstrap kubeconfig: stat /etc/kubernetes/bootstrap-kubelet.conf: no such file or directory
缺少bootstrap-kubelet.conf文件,感觉还是证书更新的有问题
那就继续,既然更新证书不好使,那就重新生成
备份一下原有ca证书和配置文件
mkdir /etc/kubernetes/pkibackup
cd /etc/kubernetes/pki
mv {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} ../pkibackup
# 生成证书
kubeadm init --apiserver-advertise-address={master节点IP} phase certs all
#例
kubeadm init --apiserver-advertise-address=192.168.0.183 phase certs all
# 清理配置文件
mkdir /etc/kubernetes/k8sconfbackup
mv {admin.conf,controller-manager.conf,kubelet.conf,scheduler.conf} k8sconfbackup/
# 生成配置文件
kubeadm init --apiserver-advertise-address={master节点IP} phase kubeconfig all
# 例
kubeadm init --apiserver-advertise-address=192.168.0.183 phase kubeconfig all
执行完成后重启kubelet
systemctl restart kubelet
到了这发现,kubelet可以正常启动,证书也重新生成,但是node节点发现显示No Ready
原因是ca证书和配置文件没有更新过去导致
那就拷贝一下
拷贝ca.crt 和kubelet.conf配置文件到node节点,观察是否正常
拷贝后发现节点还是异常,在这里没有细究,直接执行重新纳管节点
node节点重新绑定节点
登录master节点
# 生成纳管节点命令,记录此命令,后面会在node节点上执行
kubeadm token create --print-join-command
登录node节点
# 重置节点
kubeadm reset
# 对接master,执行上面记录的命令
kubeadm join 192.168.0.183:6443 --token 804ljn.mdw*****m5xr7 --discovery-token-ca-cert-hash sha256:dfe6a54******************48a6ee3134c085529335012ea2f39895261
执行完成后,登录master节点,kubectl get node查看已经是正常状态
到这里证书过期引发的问题已经完全解决了