我希望你能对此有所了解。
我面临着与这里描述的相同的问题:即使使用率低于阈值,Kubernetes的部署也没有缩减
我的配置几乎完全相同。
我已经检查了hpa算法,但我找不到一个解释,因为我只有一个my-app3的副本。有什么提示吗?
kubectl获取hpa-A命名空间名称引用目标MINPODS MAXPODS副本年龄my-ns1 my-app1部署/my-app1 49%/75%,2%/75%1 10 2 20hmy-ns2 my-app2部署/my-app2 50%/75%,10%/75%1 10 2 22小时my-ns2 my-app3部署/my-app3 47%/75%,10%/75%1 10 1 22h
kubectl top po-A名称空间名称CPU(核心(内存(字节(my-ns1 pod-app1-8d694bc8f-mkbrh 1m 76Mimy-ns1 pod-app1-8d694bc8f-qmlnw 1m 72Mimy-ns2 pod-app2-59d895d96d-86fgm 1m 77Mimy-ns2 pod-app2-59d895d96d-zr67g 1m 73Mimy-ns2 pod-app3-6f8cbb68bf-vdhsd 1m 47Mi
发布这个答案,因为它可能会让社区成员受益,了解Horizontal Pod Autoscaler
为什么决定不在这个特定设置中扩展副本数量。
复制副本工作量的公式是:
desiredReplicas=ceil[currentReplicas*(currentMetricValue/deiredMetricValue(]
以下是对HPA
:的描述
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
HPA
在复制副本的当前数量的前提下决定复制副本的数量。
附带说明:在使用多个度量(例如CPU
和RAM
(的设置中,它将使用更高的度量并相应地采取行动。
此外,请考虑缩小规模有一个冷却时间。
每个Deployments
的计算
ceil[]
-向上取整一个数字:
- ceil(4,55(=5
- ceil(4,01(=5
app1
:
Replicas
=Ccil[2
*(49
/75
(]Replicas
=细胞[2
*0,6533..
]Replicas
=细胞[1,3066..
]Replicas
=2
此示例显示复制副本的数量不会发生变化。
复制副本数量将减少:
- 当
currentMetricValue
(49
(将超过desiredMetricValue
(75
(时向上 - 下降当
currentMetricValue
(49
(将小于desiredMetricValue
(75
(的一半时
app2
与app1
处于相同的情况,因此可以跳过
app3
:
Replicas
=Ccil[1
*(49
/75
(]Replicas
=细胞[1
*0,6266..
]Replicas
=细胞[0,6266..
]Replicas
=1
此示例还表明复制副本的数量不会发生变化。
复制副本数量将减少:
- 当
currentMetricValue
(47
(将超过desiredMetricValue
(75
(时向上
其他资源:
- Kubernetes.io:文档:任务:运行应用程序:水平pod自动缩放
事实上,根据我的研究,HPA算法似乎是这样工作的:https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-详细信息
不知道为什么my-app3被分配了一个副本,其他两个应用程序被分配了两个副本,但根据算法,此时不需要扩展。