什么是 Kubernetes 的 Pod 水平扩缩容自定义指标?

来源:这里教程网 时间:2026-02-21 17:28:14 作者:

Kubernetes 的 Pod 水平扩缩容(Horizontal Pod Autoscaler,简称 HPA)可以根据工作负载的实际资源使用情况自动调整 Pod 的副本数量。除了 CPU 和内存这类默认指标外,HPA 还支持使用自定义指标(Custom Metrics)进行扩缩容决策,这就是所谓的“Pod 水平扩缩容自定义指标”。

自定义指标允许你基于应用特有的业务或性能数据来触发扩缩容,比如每秒请求数(QPS)、消息队列长度、订单处理速率等,从而更精准地响应真实负载变化。

自定义指标的工作原理

HPA 通过 Kubernetes 的 metrics API 获取指标数据。对于自定义指标,需要有相应的监控系统(如 Prometheus)配合适配器(如 Prometheus Adapter)将指标暴露给 Kubernetes 集群。

自定义指标由 custom.metrics.k8s.io API 提供 HPA 配置中引用这些指标,设定目标值(如目标 QPS 为 100) 控制器周期性获取指标值,并计算是否需要增加或减少 Pod 副本数

常见的自定义指标类型

你可以使用多种维度的自定义指标来驱动扩缩容:

HTTP 请求速率:例如来自 Prometheus 的
http_requests_per_second
消息队列积压数:如 Kafka 分区未处理消息数量 任务队列长度:Celery 或 RabbitMQ 中待处理任务数 业务延迟指标:平均响应时间超过阈值时扩容

如何配置自定义指标扩缩容

你需要在 HPA 资源中明确指定使用的自定义指标名称和目标值。

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Pods
    pods:
      metric:
        name: http_requests_per_second
      target:
        type: AverageValue
        averageValue: 100

这个配置表示:当每个 Pod 的平均每秒 HTTP 请求达到 100 时,HPA 会自动调整副本数以维持该水平。

实现前提与注意事项

集群需部署指标服务器和自定义指标适配器(如 Prometheus + Prometheus Adapter) 确保指标命名唯一且可被 HPA 查询到 避免使用波动剧烈的指标,可能导致频繁震荡扩缩(thrashing) 建议结合多指标(如 CPU + 自定义)做综合判断

基本上就这些。使用自定义指标让 HPA 更贴近实际业务需求,提升资源利用率和用户体验。

相关推荐