即使使用的内存超过指定的平均内存限制,Kubernetes HPA 也不会扩展

问题描述 投票:0回答:1

我有以下 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 时,如果我将 Pod 内存增加到 71%,HPA 不会扩展 Pod 数量。当我执行

kubectl describe hpa
时,我可以看到以下内容。

the desired count is within the acceptable range

但是根据 kubernetes 使用以下公式计算所需的 pod 数量,所需的 pod 数量应该是 2。

desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]

我等了几分钟才看到使用了一些稳定期(即使指定的 stableWindowSeconds 为 0),但它并没有增加 pod 的数量。

然后我尝试逐渐减少

averageUtilization
,只有当我将其设置为 64 时,它才会扩大并创建新的 pod。

为什么即使内存使用率高于指定的平均值,但当内存使用率低于某个值时,kubernetes 不扩展 pod 数量?

kubernetes autoscaling hpa horizontal-pod-autoscaling
1个回答
0
投票

您当前所需的 Pod 数量=

1\*(71/70)=1.014

根据此 kubernetes 文档:

如果比率足够接近 1.0(在全局可配置的容差范围内,默认为 0.1),控制平面将跳过任何缩放操作。

所以也许这就是你没有扩大新 Pod 规模的原因。

您还提到减少

averageUtilization to 64
就是扩展一个新的 pod。所需的数量是
1.1
,这就是您要扩大新 Pod 规模的原因。

© www.soinside.com 2019 - 2024. All rights reserved.