K8s 集群证书管理:kubeadm 证书自动续期配置,以及手动替换过期证书的操作步骤
·
Kubernetes 集群证书管理:kubeadm 证书自动续期与手动替换指南
一、证书自动续期配置
kubeadm 从 v1.15 开始支持自动证书续期,通过以下步骤启用:
- 验证当前证书状态
kubeadm certs check-expiration
输出示例:
CERTIFICATE EXPIRES RESIDUAL TIME
admin.conf May 30, 2025 03:23 UTC 364d
apiserver May 30, 2025 03:23 UTC 364d
- 启用自动续期
sudo kubeadm init phase kubeconfig all --apiserver-advertise-address <IP> \
&& sudo systemctl restart kubelet
- 配置控制器管理器
编辑/etc/kubernetes/manifests/kube-controller-manager.yaml:
spec:
containers:
- command:
- --cluster-signing-duration=87600h # 10年有效期
- --experimental-cluster-signing-duration=87600h
- 验证续期机制
journalctl -u kubelet | grep "certificate rotation"
二、手动替换过期证书步骤
当证书已过期(状态码 x509: certificate has expired or is not yet valid)时:
- 备份现有证书
sudo cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak
- 生成新证书
sudo kubeadm certs renew all --config /etc/kubernetes/kubeadm-config.yaml
- 更新 kubeconfig
sudo kubeadm init phase kubeconfig all \
&& cp /etc/kubernetes/admin.conf $HOME/.kube/config \
&& chown $(id -u):$(id -g) $HOME/.kube/config
- 重启核心组件
sudo docker ps | grep "kube-apiserver\|kube-controller-manager\|kube-scheduler" | awk '{print $1}' | xargs sudo docker restart
sudo systemctl restart kubelet
- 验证更新
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates
kubectl get nodes # 检查集群通信
三、关键注意事项
- 时间同步要求
所有节点需保持时间同步:
sudo timedatectl set-ntp true
-
证书生命周期
$$ T_{\text{valid}} = T_{\text{issue}} + 365 \times 24 \times 3600 $$ 其中 $T_{\text{issue}}$ 为签发时间 -
故障排查命令
- 检查 API 服务器证书链:
openssl verify -CAfile /etc/kubernetes/pki/ca.crt /etc/kubernetes/pki/apiserver.crt
- 检查 kubelet 状态:
journalctl -u kubelet -n 100 --no-pager | grep -i cert
最佳实践建议:
- 在生产环境中启用自动续期并设置监控告警
- 每 6 个月执行
kubeadm certs check-expiration主动检查- 使用外部 CA 时需同步更新 CA 根证书
更多推荐


所有评论(0)