Kubernetes HPA内存利用率计算逻辑及阈值基准疑问
你观察到的HPA默认基于内存request计算利用率的逻辑完全符合Kubernetes官方设计规则,是正确的。
核心逻辑说明
- HPA中
type: Utilization类型的资源指标,默认强制以对应Pod的资源request值作为计算基准,和资源limit没有关联。你在kd hpa返回结果里也能看到明确标注(as a percentage of request),就是对计算基准的官方说明。 - 你的实际数值也验证了这套逻辑:Deployment配置的内存request为
256Mi,当前3个Pod平均内存占用为81Mi,81/256≈31%,和HPA显示的当前利用率完全匹配。 - Kubernetes选择request作为默认计算基准的原因:request是Kubernetes调度Pod时的资源预留依据,节点可分配资源按所有已调度Pod的request总和核算,基于request做扩缩容可以保证扩容出来的Pod能正常调度到有足够预留资源的节点,避免出现Pod因节点资源不足一直处于Pending状态的问题。
基于limit计算利用率的配置方式
如果你的业务场景需要以内存limit作为利用率计算基准,可以将HPA的指标类型改为type: AverageValue,直接设置绝对阈值即可。比如你配置的内存limit为1Gi,要设置70%阈值的话,对应配置如下:
- type: Resource resource: name: memory target: type: AverageValue averageValue: 700Mi
内容的提问来源于stack exchange,提问作者DmitrySemenov
相关产品推荐
相关产品推荐

