You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AverageValue而非Utilization时HPA无法扩缩容Pods的问题

HPA使用AverageValue不触发扩缩容的原因与解决

问题根源:目标值单位缺失

你在HPA配置中设置的averageValue: 50未指定单位,Kubernetes默认会将其解析为50 CPU核,而你的Pod实际CPU使用量仅为501毫核(即0.501核),远低于50核的阈值,因此HPA判定当前状态符合预期,不会触发扩缩容。

从kubectl get hpa的输出可以直观看到这个单位差异:

php-apache   Deployment/php-apache   501m/50   1         10        1          60s

这里的501m是当前Pod的CPU使用量(毫核),而目标值50被识别为50核,两者量级相差1000倍。

修复方案

修改HPA配置,为averageValue添加正确的资源单位(比如50m表示50毫核),调整后的完整配置如下:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
  namespace: default
spec:
  maxReplicas: 10
  metrics:
  - resource:
      name: cpu
      target:
        averageValue: 50m  # 明确指定单位为毫核
        type: AverageValue
    type: Resource
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache

额外说明

  • 使用Utilization指标时,目标值是Pod CPU请求(request)的百分比,无需额外单位,因此HPA能正常计算并触发扩缩。
  • Kubernetes资源单位规则:m代表毫核(1核=1000m),n代表纳核,日常场景下使用m即可满足需求。

内容的提问来源于stack exchange,提问作者Gaurav Parashar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:05:20