2. 节点池基础概念:节点池定义、节点池与集群的关系、节点池的常见属性

2.1 节点池定义

节点池(Node Pool)是云原生容器集群中一组配置相同、生命周期一致的节点(虚拟机或物理机)的逻辑集合。节点池将节点的规格、镜像、磁盘、网络、弹性策略等属性抽象为可复用的模板,实现节点组的声明式管理和自动化运维。

核心特征:节点池内的所有节点共享相同的操作系统镜像、实例规格、数据盘配置、安全组规则和弹性伸缩策略。修改节点池配置后,新增节点自动继承新配置,存量节点需通过滚动升级或重建方式同步。

2.2 节点池与集群的关系

节点池是集群内节点维度的资源分区,一个集群可以包含多个节点池,每个节点池承载不同角色或不同规格的工作负载。节点池与集群的层级关系如下:

层级 作用范围 管理粒度 典型场景
集群 全局控制面 + 所有节点 API Server、etcd、网络策略、RBAC 环境隔离(生产/测试)、多租户
节点池 一组同配置节点 实例规格、镜像、磁盘、弹性伸缩 GPU 节点池、高内存节点池、竞价实例池
节点 单个计算实例 kubelet、容器运行时、Pod 调度 运行用户容器、系统组件
设计原则:节点池是集群与节点之间的中间抽象层。集群负责控制面统一管理,节点池负责节点模板化和批量运维,节点负责实际容器运行。这种分层设计使得集群可以同时管理多种异构节点,而无需为每种规格单独创建集群。
节点池与集群层级关系 Kubernetes 集群 控制面:API Server · etcd · Scheduler · Controller Manager 网络策略 · RBAC · 存储类 · 命名空间 节点池(Node Pool) 实例规格 · 镜像 · 磁盘 · 弹性伸缩 · 升级策略 节点池 A(CPU 通用) | 节点池 B(GPU 加速) | 节点池 C(竞价实例) 节点 1 kubelet 容器运行时 节点 2 kubelet 容器运行时 节点 N kubelet 容器运行时

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%
• 系统组件节点池:升级窗口与集群维护窗口对齐,优先升级