2. K8s核心架构回顾:控制平面组件、工作节点组件、Pod与容器运行时、网络与存储插件

在深入容量调优之前,必须对Kubernetes核心架构的每一层组件有精确理解。控制平面负责全局决策与状态管理,工作节点负责运行实际负载,Pod是调度的最小原子,而网络与存储插件则决定了平台的数据面能力。本节从这四个维度展开,为后续的容量模型与RBAC策略设计奠定基础。

2.1 控制平面组件

控制平面(Control Plane)是K8s集群的“大脑”,所有集群状态变更、调度决策、控制器循环均在此完成。以下表格列出核心组件及其职责:

组件 进程名 核心职责 容量关注点
kube-apiserver kube-apiserver RESTful API入口,认证/授权/准入控制,etcd唯一读写端 请求QPS、内存缓存大小、etcd连接池
kube-scheduler kube-scheduler 监听未调度的Pod,基于资源请求与策略绑定到Node 调度队列深度、预选/优选算法耗时
kube-controller-manager kube-controller-manager 运行ReplicaSet/Deployment/Node等控制器,维持期望状态 控制器循环频率、informer缓存大小
etcd etcd 分布式键值存储,保存所有集群数据 磁盘IOPS、WAL写入延迟、DB大小
cloud-controller-manager cloud-controller-manager 对接云厂商LB/存储/路由API(可选组件) 云API调用频率、限频重试
容量调优提示: kube-apiserver 是控制平面的瓶颈热点。建议将 apiserver 的 --max-requests-inflight 和 --max-mutating-requests-inflight 根据集群规模调整为 800/400 以上,并启用 --enable-priority-and-fairness 防止突发流量打垮 etcd。
控制平面组件交互流程 etcd kube-apiserver kube-scheduler kube-controller-manager cloud-controller-manager 所有组件仅与 kube-apiserver 通信,etcd 不直接对外暴露;调度器与控制器通过 Watch 机制获取资源变更

2.2 工作节点组件

每个工作节点(Node)运行三个核心代理,负责执行控制平面下发的指令并上报节点状态:

  • kubelet:节点上的主要代理,负责管理Pod生命周期、健康检查、资源统计上报。通过cAdvisor内置采集容器CPU/内存/网络/磁盘指标。
  • kube-proxy:维护节点上的网络规则,实现Service的ClusterIP/NodePort/LoadBalancer转发。通常基于iptables或IPVS模式。
  • 容器运行时(Container Runtime):负责拉取镜像、启动/停止容器。常见实现包括containerd、CRI-O、Docker Engine(已弃用)。
容量关键指标: kubelet 的 --kube-api-qps 默认仅 5,大规模集群下容易导致Pod状态上报延迟。建议调至 15~20;同时关注 kubelet_node_status_update_frequency_seconds 指标,若超过 30s 说明节点心跳压力过大。

2.3 Pod与容器运行时

Pod是K8s中可调度的最小原子单元,一个Pod内可包含一个或多个容器,共享同一网络命名空间、存储卷和IPC命名空间。容器运行时通过CRI(Container Runtime Interface)与kubelet对接。

Pod的QoS(服务质量)等级直接影响调度与驱逐策略:

QoS等级 资源定义方式 驱逐优先级 典型场景
Guaranteed 所有容器requests == limits 最低(最后被驱逐) 数据库、关键中间件
Burstable 至少一个容器requests < limits 中等 Web服务、API网关
BestEffort 未设置requests/limits 最高(最先被驱逐) 批处理、日志采集sidecar
容量调优避坑: 不要在生产集群中大量使用 BestEffort Pod。当节点内存压力达到 eviction-hard 阈值(默认 memory.available < 100Mi)时,BestEffort Pod 会被立即驱逐,可能导致大面积业务抖动。建议至少为每个Pod设置 requests。

2.4 网络与存储插件

K8s通过CNI(Container Network Interface)和CSI(Container Storage Interface)实现网络与存储的插件化扩展,这是平台容量调优中容易被忽视的“隐形瓶颈”。

2.4.1 CNI网络插件

CNI插件负责为Pod分配IP地址、配置网络接口和路由规则。主流CNI实现对比:

CNI插件 网络模型 性能特点 容量调优要点
Calico 纯三层BGP路由 高吞吐,低延迟,支持NetworkPolicy BGP反射器数量、Felix同步间隔
Flannel VXLAN/Host-GW覆盖网络 简单易用,封装开销约5%~10% VXLAN MTU、后端类型选择
Cilium eBPF内核加速 极低延迟,原生安全策略 eBPF map大小、Hubble可观测性开销
Weave Fast Datapath + 加密 跨云加密通信,吞吐中等 IP地址池大小、加密CPU开销

2.4.2 CSI存储插件

CSI插件将存储卷的创建、挂载、快照等操作标准化。容量调优需关注以下维度:

  • 卷挂载延迟: 云厂商CSI通常涉及API调用+磁盘挂载+格式化,延迟在秒级到分钟级。建议使用 volumeAttachment 预挂载池化技术。
  • PV/PVC数量限制: 每个节点的最大卷数受限于CSI驱动和云厂商配额(如AWS单节点最多40个EBS卷)。
  • 存储性能配置: 通过StorageClass的 parameters 设置IOPS/吞吐量上限,避免无限制消耗宿主机存储带宽。
Pod 网络与存储插件数据流 Pod (容器组) CNI 网络插件 CSI 存储插件 网络后端 (eBPF/BGP/VXLAN) 存储后端 (云盘/NFS/本地) CNI 和 CSI 通过标准接口与 kubelet 交互,后端实现可热插拔,不影响 Pod 生命周期

2.5 架构回顾小结