1. 课程导论:HPA工作原理、Prometheus在HPA中的角色、常见故障模式概述
1.1 水平Pod自动伸缩(HPA)工作原理
HPA(Horizontal Pod Autoscaler)是Kubernetes内置的弹性伸缩控制器,其核心逻辑基于控制循环模型。HPA控制器定期(默认每15秒)查询目标资源指标,计算期望副本数,并调整工作负载的副本数量。
HPA的工作流程可概括为以下步骤:
- 指标采集:HPA通过
metrics.k8s.ioAPI(Resource Metrics)或custom.metrics.k8s.io/external.metrics.k8s.ioAPI(Custom/External Metrics)获取Pod或对象的当前指标值。 - 期望副本计算:使用公式
期望副本数 = ceil(当前副本数 × (当前指标值 / 目标指标值))。 - 决策与执行:比较期望副本数与当前副本数,若差异超过容忍阈值(默认0.1),则通过Scale API更新Deployment/StatefulSet的副本数。
- 冷却与回退:内置
--horizontal-pod-autoscaler-downscale-stabilization(默认5分钟)和--horizontal-pod-autoscaler-upscale-delay(默认3分钟)防止抖动。
关键公式:
desiredReplicas = ceil[currentReplicas × (currentMetricValue / desiredMetricValue)]
1.2 Prometheus在HPA中的角色
原生HPA仅支持CPU/内存等Resource Metrics。当需要基于自定义业务指标(如QPS、请求延迟、队列深度)或外部指标(如消息队列积压数)进行伸缩时,必须引入Prometheus生态。Prometheus在HPA架构中扮演指标生产者和适配器桥梁的双重角色。
典型架构组件如下:
| 组件 | 角色 | 说明 |
|---|---|---|
| Prometheus Server | 指标采集与存储 | 从应用、中间件、Kubernetes组件拉取指标,提供PromQL查询能力 |
| Prometheus Adapter | 指标转换与暴露 | 将Prometheus中的指标转换为Kubernetes Custom/External Metrics API格式 |
| Kubernetes API Server | 指标API聚合 | 将Adapter注册的API聚合到custom.metrics.k8s.io或external.metrics.k8s.io |
| HPA Controller | 伸缩决策者 | 通过聚合API查询指标,执行伸缩计算 |
1.3 常见故障模式概述
在生产环境中,Prometheus数据采集链路中的任何环节故障都可能导致HPA失效。根据故障发生的位置,可归纳为以下四大类:
| 故障类别 | 典型表现 | 根因示例 |
|---|---|---|
| 采集层故障 | 指标缺失、数据延迟、指标值异常 | Target不可达、Relabel配置错误、抓取超时、指标名称变更 |
| 适配层故障 | HPA无法查询到指标、返回404/500 | Adapter配置错误、PromQL语法错误、Series不存在、API聚合失败 |
| 伸缩决策故障 | HPA不伸缩、伸缩过度、伸缩震荡 | 指标波动剧烈、冷却窗口配置不当、目标值设置不合理、多指标冲突 |
| 基础设施故障 | HPA Controller异常、API Server过载 | 集群资源不足、etcd性能瓶颈、网络分区、RBAC权限不足 |
⚠️ 常见误区: 很多运维人员将HPA不工作直接归因于“Prometheus数据采集失败”,但实际排查中,Adapter配置错误和指标命名不一致才是最高频的故障根因。本课程后续章节将逐一深入剖析每种故障的排查方法论。
1.4 故障排查的黄金路径
面对HPA故障,建议遵循以下排查链路:
- 检查HPA事件:
kubectl describe hpa <name>查看Conditions和Events。 - 验证指标可达性:直接请求Metrics API
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1/...。 - 检查Adapter日志:查看Prometheus Adapter Pod日志中的查询错误。
- 验证Prometheus数据:在Prometheus UI中直接执行HPA使用的PromQL,确认数据存在且符合预期。
- 检查Target采集状态:确认应用Pod的/metrics端点可正常访问且返回合法数据。
💡 排查口诀: “先看HPA事件,再查API响应;Adapter日志是关键,PromQL验证不能省;最后检查采集端,链路闭环才放心。”
1.5 课程学习路径
本课程将按照“原理 → 配置 → 故障 → 实战”的递进结构展开:
- 第2-5章:深入HPA核心原理与Prometheus Adapter配置细节。
- 第6-15章:逐一剖析采集层、适配层、决策层的典型故障案例。
- 第16-25章:进阶故障场景,包括多指标HPA、外部指标、大规模集群伸缩等。
- 第26-30章:综合实战演练与监控告警体系构建。
通过本课程,你将掌握从“HPA不工作”到“精准定位根因”的完整排查能力,成为团队中Prometheus + HPA领域的专家。