1. 课程导论:Prometheus 驱动 HPA 的背景、控制面弹性伸缩的价值、课程目标与前置知识
1.1 为什么需要 Prometheus 驱动 HPA?
Kubernetes 原生 Horizontal Pod Autoscaler(HPA)基于内置的 CPU / 内存指标进行扩缩容,这在许多场景下已经足够。然而,随着微服务架构和云原生应用的复杂度提升,业务层面的弹性伸缩需求往往无法仅通过资源指标来准确描述。例如,一个消息队列处理器的负载高低,更直接地体现在队列深度、处理延迟或吞吐量上,而非单纯的 CPU 使用率。
Prometheus 作为云原生可观测性的事实标准,能够采集丰富的应用层指标、业务指标和自定义指标。通过 Prometheus Adapter 将 Prometheus 中的指标暴露给 Kubernetes API Server,HPA 可以基于这些高价值指标做出更精准的扩缩容决策。这种模式被称为 Prometheus 驱动的 HPA,它打通了可观测性与弹性伸缩之间的数据链路。
核心转变:从“资源利用率驱动”升级为“业务负载与服务质量驱动”,使弹性伸缩真正服务于应用体验。
1.2 控制面弹性伸缩的价值
在 Kubernetes 集群中,控制面组件(如 kube-apiserver、etcd、kube-controller-manager、kube-scheduler)的稳定性直接决定整个集群的健康状态。传统做法通常为控制面组件分配固定的资源请求和限制,但面对突发流量、大规模集群或异常事件时,固定资源配置容易导致性能瓶颈或资源浪费。
控制面弹性伸缩的核心价值体现在以下三个维度:
| 维度 | 说明 | 收益 |
|---|---|---|
| 稳定性保障 | 根据控制面组件的实时负载(如 API 请求速率、etcd 操作延迟)自动调整副本数 | 避免因流量尖峰导致控制面过载,降低集群不可用风险 |
| 资源效率 | 在低负载时段自动缩减副本,释放计算资源给业务 Pod | 降低集群运营成本,提升资源利用率 |
| 运维自动化 | 基于 Prometheus 指标驱动,无需人工干预扩缩容决策 | 减少 SRE 排班压力,提升运维响应速度 |
适用场景举例:大规模集群的 API Server 突发请求、etcd 领导者选举期间的负载波动、Controller Manager 的 WorkQueue 深度变化。
1.3 课程目标
本课程旨在帮助学员掌握从理论到实践的完整链路,能够独立设计、部署并验证 Prometheus 驱动的控制面弹性伸缩方案。具体目标如下:
- 理解原理:掌握 Prometheus Adapter 与 HPA 的交互机制、指标发现与转换流程。
- 掌握实践:能够编写 Prometheus 查询语句(PromQL)提取控制面关键指标,并配置 HPA 策略。
- 验证能力:使用压测工具模拟控制面负载,通过可观测性工具验证扩缩容效果与稳定性。
- 生产化思维:了解生产环境中的注意事项,包括指标延迟、HPA 冷却窗口、多指标组合策略等。
1.4 前置知识要求
为获得最佳学习体验,建议学员具备以下基础:
| 领域 | 具体要求 |
|---|---|
| Kubernetes | 熟悉 Pod、Deployment、Service 基本概念;了解 HPA 工作原理;能使用 kubectl 操作集群 |
| Prometheus | 了解 Prometheus 架构与指标采集机制;能编写基础 PromQL 查询语句 |
| Linux 基础 | 能使用命令行工具;了解进程、端口、网络等基本概念 |
| 网络与负载 | 了解 HTTP 协议、负载生成工具(如 wrk、hey)的基本用法 |
1.5 整体架构概览
下图展示了 Prometheus 驱动控制面 HPA 的核心数据流与组件关系:
1.6 课程内容结构
本课程共分为 30 章,按以下阶段递进:
- 基础篇(第 1-5 章):环境搭建、Prometheus Adapter 部署、HPA 配置基础。
- 指标篇(第 6-12 章):控制面关键指标识别、PromQL 编写、指标适配器规则编写。
- 实践篇(第 13-22 章):针对 kube-apiserver、etcd、kube-controller-manager 的 HPA 配置与压测验证。
- 进阶篇(第 23-28 章):多指标组合策略、HPA 性能调优、故障排查与生产化建议。
- 总结篇(第 29-30 章):课程回顾、最佳实践与常见问题解答。
注意:本课程所有实验均在非生产环境进行,请勿在生产集群中直接执行压测操作。建议使用 Kind 或 Minikube 搭建测试集群。