3. 节点池概念:节点池定义、节点池与集群升级的关系、节点池版本管理
3.1 节点池定义
节点池(Node Pool)是 Kubernetes 集群中一组具有相同配置的节点集合。在托管集群(如 AKS、EKS、GKE)或基于 Cluster API 的自建集群中,节点池是管理节点生命周期、扩缩容和升级的核心抽象单元。
节点池的核心属性包括:
- 计算规格:实例类型(如 ecs.g7.xlarge)、vCPU、内存、GPU 型号。
- 镜像:节点操作系统及预装组件版本(如 containerd、kubelet)。
- 磁盘:系统盘与数据盘类型、大小、加密配置。
- 网络:安全组规则、子网、弹性 IP 策略。
- 标签与污点:用于工作负载调度隔离。
- 伸缩配置:最小/最大节点数、扩缩容策略。
关键认知:节点池是“节点模板 + 弹性伸缩组”的组合体。升级节点池本质上是替换模板并滚动更新底层节点实例。
3.2 节点池与集群升级的关系
集群升级通常分为两个层面:控制面升级和节点池升级。节点池升级是集群升级中耗时最长、风险最高的环节。
| 升级层面 | 操作对象 | 影响范围 | 回退难度 |
|---|---|---|---|
| 控制面升级 | API Server、Controller Manager、Scheduler、etcd | 全集群 API 可用性 | 高(需 etcd 快照恢复) |
| 节点池升级 | kubelet、kube-proxy、节点操作系统 | 节点上运行的工作负载 | 中(可回退节点池版本) |
节点池升级的典型流程:
- 控制面升级完成:确保 API Server 版本 ≥ 目标节点池版本。
- 节点池版本更新:修改节点池的 kubelet 版本或镜像版本。
- 滚动更新节点:逐批驱逐 Pod → 创建新节点 → 加入集群。
- 验证与回退:通过 Version Skew 快照确认兼容性,异常时回退节点池版本。
Version Skew 约束:kubelet 版本不能高于 API Server 版本,且不能低于 API Server 版本超过 2 个次要版本。节点池升级必须遵守此偏移量限制。
3.3 节点池版本管理
节点池版本管理是集群运维的核心能力,涉及版本定义、版本约束、版本快照和版本回退四个维度。
3.3.1 版本定义
每个节点池包含两个关键版本标识:
| 版本标识 | 说明 | 示例 |
|---|---|---|
| kubelet 版本 | 节点上 kubelet 组件的语义化版本 | v1.28.3 |
| 镜像版本 | 节点操作系统及预装组件的镜像标识 | aliyun_2_1903_x64_20G_alibase_20240101.vhd |
3.3.2 版本约束
节点池版本必须满足以下约束:
- Version Skew 约束:kubelet 版本 ≤ API Server 版本,且 ≥ API Server 版本 - 2。
- 镜像兼容性:节点镜像必须包含与 kubelet 版本匹配的容器运行时(containerd/Docker)。
- 组件依赖:节点池内所有节点必须使用相同的 kubelet 版本和镜像版本。
3.3.3 版本快照
Version Skew 快照是节点池升级回退的关键支撑技术。快照内容包含:
# 节点池版本快照示例(YAML 格式)
apiVersion: nodeupgrade.example.com/v1
kind: NodePoolVersionSnapshot
metadata:
name: nodepool-a-snapshot-20240101
namespace: cluster-system
spec:
nodePoolName: nodepool-a
kubeletVersion: v1.28.3
imageVersion: aliyun_2_1903_x64_20G_alibase_20240101.vhd
instanceType: ecs.g7.xlarge
createdAt: "2024-01-01T00:00:00Z"
checksum: sha256:a1b2c3d4e5f6...
status:
phase: Active
nodeCount: 5
nodeList:
- ip-10-0-1-10
- ip-10-0-1-11
- ip-10-0-1-12
- ip-10-0-1-13
- ip-10-0-1-14
3.3.4 版本回退流程
基于 Version Skew 快照的节点池回退流程:
- 触发回退:检测到节点池升级后工作负载异常或 kubelet 版本不兼容。
- 选择快照:从快照列表中选择目标版本快照(通常为升级前的最新快照)。
- 校验约束:自动校验回退版本与当前控制面版本的 Version Skew 兼容性。
- 执行回退:将节点池版本修改为快照中的版本,触发滚动更新。
- 验证恢复:确认节点池内所有节点版本一致,工作负载恢复正常。
最佳实践:在每次节点池升级前自动创建 Version Skew 快照,保留至少最近 3 个快照。回退时优先选择与当前控制面版本偏移量 ≤ 2 的快照版本。
3.4 节点池版本管理最佳实践
| 实践项 | 建议 | 说明 |
|---|---|---|
| 快照策略 | 每次升级前自动创建快照 | 确保回退时有可用的版本基线 |
| 快照保留 | 保留最近 3-5 个快照 | 支持多级回退,避免存储膨胀 |
| 版本偏移 | 节点池版本 ≤ 控制面版本 | 遵守 Kubernetes Version Skew 策略 |
| 回退验证 | 回退后执行全量工作负载验证 | 确保回退不会引入新的兼容性问题 |
| 灰度升级 | 先升级非关键节点池 | 降低升级风险,积累验证经验 |
课程关联:本章的节点池版本管理知识是后续《Version Skew 快照创建与存储》《节点池升级回退演练》的基础。理解节点池版本约束和快照机制,才能正确执行升级回退操作。