侧边栏壁纸
博主头像
逢尔Seyu 博主等级

星光不负赶路人,时光不负追梦人

  • 累计撰写 30 篇文章
  • 累计创建 20 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

kubernetes证书升级

逢尔Seyu
2024-03-18 / 0 评论 / 0 点赞 / 39 阅读 / 0 字

1.主节点使用kubeadm查看证书有效期

[root@master231 ~]# kubeadm certs check-expiration

F93BF9C3-D444-4147-97FD-2613140E4D18.jpg

证书续期,续期时间为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 GMT

2.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=true

2.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          27s

2.4 worker节点要求kubelet的配置文件中支持证书滚动,默认是启用的,无需配置。

[root@worker232 ~]# vim /var/lib/kubelet/config.yaml 
...
rotateCertificates: true

2.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.key

2.5.1 worker节点修改时间为证书到期前一天

[root@worker232 ~]# date -s "2025-03-07 10:10:10"  # 这个时间修改不建议直接超过证书的有效期,建议修改为证书有效期的前一天!

2.5.2 worker节点重启kubelet服务

systemctl restart kubelet

2.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.key

2.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,Issued

2.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:worker232

2.5.6 修改完成后,记得将集群的时间恢复正常~

温馨提示:

生产环境中对于worker证书升级应该注意的事项:

- 对证书有效期有效期进行监控,很多开源组件都支持,比如zabbix,prometheus等。

- 在重启kubelet节点时,应该注意滚动更新,不要批量重启,避免Pod大面积无法访问的情况,从而造成业务的损失,甚至生产故障;

- 尽量在业务的低谷期做升级操作,影响最小;

0

评论区