K8s master和node节点证书更新

几年前搭建好的虚拟机,今年再使用发现证书过期,master和work node节点启动systemctl restart kubelet后,通过journalctl -u kubelet日志查看报证书过期,网上查了很多信息,搞掂了master节点,但node节点一直不知道怎么玩,不断尝试终于拉起来了。

查看kubelet日志
journalctl -u kubelet

一、master节点==============================
1、master节点状态显示restart-auto,执行上面kubelet日志检查发现证书过期,所以需要生成新证书和密钥,下面是使用解决方式:

2、查看各个组件是否过期
kubeadm certs check-expiration

3、对过期证书进行备份(/etc/kubernetes/*conf和pki下面key密钥和证书crt结尾),并删除旧的证书 cp -ap /etc/kubernetes /etc/kubernetes20250629bak
重新生成续期的证书
kubeadm certs renew all
kubeadm alpha certs renew all ======1.15之前版本子命令使用方法,因为我是1.22版本,所以执行上面这条命令

4、就可以执行该命令继续检查证书过期时间是否延长
(1)方法一:kubeadm certs check-expiration
(2)方法二(这里只是单独某个证书查看,因为上面是很多组件显示出来,所以使用方法一):通过证书文件,确认单个证书到期时间,通过openssl方法:openssl x509 -text -noout -in /etc/kubernetes/pki/apiserver.crt

5、根据显示的这一行表示过期时间(现在北京时间2025-7-5):Not After : Dec 13 01:32:02 2023 GMT

6、备份旧的配置文件
mkdir -p /tmp/20250703;mv /etc/kubernetes/*.conf /tmp/20250703

7、重新生成新的配置文件(应该是根据/etc/kubernetes/pki下面的crt key文件生成conf文件的意思)
kubeadm init phase kubeconfig all

8、重启K8s

systemctl restart kubelet

9、将新生成的 admin.conf 文件拷贝,替换 ~/.kube 目录下的 config 文件。(这一步主要是kubectl客户端使用各种命令通过api-server查信息,否则连kubectl get nodes都报错)
cp /etc/kubernetes/admin.conf /root/.kube/config

10、查看K8s的状态(由之前auto变为running就表示正常了)
systemctl status kubelet

二、node节点==============================
image

1、work node的kubelet证书更新(从master节点/etc/kubernetes/pki/目录下的ca.crt、ca.key拷贝到node节点上,因node节点已有ca.crt,所以只拷贝ca.key)
master节点上执行:scp -rp /etc/kubernetes/pki/ca.key root@192.168.123.152:/etc/kubernetes/pki
输入密码,就可以正常传输过去(小心防火墙之类限制)
2、备份旧的配置文件
mkdir -p /tmp/20250703;mv /etc/kubernetes/*.conf /tmp/20250703

3、重新生成新的kubelet配置文件(应该是根据/etc/kubernetes/pki下面的crt key文件生成conf文件的意思)
kubeadm init phase kubeconfig kubelet
执行之后/etc/kubernetes目录下就会生成新的kubelet.conf文件

4、因为生成 kubelet.conf里面api-server 6443的ip是本机node节点ip是错误的,需要将IP改成master节点的,否则node节点的kubelet 状态信息无法传给master的api-server组件
vi /etc/kubernetes/kubelet.conf

5、重启node节点的kubelet使之通知master节点api-server,并将node节点从notReady变为Ready,node节点执行下面命令,
systemctl restart kubelet
检查kubelet状态是否为running
systemctl status kubelet

===============解决node节点kubectl查看客户端无法查询问题
重启之后,在master节点执行systemctl get nodes发现是没问题,但是2个node节点执行该命令报错
6、因为master节点kubectl客户端/root/.kube已经完成了最新,所以如果想在node节点也使用kubectl查信息,可以从主节点拷贝过来给两个node节点,即可使用
master节点上执行:
scp -rp /root/.kube root@192.168.123.151:/root
scp -rp /root/.kube root@192.168.123.152:/root
5步骤的两个node节点都重启后,检查都为Raady,终于将3个节点都恢复成Ready了
image

posted @ 2025-07-05 23:19  Anivia10086  阅读(348)  评论(0)    收藏  举报