K8S 证书过期后,kubeadm 重新生成证书

前言

K8S 各个组件需要与 api-server 进行通信,通信使用的证书都存放在 /etc/kubernetes/pki 路径下,kubeadm 生成的证书默认有效为 1 年,因此需要定时更新证书,否则证书到期会导致整个集群不可用。

本篇文章主要介绍如何通过 kubeadm 重新生成证书。
 

一. 检查证书是否过期

1. kubeadm 命令查看

 kubeadm alpha certs check-expiration

  • 注:该命令仅在 v.15 之后的版本可用。

2 openssl 命令查看

版本过低无法使用 kubeadm 命令时,可以通过 openssl 查看对应证书是否过期

$ openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
            Not Before: May  7 10:25:59 2020 GMT
            Not After : May  7 10:26:00 2021 GMT
 

二. 自动更新证书

Kubenetes 在升级控制面板相关组件时会主动更新证书,因此如果保证 Kubernetes 能够定期(一年以内)升级的话,证书会自动更新。

三. 手动更新证书

1. 证书备份

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

2. 删除旧的证书
将 /etc/kubernetes/pki 下要重新生成的证书删除

sudo rm -rf /etc/kubernetes/pki/apiserver.key

3. 重新生成证书
主要通过 kubeadm alpha certs renew 命令生成
 

重新生成所有证书

kubeadm alpha certs renew all

重新生成某个组件的证书

kubeadm alpha certs renew apiserver

4. 重新生成配置文件
备份旧的配置

mv /etc/kubernetes/*.conf /tmp/
 

生成新的配置

主要通过 kubeadm init phase kubeconfig

  • 重新生成所有配置
kubeadm init phase kubeconfig all
  • 重新生成单个配置文件

// 重新生成 admin 配置文件
kubeadm init phase kubeconfig admin
// 重新生成 kubelet 配置文件
kubeadm init phase kubeconfig kubelet
 

5. 后续操作
完成证书和配置文件的更新后,需要进行一系列后续操作保证更新生效,主要包括重启 kubelet、更新管理配置。

重启 kubelet
> systemctl restart kubelet

更新 admin 配置
将新生成的 admin.conf 文件拷贝,替换 ~/.kube 目录下的 config 文件。

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

完成以上操作后整个集群就可以正常通信了,操作过程中主要就是 kubeadm alpha certs renew 命令和 kube init phase kubeconfig,

猜你喜欢

转载自blog.csdn.net/zhangchang3/article/details/131841990