跳至主要內容

使用 kubeadm 手动更新证书

Clay云原生Kubernetes约 313 字大约 1 分钟

使用 kubeadm 手动更新证书

背景:K8S 各个组件需要与 api-server 进行通信,通信使用的证书都存放在 /etc/kubernetes/pki 路径下,kubeadm 生成的证书默认有效为 1 年,因此需要定时更新证书,否则证书到期会导致整个集群不可用。 自动更新证书,Kubenetes 在升级控制面板相关组件时会主动更新证书,因此如果保证 Kubernetes 能够定期(一年以内)升级的话,证书会自动更新。

环境说明:k8s 1.18.10

以下步骤,在所有 master 节点执行

具体操作步骤 1)检查证书是否过期,以下两个命令均可

kubeadm alpha certs check-expiration
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '

2)证书、配置文件等备份

cp -rp /etc/kubernetes /etc/kubernetes.bak

3)重新生成证书

kubeadm alpha certs renew all

4)重新生成配置文件

rm -f /etc/kubernetes/*.conf
kubeadm init phase kubeconfig all

5)重启 kubelet、apiserver、scheduler、controller-manager、etcd

systemctl restart kubelet
docker ps | egrep "k8s_kube-apiserver|k8s_kube-scheduler|k8s_kube-controller-manager|k8s_etcd" | awk '{print $1}' | xargs docker restart

6)更新 admin 配置

cp /etc/kubernetes/admin.conf ~/.kube/config

7)检查证书过期时间

kubeadm alpha certs check-expiration

如果重新生成过程中有错误,就把旧文件删除