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

Kubernetes HPA内存使用率超阈值却不扩容问题咨询

Kubernetes HPA未触发扩容的原因解析

问题场景

你的HPA配置如下:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
  behavior:
    scaleUp:
      policies:
      - periodSeconds: 15
        type: Pods
        value: 4
      - periodSeconds: 15
        type: Percent
        value: 100
      selectPolicy: Max
      stabilizationWindowSeconds: 0
  metrics:
  - resource:
      name: memory
      target:
        averageUtilization: 70
        type: Utilization
    type: Resource
  minReplicas: 1
  maxReplicas: 10

当单Pod内存使用率升至71%时,HPA未执行扩容,kubectl describe hpa输出the desired count is within the acceptable range;直到将averageUtilization下调至64%,HPA才触发扩容。

核心原因:HPA的容忍度机制

Kubernetes HPA默认内置容忍度(由horizontal-pod-autoscaler-tolerance参数控制,默认值为0.1,即10%),用于避免指标小幅波动引发的频繁扩缩容。

该容忍度会划定一个指标可接受范围:

  • 上限:目标指标值 × (1 + 容忍度)
  • 下限:目标指标值 × (1 - 容忍度)

只要当前指标落在这个区间内,HPA就会判定当前副本数处于合理范围,不会触发扩缩容操作。

对应你的场景计算

目标内存使用率为70%,默认10%容忍度:

  • 可接受上限:70% × 1.1 = 77%
  • 可接受下限:70% × 0.9 = 63%

当Pod内存使用率为71%时,处于70%~77%的可接受区间,因此HPA不会触发扩容。

当你将averageUtilization调整为64%时,可接受上限变为64% × 1.1 = 70.4%,此时71%的使用率超出了该上限,HPA才会计算出需要扩容至2个Pod并执行操作。

验证与调整方案

  • 查看集群容忍度配置:检查kube-controller-manager的启动参数,确认--horizontal-pod-autoscaler-tolerance的当前值。
  • 调整容忍度:若需要更敏感的扩缩容,可以修改kube-controller-manager的该参数(例如设为0.05即5%),但需注意过小将导致Pod数量频繁波动。

内容的提问来源于stack exchange,提问作者Lahiru Chandima

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:46:05