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) 算法,确保同一优先级内不同用户/工作负载的请求不会互相阻塞。
APF 请求处理流程 客户端请求 FlowSchema 匹配 PriorityLevel 公平排队队列 分发决策(Queuing / Reject) 执行请求(API Server) 返回响应 关键参数 • queues: 队列数 • handSize: 哈希宽度 • queueLengthLimit: 队列深度

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. 基础篇(第 1-5 章):APF 原理、容量指标采集、监控看板搭建。
  2. 实战篇(第 6-15 章):典型场景调优(大规模集群、突发流量、多租户隔离)。
  3. 进阶篇(第 16-25 章):配额校准算法、自动化工具开发、混沌工程验证。
  4. 总结篇(第 26-30 章):案例复盘、最佳实践、面试与认证指南。
课程学习路径 基础篇 第 1-5 章 APF 原理 · 监控搭建 实战篇 第 6-15 章 场景调优 · 多租户 进阶篇 第 16-25 章 校准算法 · 自动化 总结篇 第 26-30 章 复盘 · 认证 学习建议 • 每章结束后完成配套实验,使用 Kind 或 Minikube 搭建测试环境 • 关注课程提供的 Prometheus 告警规则和 Grafana 看板模板,边学边用
前置要求:学员需具备 K8s 基础操作能力(kubectl、YAML 编写),了解 Prometheus 监控基础。建议提前准备一个至少 3 个工作节点的 K8s 集群(v1.20+)用于实验。