1.主节点使用kubeadm查看证书有效期
[root@master231 ~]# kubeadm certs check-expiration
证书续期,续期时间为1年。可以续期10年(因为kubeadm部署的ca证书为10年),但每年都必须续期。
1. 服务端节点证书升级
[root@master231 ~]# kubeadm certs renew all
......
Done renewing certificates. You must restart the kube-apiserver, kube-controller-manager, kube-scheduler and etcd, so that they can use the new certificates.
2. 服务端节点证书升级
2.1 worker节点查看客户端证书文件
[root@worker232 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
05:c6:fd:00:a7:7a:9e:44:b2:d2:ae:7e:54:0c:6d:b5
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=kubernetes
Validity
Not Before: Mar 8 09:43:35 2024 GMT
Not After : Mar 8 09:43:35 2025 GMT2.2 master节点修改静态Pod的kube-controller-manager资源清单
[root@master231 ~]# vim /etc/kubernetes/manifests/kube-controller-manager.yaml
...
spec:
containers:
- command:
- kube-controller-manager
...
# 所签名证书的有效期限。每个 CSR 可以通过设置 spec.expirationSeconds 来请求更短的证书。
- --cluster-signing-duration=87600h0m0s
# 启用cm自动签发CSR证书,可以不配置,默认就是启用的,但是建议配置上!害怕未来版本发生变化!
- --feature-gates=RotateKubeletServerCertificate=true2.3 master节点验证kube-controller-manager是否启动成功
[root@master231 ~]# kubectl get pods -n kube-system kube-controller-manager-master231
NAME READY STATUS RESTARTS AGE
kube-controller-manager-master231 1/1 Running 0 27s2.4 worker节点要求kubelet的配置文件中支持证书滚动,默认是启用的,无需配置。
[root@worker232 ~]# vim /var/lib/kubelet/config.yaml
...
rotateCertificates: true2.5 worker节点修改节点的时间并重启kubelet
2.5.1 worker节点查看授权文件
[root@worker232 ~]# ll /var/lib/kubelet/pki/
total 12
-rw------- 1 root root 1114 Mar 8 17:47 kubelet-client-2024-03-08-17-47-00.pem
lrwxrwxrwx 1 root root 59 Mar 8 17:47 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2024-03-08-17-47-00.pem
-rw-r--r-- 1 root root 2258 Mar 8 17:47 kubelet.crt
-rw------- 1 root root 1679 Mar 8 17:47 kubelet.key2.5.1 worker节点修改时间为证书到期前一天
[root@worker232 ~]# date -s "2025-03-07 10:10:10" # 这个时间修改不建议直接超过证书的有效期,建议修改为证书有效期的前一天!2.5.2 worker节点重启kubelet服务
systemctl restart kubelet2.5.3 worker节点再次查看授权文件
[root@worker232 ~]# ll /var/lib/kubelet/pki/
total 16
-rw------- 1 root root 1114 Mar 8 2024 kubelet-client-2024-03-08-17-47-00.pem
-rw------- 1 root root 1114 Mar 7 10:10 kubelet-client-2025-03-07-10-10-23.pem
lrwxrwxrwx 1 root root 59 Mar 7 10:10 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2025-03-07-10-10-23.pem
-rw-r--r-- 1 root root 2258 Mar 8 2024 kubelet.crt
-rw------- 1 root root 1679 Mar 8 2024 kubelet.key2.5.4 master节点查看证书签发请求
[root@master231 ~]# kubectl get csr
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
csr-wnwbb 37s kubernetes.io/kube-apiserver-client-kubelet system:node:worker232 <none> Approved,Issued2.5.5 worker节点查看证书有效期
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
0a:6b:86:5e:58:a7:f3:8e:3e:3e:3e:62:2d:36:71:a6
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=kubernetes
Validity
Not Before: Mar 18 09:05:52 2024 GMT
Not After : Mar 6 09:40:09 2034 GMT # 很明显,证书10年后才会过期!
Subject: O=system:nodes, CN=system:node:worker2322.5.6 修改完成后,记得将集群的时间恢复正常~
温馨提示:
生产环境中对于worker证书升级应该注意的事项:
- 对证书有效期有效期进行监控,很多开源组件都支持,比如zabbix,prometheus等。
- 在重启kubelet节点时,应该注意滚动更新,不要批量重启,避免Pod大面积无法访问的情况,从而造成业务的损失,甚至生产故障;
- 尽量在业务的低谷期做升级操作,影响最小;
评论区