4. 证书轮换触发场景:集群升级、证书过期、CA更换、安全合规要求
在Kubernetes集群生命周期管理中,证书轮换并非周期性维护任务,而是由明确的触发事件驱动。理解这些触发场景,是制定轮换策略与Pod调度协同方案的前提。本章深入分析四种核心触发场景及其对集群运行的影响。
4.1 触发场景总览
证书轮换的触发场景可归纳为计划性触发与应急性触发两类。下表对比了各场景的关键属性:
| 触发场景 | 触发类型 | 可预测性 | 影响范围 | 典型窗口期 |
|---|---|---|---|---|
| 集群升级 | 计划性 | 高 | 全集群 | 升级窗口内 |
| 证书过期 | 应急性/计划性 | 中(可监控) | 按证书类型 | 过期前30天预警 |
| CA更换 | 计划性 | 高 | 全集群 | 数小时至数天 |
| 安全合规要求 | 计划性/应急性 | 中 | 按合规范围 | 合规审计周期 |
关键认知: 集群升级是唯一一个“强制伴随”证书轮换的场景——kubeadm等工具在升级控制平面时,会自动触发证书续期。其他场景则需要运维人员主动介入或通过自动化工具触发。
4.2 场景一:集群升级
集群升级是证书轮换最频繁的触发场景。Kubernetes控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)以及kubelet使用的证书,在升级过程中可能因以下原因需要轮换:
- 证书有效期重置: kubeadm管理的集群,升级控制平面时会自动将证书有效期延长至升级后的时间点。
- 签名算法升级: 从旧版集群升级时,可能要求从SHA-1升级到SHA-256签名算法,必须重新签发证书。
- 组件版本变更: 新版本kube-apiserver可能要求证书包含特定的扩展密钥用法(Extended Key Usage)。
- 节点标识更新: 升级过程中节点IP或DNS名称变更,需要重新签发kubelet证书。
升级轮换最佳实践: 在升级前使用
kubeadm certs check-expiration 检查证书状态,升级后立即执行 kubeadm certs renew all 确保所有证书处于最新有效期。
4.3 场景二:证书过期
证书过期是最常见的应急触发场景。Kubernetes集群中各类证书的默认有效期差异显著:
| 证书类型 | 默认有效期 | 过期影响 | 监控指标 |
|---|---|---|---|
| CA证书 | 10年 | 全集群信任链断裂 | NotAfter时间戳 |
| apiserver证书 | 1年 | kubectl/组件无法连接 | API Server健康检查 |
| kubelet证书 | 1年 | 节点状态变为NotReady | Node Lease续期失败 |
| etcd证书 | 1年 | 集群数据面不可用 | etcd成员健康状态 |
| ServiceAccount令牌 | 无(静态) | Pod无法认证 | TokenReview失败 |
高危预警: 证书过期不会触发Kubernetes自动恢复机制。一旦apiserver证书过期,所有管理操作(包括证书轮换本身)都将无法执行。务必在过期前完成轮换,并设置Prometheus告警规则监控证书剩余有效期。
4.4 场景三:CA更换
CA(证书颁发机构)更换是影响最大的证书轮换场景,通常发生在以下情况:
- CA私钥泄露: 必须立即更换CA并重新签发所有下游证书。
- CA证书过期: CA证书本身过期后,所有由其签发的证书将不再被信任。
- 合规迁移: 从自签名CA迁移到企业CA或公共CA。
- 算法升级: 从RSA 2048升级到ECDSA P-384等更强算法。
CA更换需要执行“信任迁移”策略,确保新旧CA证书在过渡期内同时被信任:
# 1. 生成新CA证书和密钥
kubeadm init phase certs ca --config new-ca-config.yaml
# 2. 将新CA证书添加到集群信任链
kubectl create configmap -n kube-system kubelet-ca-bundle \
--from-file=ca.crt=/etc/kubernetes/pki/ca.crt \
--from-file=new-ca.crt=/etc/kubernetes/pki/new-ca.crt
# 3. 逐步重新签发组件证书(使用新CA)
kubeadm certs renew all --config new-ca-config.yaml
# 4. 重启控制平面组件加载新证书
kubectl delete pod -n kube-system -l component=kube-apiserver
kubectl delete pod -n kube-system -l component=kube-controller-manager
kubectl delete pod -n kube-system -l component=kube-scheduler
信任迁移窗口: 建议保留旧CA证书至少一个证书轮换周期(通常30天),确保所有节点和客户端完成缓存更新。使用
--root-ca-file 参数可以指定多个CA证书。
4.5 场景四:安全合规要求
安全合规要求驱动的证书轮换通常具有强制性时间窗口,常见于以下标准:
| 合规标准 | 证书要求 | 轮换频率 | 审计证据 |
|---|---|---|---|
| PCI DSS 4.0 | 证书有效期≤398天 | 每年至少1次 | 证书签发日志 |
| SOC 2 | 密钥管理策略 | 按策略定义 | 轮换执行记录 |
| ISO 27001 | 加密控制A.10 | 定期评审 | 证书清单审计 |
| FedRAMP | FIPS 140-2验证 | 按系统安全计划 | 证书合规报告 |
| GDPR | 传输加密 | 按风险评估 | 加密策略文档 |
合规场景下的证书轮换需要与Pod调度协同,确保在轮换期间服务不中断:
- 分批轮换: 按节点池或可用区逐步执行,每次只轮换20%-30%的节点。
- PodDisruptionBudget: 为关键工作负载设置PDB,防止轮换期间Pod被全部驱逐。
- 审计日志: 记录每次轮换的时间、操作人、证书指纹,满足合规审计要求。
- 自动化验证: 轮换后自动执行TLS握手测试,确保证书链完整。
4.6 触发场景与Pod调度协同关系
下图展示了四种触发场景如何影响Pod调度决策,以及证书轮换与Pod调度的协同流程:
4.7 场景优先级与响应策略
不同触发场景需要不同的响应优先级和协同策略:
| 优先级 | 触发场景 | 响应时间要求 | Pod调度协同策略 |
|---|---|---|---|
| P0 | CA私钥泄露 | 立即(<15分钟) | 全集群Pod驱逐重建,使用新CA签发 |
| P1 | 证书过期(已发生) | 1小时内 | 节点隔离→证书轮换→Pod重新调度 |
| P2 | 证书即将过期(<7天) | 24小时内 | 分批轮换,PDB保护关键Pod |
| P3 | 集群升级 | 按升级窗口 | 节点池滚动升级,证书自动续期 |
| P4 | 安全合规要求 | 按合规周期 | 计划性轮换,审计日志记录 |
关键提醒: 证书轮换与Pod调度协同的核心原则是“先建后删”——确保新证书生效且Pod在新节点上正常运行后,再回收旧证书和旧Pod。任何违反此原则的操作都可能导致服务中断。