kubeadm续期Kubernetes集群证书
使用 kubeadm 续期 Kubernetes 集群证书(适用于默认一年有效期的证书)
参考文档: Kubernetes 官方文档 - kubeadm 证书管理
适用场景:通过 kubeadm 部署的 Kubernetes 集群,证书即将或已经过期(默认有效期为 1 年)。
步骤 1:检查证书有效期
在控制平面节点上执行以下命令,查看当前所有证书的过期时间:
kubeadm certs check-expiration
该命令会列出 /etc/kubernetes/pki/ 目录下所有关键证书及其到期时间。
步骤 2:续期所有证书
如果发现证书即将过期(或已过期),可一次性续期所有证书:
kubeadm certs renew all
✅ 此命令会自动更新包括 API Server、etcd、controller-manager、scheduler 等在内的所有控制平面组件证书。
步骤 3:更新 kubeconfig 文件(管理员配置)
续期后需同步更新本地 kubectl 使用的管理员配置文件:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
这确保 kubectl 使用的是包含新证书的新配置。
步骤 4:重启控制平面静态 Pod(触发证书加载)
由于控制平面组件(如 apiserver、etcd 等)以静态 Pod 方式运行,它们不会自动重新加载新证书。需临时移除其 Pod manifest 文件,等待 kubelet 停止对应容器,再恢复文件以触发重建:
# 暂时移除静态 Pod 清单
sudo mv /etc/kubernetes/manifests/etcd.yaml /tmp/
sudo mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
sudo mv /etc/kubernetes/manifests/kube-controller-manager.yaml /tmp/
sudo mv /etc/kubernetes/manifests/kube-scheduler.yaml /tmp/
# 等待约 20 秒,确保 Pod 完全终止
sleep 20
# 恢复清单文件,触发 kubelet 重建 Pod
sudo mv /tmp/etcd.yaml /etc/kubernetes/manifests/
sudo mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/
sudo mv /tmp/kube-controller-manager.yaml /etc/kubernetes/manifests/
sudo mv /tmp/kube-scheduler.yaml /etc/kubernetes/manifests/
⏱️ 实际等待时间可根据节点负载调整,可通过 crictl ps 或 docker ps 观察容器是否已停止。
验证
- 再次运行
kubeadm certs check-expiration,确认新证书已生效。 - 执行
kubectl get nodes,确保集群通信正常。 - (可选)检查各组件日志,确认无 TLS 相关错误。
💡 提示
从 Kubernetes v1.19 起,kubeadm 默认生成的 CA 证书有效期为 10 年,但其他组件证书仍为 1 年。建议定期监控证书状态,或使用自动化工具(如 cert-manager 或自定义脚本)实现自动续期。
如需进一步自动化此流程,也可编写脚本或结合 cron 定期检查与续期。

浙公网安备 33010602011771号