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 的指标必须关联分析,而非孤立查看。原因如下:
- 因果链:etcd 延迟升高 → API Server 请求超时 → APF 队列堆积 → 客户端重试 → 进一步加剧 etcd 压力。
- 调优联动:调整 APF 队列数或优先级权重时,必须观察 etcd 的 QPS 和延迟变化,避免“调了排队,压垮存储”。
- 水位协同:etcd 的 DB 大小和磁盘 IO 直接决定了 API Server 能承载的最大并发数,APF 的限流阈值应参考 etcd 的容量上限。
调优黄金法则:APF 是“阀门”,etcd 是“管道”。阀门开多大,取决于管道能承受多大流量。两者必须协同调优,否则要么请求被拒,要么存储被冲垮。
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 个控制平面节点,以便复现调优场景。