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 的核心数据流与组件关系:

Prometheus 驱动控制面 HPA 架构图 Kubernetes 控制面 kube-apiserver etcd kube-controller-manager kube-scheduler Prometheus 指标采集与存储 Prometheus Adapter 指标转换与暴露 HPA 扩缩容决策 /metrics custom.metrics.k8s.io 调整副本数 控制面 Pod 副本 动态扩缩容 负载反馈 说明: 控制面组件暴露 /metrics 端点 → Prometheus 采集并存储 → Adapter 转换为 Kubernetes 自定义指标 → HPA 根据指标阈值调整控制面 Pod 副本数。

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 搭建测试集群。