2. Kubernetes 集群架构基础:Master 节点、Worker 节点、Pod、Deployment、StatefulSet、Service 核心概念回顾

在深入容量规划与自动扩缩容之前,必须重新夯实 Kubernetes 的核心架构基石。本章将聚焦于集群的两大物理角色(Master 与 Worker)、最小编排单元(Pod)、工作负载控制器(Deployment / StatefulSet)以及网络抽象层(Service)。理解这些组件的资源模型与生命周期,是后续制定扩缩容策略的前提。

2.1 集群物理拓扑:Master 节点与 Worker 节点

Kubernetes 集群由两类节点构成:Master 节点(控制平面) 负责全局决策与集群状态管理;Worker 节点(数据平面) 负责运行实际业务容器。两者通过 kube-apiserver 进行通信,形成“控制面-数据面”分离架构。

节点角色 核心组件 职责说明 资源敏感度
Master kube-apiserver, etcd, kube-scheduler, kube-controller-manager API 网关、状态存储、调度决策、控制器循环 高(etcd 磁盘 IO、apiserver 内存)
Worker kubelet, kube-proxy, 容器运行时(containerd) Pod 生命周期管理、网络代理、镜像拉取 中(CPU/内存/网络带宽)
容量规划要点: Master 节点不建议运行业务 Pod,避免资源争抢导致控制面不稳定。Worker 节点的可分配资源 = 节点总资源 - 系统预留 - kubelet 预留 - Pod 驱逐阈值。扩缩容决策应基于 Worker 节点的 Allocatable 而非 Capacity。
Kubernetes 集群物理架构:Master 与 Worker 节点 Master 控制平面 kube-apiserver etcd(状态存储) kube-scheduler kube-controller-manager ⚠ 不建议运行业务 Pod Worker 数据平面 kubelet kube-proxy 容器运行时 业务 Pod Allocatable 资源池 Worker 数据平面 kubelet kube-proxy 容器运行时 业务 Pod Allocatable 资源池

2.2 Pod:最小编排与资源单元

Pod 是 Kubernetes 中可创建和部署的最小计算单元,包含一个或多个共享网络栈和存储卷的容器。Pod 的 资源请求(Requests) 与 资源限制(Limits) 是容量规划的核心输入。

  • Requests:调度器依据此值选择节点,保证 Pod 获得最低资源保障。
  • Limits:cgroup 层面限制 Pod 的资源使用上限,防止“吵闹邻居”效应。
  • QoS 等级:根据 Requests 与 Limits 的配置关系,Pod 被分为 Guaranteed、Burstable、BestEffort 三类,直接影响节点压力过大时的驱逐顺序。
成本优化提示: 生产环境中建议为关键业务 Pod 设置 Requests = Limits(Guaranteed 等级),避免因资源超卖导致 OOM 或驱逐。对于批处理任务,可适当设置 Requests < Limits 以提高节点装箱率。

2.3 工作负载控制器:Deployment 与 StatefulSet

控制器负责确保集群中运行的 Pod 副本数符合期望状态。Deployment 和 StatefulSet 是最常用的两类控制器,它们的扩缩容行为存在本质差异。

特性 Deployment StatefulSet
Pod 标识 随机名称(无状态) 有序、固定名称(有状态)
扩缩容顺序 并行创建/删除 顺序创建(0→N)、逆序删除(N→0)
存储卷 通常共享卷或临时卷 每个 Pod 独立 PVC(PersistentVolumeClaim)
适用场景 无状态应用(Web、API) 有状态应用(数据库、消息队列)
扩缩容速度 快(并行) 慢(串行,依赖存储挂载)
容量规划差异: Deployment 的扩缩容主要受节点剩余 CPU/内存限制;StatefulSet 的扩缩容还需考虑 PVC 的创建速度、存储后端 IOPS 上限以及数据迁移成本。在成本优化场景中,StatefulSet 的缩容往往无法立即释放存储资源,需要配合 PVC 回收策略。

2.4 Service:稳定的网络访问抽象

Service 为一组动态变化的 Pod 提供稳定的虚拟 IP(ClusterIP)和 DNS 名称,实现服务发现与负载均衡。Service 的类型决定了其对外暴露的方式与网络路径。

  • ClusterIP:默认类型,仅在集群内部可达,适合内部微服务通信。
  • NodePort:在每个 Worker 节点上开放静态端口,适合开发测试或非 HTTP 协议。
  • LoadBalancer:对接云厂商 LB,自动分配公网 IP,适合生产对外服务。
  • Headless Service:不分配 ClusterIP,直接返回 Pod IP 列表,适合 StatefulSet 的有状态访问。

Service 本身不消耗节点 CPU/内存,但其背后的 kube-proxy 组件(iptables/IPVS 模式)会占用一定的节点资源。当集群规模超过 1000 个 Service 时,iptables 规则更新延迟可能达到秒级,此时建议切换至 IPVS 模式。

Service 流量转发与 Pod 负载均衡 外部客户端 Service ClusterIP: 10.0.0.1 Port: 80 → 8080 Selector: app=web Session: None Pod A IP: 10.1.0.2 app=web Pod B IP: 10.1.0.3 app=web Pod C IP: 10.1.0.4 app=web kube-proxy iptables/IPVS 轮询/随机 负载均衡

2.5 核心概念与容量规划的关联总结

下表将上述核心概念与后续章节的容量规划、自动扩缩容、成本优化直接关联,帮助建立全局视角。

概念 与容量规划的直接关联 扩缩容影响因子
Master 节点 控制面稳定性决定扩缩容指令能否及时下发 etcd 性能、apiserver QPS
Worker 节点 Allocatable 资源是 Pod 调度的硬边界 节点池大小、实例规格、预留策略
Pod Requests/Limits 决定节点装箱率与 QoS 资源超卖比、驱逐优先级
Deployment 无状态应用可快速并行扩缩,成本弹性高 HPA 指标、副本数上下限
StatefulSet 有状态应用扩缩受存储约束,成本释放滞后 PVC 生命周期、存储 IOPS
Service 网络层不直接消耗计算资源,但影响流量分布 kube-proxy 模式、Service 数量
常见误区: 很多团队在容量规划时只关注 Worker 节点的 CPU/内存,忽略了 Master 节点在集群规模增长时的瓶颈。当集群节点数超过 500 时,etcd 的磁盘 IOPS 和 apiserver 的内存占用往往成为扩缩容延迟的首要因素。建议在规划阶段就将控制面资源纳入监控与预算。