2. 节点池基础概念:节点池定义、节点池与集群的关系、节点池的常见属性
2.1 节点池定义
节点池(Node Pool)是云原生容器集群中一组配置相同、生命周期一致的节点(虚拟机或物理机)的逻辑集合。节点池将节点的规格、镜像、磁盘、网络、弹性策略等属性抽象为可复用的模板,实现节点组的声明式管理和自动化运维。
核心特征:节点池内的所有节点共享相同的操作系统镜像、实例规格、数据盘配置、安全组规则和弹性伸缩策略。修改节点池配置后,新增节点自动继承新配置,存量节点需通过滚动升级或重建方式同步。
2.2 节点池与集群的关系
节点池是集群内节点维度的资源分区,一个集群可以包含多个节点池,每个节点池承载不同角色或不同规格的工作负载。节点池与集群的层级关系如下:
| 层级 | 作用范围 | 管理粒度 | 典型场景 |
|---|---|---|---|
| 集群 | 全局控制面 + 所有节点 | API Server、etcd、网络策略、RBAC | 环境隔离(生产/测试)、多租户 |
| 节点池 | 一组同配置节点 | 实例规格、镜像、磁盘、弹性伸缩 | GPU 节点池、高内存节点池、竞价实例池 |
| 节点 | 单个计算实例 | kubelet、容器运行时、Pod 调度 | 运行用户容器、系统组件 |
设计原则:节点池是集群与节点之间的中间抽象层。集群负责控制面统一管理,节点池负责节点模板化和批量运维,节点负责实际容器运行。这种分层设计使得集群可以同时管理多种异构节点,而无需为每种规格单独创建集群。
2.3 节点池的常见属性
节点池的属性决定了节点的创建行为、运行特征和运维策略。以下为生产环境中节点池的核心属性分类:
| 属性类别 | 属性名称 | 说明 | 典型值/示例 |
|---|---|---|---|
| 基础配置 | 节点池名称 | 集群内唯一标识 | gpu-pool-v2 |
| 实例规格 | CPU/内存/GPU 型号 | ecs.g7.4xlarge(16vCPU 64GB) |
|
| 操作系统镜像 | 节点初始化使用的 OS 版本 | Aliyun Linux 3.2104 LTS |
|
| 存储配置 | 系统盘类型/大小 | 节点系统盘规格 | ESSD PL2 · 120GB |
| 数据盘配置 | 挂载的数据盘及容器数据目录 | ESSD PL3 · 500GB · /var/lib/docker |
|
| 网络配置 | 安全组 | 节点出入流量规则 | sg-xxxxx(放通 6443/10250) |
| 弹性 IP | 是否自动分配公网 IP | 否(仅内网) | |
| 弹性伸缩 | 最小/最大节点数 | 节点池规模边界 | 最小 3 · 最大 20 |
| 伸缩策略 | 扩容/缩容触发条件 | CPU 利用率 > 75% 扩容 · cooldown: 300s |
|
| 升级管理 | 升级策略 | 节点升级方式与顺序 | 滚动升级 · 最大不可用 1 · 分批间隔 5min |
| 升级窗口 | 允许执行升级的时间段 | 02:00-06:00(UTC+8) |
|
| 标签与污点 | 节点标签 / 污点 | Pod 调度约束 | node-type=gpu · nvidia.com/gpu=true:NoSchedule |
升级窗口复核要点:节点池的升级策略和升级窗口属性是本章课程的核心关注点。在后续章节中,我们将重点讲解如何根据业务负载特征,为不同节点池配置差异化的升级窗口,并通过复核机制确保升级操作在安全窗口内执行。
2.4 节点池属性配置示例
以下为一个生产级 GPU 节点池的 YAML 配置片段,展示了关键属性的实际声明方式:
apiVersion: cluster.k8s.io/v1alpha1
kind: NodePool
metadata:
name: gpu-pool-production
namespace: cluster-system
spec:
clusterName: prod-cluster-01
nodeTemplate:
instanceType: ecs.gn7i-c16g1.4xlarge
imageId: aliyun_3_x64_20G_nvidia_535_20250101
systemDisk:
category: cloud_essd
size: 120
dataDisks:
- category: cloud_essd
size: 500
mountPath: /var/lib/containerd
securityGroupIds:
- sg-2ze7p5c7z9m4a3b2c1d0
labels:
node-type: gpu
accelerator: nvidia-t4
taints:
- key: nvidia.com/gpu
value: "true"
effect: NoSchedule
scaling:
minSize: 2
maxSize: 10
policy:
type: cpu
targetUtilization: 70
cooldownSeconds: 300
upgrade:
strategy: rollingUpdate
maxUnavailable: 1
batchIntervalMinutes: 5
window:
start: "02:00"
end: "06:00"
timezone: Asia/Shanghai
最佳实践:为不同工作负载创建独立的节点池,并配置差异化的升级窗口。例如:
• 在线业务节点池:升级窗口设为凌晨 02:00-04:00,最大不可用节点数 ≤ 1
• 离线计算节点池:升级窗口可放宽至全天,最大不可用节点数 ≤ 30%
• 系统组件节点池:升级窗口与集群维护窗口对齐,优先升级
• 在线业务节点池:升级窗口设为凌晨 02:00-04:00,最大不可用节点数 ≤ 1
• 离线计算节点池:升级窗口可放宽至全天,最大不可用节点数 ≤ 30%
• 系统组件节点池:升级窗口与集群维护窗口对齐,优先升级