Kubernetes HPA未按比例缩小

Kubernetes HPA未按比例缩小,kubernetes,hpa,Kubernetes,Hpa,我希望你能对此有所了解 我面临的问题与这里描述的相同: 我的配置几乎相同 我已经检查了hpa算法,但是我找不到一个解释,说明我只有一个my-app3的副本。 有什么提示吗 kubectl get hpa -A NAMESPACE NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-ns1 my-app1

我希望你能对此有所了解

我面临的问题与这里描述的相同:

我的配置几乎相同

我已经检查了hpa算法,但是我找不到一个解释,说明我只有一个my-app3的副本。 有什么提示吗

kubectl get hpa -A NAMESPACE NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-ns1 my-app1 Deployment/my-app1 49%/75%, 2%/75% 1 10 2 20h my-ns2 my-app2 Deployment/my-app2 50%/75%, 10%/75% 1 10 2 22h my-ns2 my-app3 Deployment/my-app3 47%/75%, 10%/75% 1 10 1 22h kubectl获得hpa-A 命名空间名称引用的目标是MINPODS MAXPODS副本 my-ns1 my-app1部署/my-app1 49%/75%,2%/75%1102 20h my-ns2 my-app2部署/my-app2 50%/75%,10%/75%1 10 2 22小时 my-ns2 my-app3部署/my-app3 47%/75%,10%/75%110 22小时 kubectl top po-A 名称空间名称CPU(核心)内存(字节) my-ns1 pod-app1-8d694bc8f-mkbrh 1m 76Mi my-ns1 pod-app1-8d694bc8f-qmlnw 1m 72Mi my-ns2 pod-app2-59d895d96d-86fgm 1m 77Mi my-ns2 pod-app2-59d895d96d-zr67g 1m 73Mi my-ns2 pod-app3-6f8cbb68bf-vdhsd 1m 47Mi
事实上,根据我的研究,HPA算法似乎是这样工作的:


不知道为什么my-app3分配了一个副本,而另外两个应用分配了两个副本,但根据算法,此时不需要扩展。

发布此答案,因为社区成员可能会受益于此,了解为什么
水平吊舱自动缩放器
决定扩展此特定设置中的副本数量

副本工作量的计算公式为:

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

以下是对HPA的描述:

命名空间名称引用的目标是MINPODS MAXPODS复制副本
my-ns1 my-app1部署/my-app1 49%/75%,2%/75%1102 20h
my-ns2 my-app2部署/my-app2 50%/75%,10%/75%1 10 2 22小时
my-ns2 my-app3部署/my-app3 47%/75%,10%/75%110 22小时
HPA
根据副本的当前数量决定副本的数量

旁注:在使用多个指标(例如
CPU
RAM
)的设置中,它将使用更高的指标并相应地采取行动

也请考虑。


对每个
部署的计算
ceil[]
-将数字四舍五入:

  • ceil(4,55)=5
  • ceil(4,01)=5
app1

  • 副本
    =ceil[
    2
    *(
    49
    /
    75
    )]
  • 副本
    =ceil[
    2
    *
    06533..
    ]
  • 副本
    =ceil[
    13066..
    ]
  • 副本
    =
    2
此示例显示复制副本的数量不会发生任何更改

复制副本的数量将减少:

  • Up
    currentMetricValue
    49
    )将超过
    所需的度量值时(
    75
  • currentMetricValue
    49
    )将小于
    所需计量值的一半时
    75
app2
app1
处于相同的情况,因此可以跳过它

app3

  • 副本
    =ceil[
    1
    *(
    49
    /
    75
    )]
  • 副本
    =ceil[
    1
    *
    06266..
    ]
  • 副本
    =ceil[
    06266..
    ]
  • 副本
    =
    1
此示例还显示,复制副本的数量不会发生任何更改

复制副本的数量将减少:

  • Up
    currentMetricValue
    47
    )超过
    所需的度量值时(
    75

额外资源:


为什么您会有更多?它的CPU是1m?而且,与AKS完全无关。同时阅读链接线程中的答案。我发现奇怪的是,所有HPA的currentMetricValue/desiredMetricValue几乎相同,但这一个仍然为1。事实上,根据公式,没有必要扩大吊舱。@Catalin正如我看到的,您已经找到了
HPA
没有扩大/缩小
部署的原因。如果您找到了原因,请回答您的问题,以帮助社区解决类似问题。PS:
my-app3
将在目标值高于75%时扩展到2个副本<当目标值小于37.5%时,代码>my-app2
将扩展到1个副本。 kubectl top po -A NAMESPACE NAME CPU(cores) MEMORY(bytes) my-ns1 pod-app1-8d694bc8f-mkbrh 1m 76Mi my-ns1 pod-app1-8d694bc8f-qmlnw 1m 72Mi my-ns2 pod-app2-59d895d96d-86fgm 1m 77Mi my-ns2 pod-app2-59d895d96d-zr67g 1m 73Mi my-ns2 pod-app3-6f8cbb68bf-vdhsd 1m 47Mi