1. APF 与 K8s 容量管理概述
1.1 APF(API Priority and Fairness)原理
API Priority and Fairness(APF)是 Kubernetes 1.20+ 引入的 API 请求排队与优先级调度机制,用于替代早期基于 MaxRequestsInFlight 的简单限流。APF 的核心目标是在控制面资源有限的前提下,保障高优先级请求(如 kubelet 心跳、调度绑定)不被低优先级请求(如大规模 LIST 操作)饿死,同时实现公平的并发分配。
核心设计理念:APF 将 API 请求按 PriorityLevelConfiguration(PLC) 分类,每个 PLC 内部再通过 FlowSchema(FS) 将请求路由到不同的队列组。每个队列组使用 公平排队(Fair Queuing) 算法,确保同一优先级内不同用户/工作负载的请求不会互相阻塞。
1.2 K8s 容量管理核心概念
Kubernetes 容量管理不仅关注节点资源(CPU、内存、磁盘),更关注控制面 API Server 的请求处理能力。容量管理的核心目标是确保集群在峰值负载下仍能稳定运行,避免因请求过载导致控制面不可用。
| 维度 | 核心指标 | 管理手段 | 常见瓶颈 |
|---|---|---|---|
| 控制面容量 | API 请求 QPS、P99 延迟、etcd 写入速率 | APF 优先级配置、MaxRequestsInFlight、etcd 配额 | LIST 请求风暴、Watch 连接数过高 |
| 节点资源容量 | CPU 使用率、内存使用率、Pod 密度 | ResourceQuota、LimitRange、节点自动扩缩容 | 资源碎片、超卖导致 OOM |
| 存储容量 | PV 使用率、PVC 数量、存储后端 IOPS | StorageClass 配额、PVC 上限、存储后端限流 | 慢查询、磁盘空间不足 |
| 网络容量 | Pod 间带宽、Service 连接数、DNS 查询速率 | NetworkPolicy、CNI 配置、CoreDNS HPA | DNS 缓存击穿、Service 后端过载 |
容量管理黄金法则:控制面容量是集群的“交通枢纽”,必须优先保障。建议将 API Server 的 P99 响应延迟控制在 1s 以内,etcd 的磁盘 IO 延迟控制在 10ms 以内。当控制面出现瓶颈时,节点资源再充裕也无法正常调度和管理。
1.3 课程目标与学习路径
本课程面向 K8s 平台架构师、SRE 工程师,旨在帮助学员掌握从容量评估、配额校准到持续调优的完整方法论。课程采用“理论 + 实战 + 工具”三位一体的教学模式。
课程核心目标
- 理解 APF 底层原理:掌握 FlowSchema、PriorityLevelConfiguration 的配置逻辑与调优参数。
- 掌握容量评估方法:使用 Prometheus + Grafana 构建容量监控看板,识别控制面与数据面瓶颈。
- 实现配额精准校准:基于实际负载数据,动态调整 ResourceQuota、LimitRange 和 APF 配置。
- 构建自动化调优体系:通过 Operator 或自定义控制器实现容量自愈与配额自动校准。
学习路径规划
- 基础篇(第 1-5 章):APF 原理、容量指标采集、监控看板搭建。
- 实战篇(第 6-15 章):典型场景调优(大规模集群、突发流量、多租户隔离)。
- 进阶篇(第 16-25 章):配额校准算法、自动化工具开发、混沌工程验证。
- 总结篇(第 26-30 章):案例复盘、最佳实践、面试与认证指南。
前置要求:学员需具备 K8s 基础操作能力(kubectl、YAML 编写),了解 Prometheus 监控基础。建议提前准备一个至少 3 个工作节点的 K8s 集群(v1.20+)用于实验。