3. 集群节点管理:Kubernetes集群架构、Node与Pod的关系、节点生命周期管理

3.1 Kubernetes 集群架构概览

在 Serverless 场景下,Kubernetes 集群是承载用户 Pod 的“计算底座”。理解集群架构是进行容量规划与节点自动扩缩容的前提。一个标准的 Kubernetes 集群由 控制平面(Control Plane) 和 工作节点(Worker Nodes) 两部分组成。

核心要点: 控制平面负责决策与调度,工作节点负责实际运行容器。在 Serverless 平台中,工作节点通常由云厂商的弹性实例(如 ECI、Fargate)或自建节点池构成。
Kubernetes 集群架构(Serverless 视角) 控制平面 (Control Plane) kube-apiserver kube-scheduler kube-controller-manager etcd (集群存储) 工作节点 (Worker Nodes) Node 1 kubelet kube-proxy Pod A (用户) Pod B (用户) Node 2 kubelet kube-proxy Pod C (用户) Pod D (用户)

3.2 Node 与 Pod 的关系

Node 是集群中的工作节点,Pod 是 Kubernetes 中最小的调度和部署单元。理解二者关系是容量规划的基础:Pod 运行在 Node 之上,一个 Node 可以运行多个 Pod,但一个 Pod 只能被调度到一个 Node 上。

维度 Node(节点) Pod(容器组)
定义 物理机或虚拟机,提供计算资源 一个或多个容器的逻辑组合,共享网络和存储
生命周期 长期存在,由集群管理 临时性,可被创建、销毁、迁移
资源单位 CPU、内存、磁盘、网络带宽 Requests 和 Limits(资源预留与上限)
调度关系 被动接受 Pod 调度 主动请求资源,由 Scheduler 分配
Serverless 场景 通常由云厂商弹性实例(ECI/Fargate)充当,对用户透明 用户直接创建,无需关心底层 Node
容量规划启示: 在 Serverless 集群中,Node 的容量规划本质上是“Pod 资源需求的总和 + 系统预留 + 调度碎片”。每个 Node 能容纳的 Pod 数量受限于 maxPods 参数和实际资源余量。

3.3 节点生命周期管理

节点的生命周期管理是自动扩缩容的核心操作。Kubernetes 通过 Node Controller 监控节点状态,并触发相应的生命周期事件。在 Serverless 场景下,节点生命周期通常与弹性伸缩策略紧密绑定。

3.3.1 节点状态流转

节点在生命周期中会经历多个状态,理解这些状态有助于诊断扩缩容过程中的异常。

节点生命周期状态流转图 Pending Running NotReady Terminated 节点注册中,等待资源就绪 节点正常,可调度 Pod 心跳超时或健康检查失败 节点被删除或缩容下线

3.3.2 节点扩缩容操作流程

在 Serverless 集群中,节点扩缩容通常由 Cluster Autoscaler 或云厂商的弹性伸缩组件驱动。以下是标准操作流程:

  1. 扩容触发: Pod 因资源不足处于 Pending 状态,触发扩容评估。
  2. 节点创建: 调用云 API 创建新的弹性实例(如 ECI),节点状态变为 Pending。
  3. 节点就绪: kubelet 完成注册,节点状态变为 Running,可调度 Pod。
  4. Pod 调度: Scheduler 将 Pending Pod 绑定到新节点上。
  5. 缩容评估: 节点利用率低于阈值(如 50%)且持续一段时间,触发缩容。
  6. Pod 驱逐: 节点上的 Pod 被优雅驱逐(Graceful Shutdown),重新调度到其他节点。
  7. 节点删除: 节点状态变为 Terminated,释放云资源。
注意: 在 Serverless 场景下,节点缩容时必须确保 Pod 的 PodDisruptionBudget 策略生效,避免一次性驱逐过多 Pod 导致服务不可用。同时,节点从 Running 到 Terminated 的冷却时间(Cooldown)需要合理配置,防止频繁震荡。

3.3.3 节点健康监控与自动修复

节点生命周期管理还包括健康监控。Node Controller 每隔 --node-monitor-period(默认 5s)检查节点状态。如果节点在 --node-monitor-grace-period(默认 40s)内未上报心跳,则标记为 NotReady。超过 --pod-eviction-timeout(默认 5m)后,开始驱逐节点上的 Pod。

参数 默认值 说明 Serverless 建议
node-monitor-period 5s 节点监控检查周期 保持默认
node-monitor-grace-period 40s 节点心跳超时宽限期 可缩短至 20s,加速故障检测
pod-eviction-timeout 5m 节点不可用后驱逐 Pod 的等待时间 建议缩短至 1-2m,减少冷启动延迟
最佳实践: 在 Serverless 集群中,由于底层节点是弹性实例,故障恢复速度较快。建议适当缩短 node-monitor-grace-period 和 pod-eviction-timeout,以更快响应节点故障,提升整体调度效率。

3.4 本章小结

本章深入剖析了 Kubernetes 集群架构、Node 与 Pod 的依赖关系,以及节点生命周期的完整管理流程。这些知识是后续进行容量规划、配置自动扩缩容策略的基础。理解节点状态流转和健康监控参数,能帮助你在 Serverless 场景下更精准地控制集群规模,避免资源浪费或调度延迟。