K8s-certs-renew

记一次生产证书过期问题

环境信息:

Kubernetes 版本v1.18.6
KubeSphere 版本v3.1.0
一个host集群,下面三个menber集群(其中一个member集群过期失联)
member集群有三个master节点

执行kubectl get node提示如下错误:

1
kubesphere Unable to connect to the server: x509: certificate has expired or is not yet valid

且host集群查看member集群,发下改集群未就绪,且无法访问,直接通过ip可以进行访问。

更新证书

在所有master集群执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#确认是否过期
kubeadm alpha certs check-expiration
# 备份
mkdir pki230411
cp -rfa /etc/kubernetes/ pki230411/
ls pki230411/kubernetes/pki
#更新证书
kubeadm alpha certs renew all
#检查是否更新成功
kubeadm alpha certs check-expiration
#重启kube-apiserver、kube-controller-manager、kube-scheduler、etcd
sudo docker ps |grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd'|sudo xargs docker restart
#检查重启状态
docker ps |grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd'
#因为etcd时安装的单独节点,所有需要在所有etcd节点进行重启
systemctl status etcd #可以查看到是否需要执行systemctl daemon-reload
systemctl daemon-reload #有一台节点需要执行该命令才能重启(似乎只需要找到需要执行该命令的节点,执行该命令,不需要重启也可以)
systemctl restart etcd
systemctl status etcd
#备份kubectl连接证书,不然kubectl命令还是用的老的证书
cp .kube/config ~/pki230411/
#更新连接证书为新生成的证书
cp /etc/kubernetes/admin.conf ~/.kube/config
#当集群所有master更新结束执行该命令就可以成功返回节点信息了
kubectl get node

重新添加host集群的member集群

  1. 在kubeshpere查看原集群信息,备份

  2. 删除未就绪的member集群

  3. 重新添加member集群