k8s集群证书过期怎么办

发布时间 2024-01-10 15:12:32作者: adai_kfl

记录一次集群更新证书过程,因为集群证书已经更新了,以下只记录操作过程了。
参考:https://blog.csdn.net/Harry_z666/article/details/128015175

1、集群情况

  1. 版本:v1.23.6
  2. 部署方式:kubeadm部署

由于使用kubeadm部署,证书有效期为一年,到期后证书失效。

2、master更新集群证书

# 1、master 查看集群过期时间
[root@k8s-master01 ~]# kubeadm certs check-expiration

# 2、查看master节点上的kubelet证书列表和过期时间
[root@k8s-master01 ~]# ls /var/lib/kubelet/pki/ -lh
total 16K
-rw------- 1 root root 2.8K Aug 15  2022 kubelet-client-2022-08-15-23-37-10.pem
-rw------- 1 root root 1.1K May 22  2023 kubelet-client-2023-05-22-21-22-17.pem
lrwxrwxrwx 1 root root   59 May 22  2023 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2023-05-22-21-22-17.pem
-rw-r--r-- 1 root root 2.3K Aug 15  2022 kubelet.crt
-rw------- 1 root root 1.7K Aug 15  2022 kubelet.key

[root@k8s-master01 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not
            Not Before: May 22 13:17:17 2023 GMT
            Not After : May 21 13:17:17 2024 GMT

# 3、备份配置文件和证书文件
[root@k8s-master01 ~]# mkdir /tmp/kubernets_backup/config -p
[root@k8s-master01 ~]# cp -r /etc/kubernetes/ /tmp/kubernets_backup/config/
[root@k8s-master01 ~]# mkdir /tmp/kubernets_backup/pem
[root@k8s-master01 ~]# cp -r /var/lib/kubelet/pki/ /tmp/kubernets_backup/pem/

# 4、更新集群证书
[root@k8s-master01 kubernets_backup]# kubeadm certs renew all

# 5、再次查看过期时间
[root@k8s-master01 ~]# kubeadm certs check-expiration
# 查看证书是否已更新
[root@k8s-master01 ~]# ls /etc/kubernetes/pki/ -lh

3、master更新配置文件

由于前面已经备份过了,直接删除当前配置文件后重新生成

# 1、删除配置文件
[root@k8s-master01 ~]# rm -f /etc/kubernetes/*.conf
# 2、生成新的配置文件
[root@k8s-master01 ~]# kubeadm init --kubernetes-version=v1.23.6 phase kubeconfig all

# 3、替换管理员kubeconfig配置文件
[root@k8s-master01 ~]# cp /etc/kubernetes/admin.conf ~/.kube/config
cp: overwrite ‘/root/.kube/config’? y
# 4、重启kube-scheduler
[root@k8s-master01 ~]# docker rm -f $(docker ps -a | grep scheduler | awk '{print $1}')

# 5、查看kube-scheduler状态
[root@k8s-master01 ~]# kubectl get pods -n kube-system |grep scheduler
kube-scheduler-k8s-master01                1/1     Running   12             512d

4、更新master上的kubelet证书

# 1、通过过程2.5,更新了k8s证书,是不会更新了kubelet.conf的证书的。需要重启kubelet重新生成。因为已经重新生成了kubelet.conf,所以需要重启kubelet。
[root@k8s-master01 ~]# systemctl restart kubelet.service

# 2、重启后查看证书签名请求
[root@k8s-master01 ~]# kubectl get csr

# 3、请求通过
[root@k8s-master01 ~]# kubectl certificate approve <NAME>

# 4、查看证书过期时间
[root@k8s-master01 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not

5、更新node节点上的kubelet证书

# 1、查看node上的kubelet证书,主要查看kubelet-client-current.pem的时间戳,这里还是旧的证书
[root@k8s-node01 ~]# ls -lh /var/lib/kubelet/pki/

# 2、查看证书过期时间
[root@k8s-node01 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not

# 3、在master节点生成node节点需要的配置文件
[root@k8s-master01 ~]# mkdir /tmp/kubernets_backup/worker -p
[root@k8s-master01 ~]# cd /tmp/kubernets_backup/worker/
[root@k8s-master01 worker]# kubeadm init --kubernetes-version=v1.23.6 phase kubeconfig kubelet --node-name k8s-node01 --kubeconfig-dir /tmp/kubernets_backup/worker/

# 4、备份node节点的配置文件
[root@k8s-node01 ~]# mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.bak

# 5、替换配置文件
[root@k8s-master01 worker]# scp kubelet.conf root@k8s-node01:/etc/kubernetes/

# 6、重启kubelet
[root@k8s-node01 ~]# systemctl restart kubelet.service

# 7、在master上进行证书认证
[root@k8s-master01 ~]# kubectl get csr
[root@k8s-master01 ~]# kubectl certificate approve <NAME>