1. 课程导论:为什么需要容量调优?APF与etcd在K8s中的核心地位

1.1 容量调优的驱动力:从“能用”到“稳得住”

在生产环境中,Kubernetes 集群从“功能可用”到“生产稳定”之间存在一道关键门槛——容量调优。当集群规模增长、业务混部加剧时,API Server 和 etcd 会成为最先暴露瓶颈的组件。未经调优的集群往往出现以下症状:

  • 请求排队与超时:kubectl 命令卡住,Pod 创建延迟从毫秒级飙升到秒级。
  • etcd 读写延迟抖动:Leader 选举频繁,Watch 事件堆积,导致控制器循环失速。
  • 资源碎片化:节点资源利用率不均,调度器因 etcd 响应慢而做出次优决策。
  • 级联故障风险:一个组件的容量瓶颈通过 API 依赖链扩散,最终引发集群雪崩。
核心认知:容量调优不是“加机器”,而是通过精细化配置 APF(API 优先级与公平性)和 etcd 水位管理,让集群在有限资源下提供可预测的响应能力。

1.2 APF 与 etcd:K8s 控制平面的“双引擎”

在 K8s 控制平面中,API Server 是所有组件交互的中枢,而 etcd 是持久化状态的后端。APF 机制运行在 API Server 内部,etcd 则作为独立存储层。两者共同决定了控制平面的吞吐上限与稳定性。

维度 APF(API 优先级与公平性) etcd
定位 API Server 内部的请求排队与限流引擎 分布式键值存储,K8s 所有资源的最终状态存储
核心职责 按优先级和公平性规则分发请求,防止高流量请求饿死关键操作 提供强一致性的读写、Watch 机制,支撑控制器模式
瓶颈表现 请求延迟增加、队列深度过大、拒绝率上升 磁盘 IO 打满、WAL 写入延迟、DB 大小膨胀
调优手段 调整 FlowSchema、PriorityLevelConfiguration、队列数 调整磁盘类型、压缩策略、quota-backend-bytes、auto-compaction
监控指标 apiserver_flowcontrol_* 系列指标 etcd_server_*、etcd_disk_*、etcd_db_total_size_in_bytes

1.3 为什么将 APF 与 etcd 放在同一面板?

在容量调优实践中,APF 和 etcd 的指标必须关联分析,而非孤立查看。原因如下:

  1. 因果链:etcd 延迟升高 → API Server 请求超时 → APF 队列堆积 → 客户端重试 → 进一步加剧 etcd 压力。
  2. 调优联动:调整 APF 队列数或优先级权重时,必须观察 etcd 的 QPS 和延迟变化,避免“调了排队,压垮存储”。
  3. 水位协同:etcd 的 DB 大小和磁盘 IO 直接决定了 API Server 能承载的最大并发数,APF 的限流阈值应参考 etcd 的容量上限。
调优黄金法则:APF 是“阀门”,etcd 是“管道”。阀门开多大,取决于管道能承受多大流量。两者必须协同调优,否则要么请求被拒,要么存储被冲垮。
APF 与 etcd 在 K8s 控制平面中的核心位置 K8s 控制平面核心组件与容量瓶颈点 控制平面 API Server 请求路由 · 认证鉴权 · 准入控制 APF 排队与限流 etcd 强一致 KV 存储 Watch · 事务 · 压缩 读写请求 kubectl / 控制器 请求 Grafana 水位面板 指标采集 容量调优关注点 APF 队列深度 · 拒绝率 etcd 延迟 · DB 大小 · IO

1.4 容量调优的典型场景与收益

以下场景是 APF 与 etcd 联合调优的高频触发条件,也是本课程重点覆盖的实战案例:

场景 现象 调优目标 预期收益
大规模节点注册 kubelet 心跳请求导致 APF 队列堆积,etcd 写入延迟飙升 为 Node 心跳设置独立 FlowSchema,限制并发 节点注册时间降低 60%,etcd 写入 P99 延迟下降 80%
控制器风暴 Deployment 滚动更新触发大量 Pod 创建,Watch 事件积压 调整 PriorityLevelConfiguration,保障控制器请求优先级 滚动更新速度提升 3 倍,避免 Watch 超时
etcd 磁盘 IO 打满 DB 大小超过 2GB,WAL 写入延迟 > 100ms 启用 auto-compaction,调整 quota-backend-bytes DB 大小稳定在 1GB 以内,写入延迟降至 10ms
混部集群请求冲突 高优先级业务与低优先级监控抢 API 资源 配置 Exempt + PriorityLevel 隔离,设置公平性权重 关键业务请求成功率 99.99%,监控请求不饿死

1.5 课程目标与学习路径

通过本课程,你将掌握以下核心能力:

  • 理解 APF 机制:FlowSchema、PriorityLevelConfiguration、队列算法(Shuffle Sharding)的工作原理。
  • 掌握 etcd 水位管理:DB 大小监控、压缩策略、磁盘 IO 瓶颈定位与优化。
  • 构建 Grafana 水位面板:从零设计 APF 队列深度、etcd 延迟、请求拒绝率等关键指标的仪表盘。
  • 实战调优案例:基于真实集群数据,完成从问题发现、根因分析到参数调整的完整闭环。
前置要求:本课程假设你已具备 K8s 基础操作能力(kubectl、Pod/Deployment 概念),并拥有一个可访问的测试集群。建议准备至少 3 个 Worker 节点和 1 个控制平面节点,以便复现调优场景。
容量调优闭环流程 容量调优闭环:从监控到优化 ① 监控与告警 Grafana 面板 ② 根因分析 APF vs etcd 关联 ③ 参数调整 FlowSchema / etcd ④ 效果验证 指标回看 持续迭代 关键:每次调优只改一个参数,观察 15 分钟以上指标变化,避免多个变量相互干扰。

1.6 本章小结