4. 集群生命周期管理:节点上线、节点下线、版本升级、版本回滚的核心流程

集群生命周期管理是运维治理的核心环节,涵盖节点与集群版本两个维度的变更。节点上线/下线解决容量伸缩与故障隔离,版本升级/回滚解决功能迭代与风险兜底。以下从四个核心流程展开,并给出基于 CRI 校验的治理要点。

4.1 节点上线流程

节点上线指将一台新计算节点(或修复后的节点)安全加入集群,使其承载 Pod。流程分为前置校验、加入集群、后置验证三个阶段。

阶段 操作步骤 CRI 校验要点
前置校验
  • OS 版本、内核参数、网络连通性检查
  • 容器运行时(containerd / CRI-O)安装与配置
  • CRI 端点可达性测试(crictl info)
运行时版本 ≥ 集群最低要求;crictl ps 无异常
加入集群
  • kubelet 配置与启动
  • 节点证书签发与 CSR 自动批准
  • 节点状态变为 Ready
kubelet 与 CRI 握手成功;Pod Sandbox 创建正常
后置验证
  • 节点标签与污点设置
  • 测试 Pod 调度与运行
  • 监控指标(节点资源、运行时事件)接入
CRI 日志无 ErrImagePull 或 RunPodSandbox 失败
治理建议:节点上线应纳入变更审批流程,前置校验脚本需包含 CRI 运行时完整性校验(如 crictl images 检查基础镜像是否存在),避免因运行时缺失导致调度失败。

4.2 节点下线流程

节点下线用于缩容、硬件维护或节点退役。核心原则是先排空、再下线,确保工作负载平滑迁移。

  1. 节点封锁(kubectl cordon):标记节点为不可调度,阻止新 Pod 调度上来。
  2. Pod 驱逐(kubectl drain):逐出节点上所有 Pod(DaemonSet 除外),触发重新调度。
  3. CRI 运行时清理:停止容器、清理挂载卷、删除残留镜像。
  4. 节点移除(kubectl delete node):从集群 API Server 中删除节点对象。
  5. 物理/虚机关机:确认无残留进程后关闭实例。
风险提示:驱逐前必须确认 PodDisruptionBudget(PDB)允许驱逐,否则可能导致服务中断。CRI 层面需检查是否有 PodSandbox 残留,避免泄漏。

4.3 版本升级流程

集群版本升级遵循控制面优先、节点逐批的原则。以 Kubernetes 1.28 → 1.29 为例,核心流程如下:

步骤 操作对象 关键命令 / 校验
1. 前置检查 集群全局 kubectl version --short;检查 API 弃用清单;CRI 运行时兼容性矩阵
2. 升级控制面 Master 节点 kubeadm upgrade plan → kubeadm upgrade apply v1.29.0
3. 升级节点 kubelet Worker 节点 kubeadm upgrade node;重启 kubelet;crictl version 确认运行时版本
4. 升级 CRI 运行时 所有节点 containerd / CRI-O 二进制替换;systemctl restart containerd
5. 后置验证 集群全局 节点状态 Ready;核心组件健康;crictl pods 无异常
CRI 校验关键点:升级前必须确认新版本 CRI 运行时与 kubelet 的 API 版本兼容。例如 containerd 1.7+ 支持 CRI v1alpha2 和 v1,而 Kubernetes 1.29 已移除 v1alpha2,需提前切换。

4.4 版本回滚流程

回滚是升级失败或引入严重缺陷时的兜底手段。回滚策略分为原地回滚和快照重建两种。

回滚方式 适用场景 操作步骤 CRI 校验
原地回滚 仅 kubelet / 运行时版本回退
  1. 回退 kubelet 二进制
  2. 回退 CRI 运行时二进制
  3. 重启 kubelet 与运行时
  4. 验证节点状态
crictl version 与回滚目标一致;Pod Sandbox 重建成功
快照重建 控制面组件升级失败 / etcd 数据损坏
  1. 从备份恢复 etcd 快照
  2. 回滚 kube-apiserver 等组件
  3. 逐节点回滚 kubelet
  4. 全集群功能验证
CRI 运行时版本与 etcd 快照创建时一致;镜像缓存可用
回滚红线:回滚前必须确认 CRI 运行时版本与回滚目标集群版本兼容。例如从 containerd 2.0 回退到 1.6 时,需检查 cri-api 版本差异,否则 kubelet 无法连接。

4.5 核心流程总览(SVG)

下图将节点上线、节点下线、版本升级、版本回滚四个流程整合为一张生命周期状态机,突出 CRI 校验在每一步的嵌入位置。

集群生命周期管理核心流程总览 集群生命周期管理核心流程总览 节点上线 前置校验(CRI 端点) 加入集群(kubelet 注册) 后置验证(Pod 调度) 节点下线 封锁节点(cordon) 驱逐 Pod(drain) CRI 清理 + 移除节点 版本升级 前置检查(兼容性) 控制面升级 节点 kubelet + CRI 升级 版本回滚 回滚 kubelet / CRI etcd 快照恢复(可选) 全集群功能验证 CRI 校验贯穿层 crictl info / crictl ps / crictl pods / crictl version — 每一步均需运行时状态确认 说明: • 节点上线与下线属于日常运维操作,版本升级与回滚属于变更管理范畴。 • 四个流程均需在 CRI 校验层留下审计日志,用于发布包完整性追溯。

4.6 流程对比与治理要点

维度 节点上线 节点下线 版本升级 版本回滚
触发条件 扩容 / 故障恢复 缩容 / 维护 / 退役 功能迭代 / 安全补丁 升级失败 / 兼容性问题
影响范围 单节点 单节点(需排空) 全集群 全集群
CRI 校验频率 高(每次上线) 中(清理阶段) 高(每节点升级前后) 高(回滚前后)
回退能力 节点下线即可回退 重新上线 版本回滚 再次升级
发布包完整性要求 节点初始化包校验 清理脚本完整性 升级包 SHA256 校验 回滚包版本一致性
治理最佳实践:将四个流程封装为自动化 Pipeline(如 Ansible / Terraform + CRI 校验脚本),每次变更前自动执行 crictl info 与 crictl version 快照,变更后对比快照差异,确保运行时状态可审计、可回放。