1. 课程概述:集群升级背景、Scheduler 调度器角色、证书轮换必要性、节点排空定义与目标

1.1 集群升级背景

Kubernetes 社区以约每 3 个月发布一个次要版本的节奏持续演进。生产集群通常需要跨越多个次要版本进行升级,以获取安全补丁、新特性及性能优化。在升级过程中,控制平面组件(如 kube-apiserver、kube-controller-manager、kube-scheduler)的证书轮换是保障集群安全与通信可靠性的关键环节。

升级场景典型特征:
  • 控制平面组件使用 TLS 证书进行双向认证与通信加密。
  • 证书具有有效期(通常为 1 年),升级窗口常与证书到期窗口重叠。
  • kube-scheduler 作为核心调度组件,其证书轮换失败将导致 Pod 调度停滞。

1.2 Scheduler 调度器角色

kube-scheduler 是 Kubernetes 控制平面的核心组件之一,负责将待调度的 Pod 绑定到合适的 Node 上。其工作流程可概括为:

阶段 说明 关键操作
过滤 筛选出满足 Pod 资源请求、亲和性、污点容忍等条件的 Node 集合 读取 Node 状态、资源余量、标签
打分 对候选 Node 按优先级策略进行评分 执行默认/自定义打分插件
绑定 将 Pod 与最优 Node 的绑定关系写入 API Server 发送 Binding 请求至 kube-apiserver

调度器通过 kubeconfig 文件 或 命令行参数 加载客户端证书,用于与 kube-apiserver 通信。证书轮换期间,调度器必须保持对 API Server 的认证能力,否则调度链路将中断。

kube-scheduler 在集群中的位置与通信链路 kube-apiserver kube-scheduler Node-1 Node-2 Node-N 证书轮换影响 调度器 ↔ API Server 认证

1.3 证书轮换必要性

证书轮换是 Kubernetes 集群安全运维的基础操作。调度器证书轮换的必要性体现在以下方面:

  • 安全合规: 证书过期后,调度器无法向 API Server 证明身份,导致认证失败、调度请求被拒绝。
  • 通信加密: 轮换证书可更新加密密钥,降低私钥泄露带来的中间人攻击风险。
  • 集群生命周期: 证书有效期通常为 1 年,升级窗口是集中处理证书轮换的最佳时机。
  • 避免级联故障: 调度器证书失效会阻止新 Pod 调度,影响应用扩缩容、滚动更新等日常运维。
⚠️ 常见风险: 证书轮换期间,如果调度器 Pod 被重启或重新加载配置,而新证书尚未就绪,可能导致调度器短暂不可用。节点排空操作可提前将调度器 Pod 迁移至健康节点,减少轮换窗口内的服务中断。

1.4 节点排空定义与目标

节点排空(Node Drain) 是指将指定节点上的所有 Pod 安全地迁移到集群中其他可用节点的操作。在调度器证书轮换场景中,节点排空的目标如下:

目标 说明 实现方式
Pod 安全迁移 将调度器 Pod 从待轮换节点驱逐,确保调度服务不中断 kubectl drain 命令 + PodDisruptionBudget
证书文件清理 排空后节点可安全卸载旧证书、部署新证书 节点进入 SchedulingDisabled 状态
最小化影响 控制排空顺序与并发度,避免集群调度能力骤降 逐节点排空 + 优雅终止宽限期
回滚能力 排空操作可逆,允许在证书轮换失败时快速恢复 kubectl uncordon 恢复节点调度
节点排空在证书轮换中的流程 节点运行中 排空进行中 SchedulingDisabled 排空操作关键步骤 1. 执行 kubectl drain <node> --ignore-daemonsets --delete-emptydir-data 2. 等待 Pod 优雅终止,确认调度器 Pod 已迁移至其他节点 3. 完成证书轮换后,执行 kubectl uncordon <node> 恢复调度
💡 最佳实践: 在证书轮换前,先对非关键节点进行排空演练,验证 PodDisruptionBudget 配置是否合理。调度器 Pod 通常应设置 minAvailable: 1 或 maxUnavailable: 0,确保排空期间始终有至少一个调度器副本可用。