使用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
相关产品推荐
相关产品推荐

