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 psdocker ps 观察容器是否已停止。

验证

  • 再次运行 kubeadm certs check-expiration,确认新证书已生效。
  • 执行 kubectl get nodes,确保集群通信正常。
  • (可选)检查各组件日志,确认无 TLS 相关错误。

💡 提示

从 Kubernetes v1.19 起,kubeadm 默认生成的 CA 证书有效期为 10 年,但其他组件证书仍为 1 年。建议定期监控证书状态,或使用自动化工具(如 cert-manager 或自定义脚本)实现自动续期。

如需进一步自动化此流程,也可编写脚本或结合 cron 定期检查与续期。

posted @ 2026-01-12 08:39  怀恋小时候  阅读(12)  评论(0)    收藏  举报