Kubernetes 证书过期灾难?四步紧急处理方案
在Kubernetes(K8s)运维中,证书管理往往是容易被忽视的关键环节。许多运维团队在集群搭建初期配置好证书后,便很少再去关注,直到某天集群突然不可用,才发现——证书过期了!
证书过期可能导致API Server拒绝连接、节点失联、Pod调度失败,甚至整个集群瘫痪。
本文将深入介绍K8s证书管理的相关细节,帮助你避免因证书问题导致的灾难性故障。
Kubernetes集群依赖多种证书进行安全通信,主要包括:
(1) CA证书(根证书)
用于签发其他证书,一旦CA证书过期,所有依赖它的证书都会失效。
默认有效期通常为10年,但许多团队忘记更新。
(2) API Server证书
控制平面通信的核心证书,过期会导致kubectl无法访问集群。
(3) etcd证书
如果etcd证书过期,K8s将无法读写数据,集群可能完全崩溃。
(4) kubelet客户端证书
每个节点的kubelet使用该证书与API Server通信,过期会导致节点失联。
(5) Service Account Token
虽然不是传统证书,但也有过期时间(默认1年),影响Pod与API Server的认证。
2. 证书过期的典型故障现象当K8s证书过期时,可能会出现以下问题:
故障现象
可能过期的证书
kubectl get nodes超时
API Server证书或kubeconfig
节点状态变为 NotReady
kubelet客户端证书
Pod调度失败,报x509错误
Service Account Token
etcd集群不可用
etcd证书
3. 如何检测证书是否即将过期?方法1:使用kubeadm检查(适用于kubeadm部署的集群)
输出示例:
方法2:手动检查单个证书
输出:
方法3:使用Prometheus监控(长期方案)
配置kube-cert-exporter或自定义脚本,结合告警系统(如Alertmanager)提前预警。
4. 证书更新处理方案(1) 使用kubeadm自动续期所有证书
(2) 重启控制平台组件
(3) 重启kubelet服务
(4) 检查容器状态、kubelet服务状态和message日志是否有报错等。
注:如果有多台Master主机,需要在每台机器上重复上面步骤。