Eti*_*tin 0 autoscaling kubernetes kubernetes-pod horizontal-pod-autoscaling
我\xe2\x80\x99m 很难理解我的水平 Pod 自动缩放器发生了什么\xe2\x80\x99s。
\n\n如果内存或 CPU 使用率超过 80%,I\xe2\x80\x99m 会尝试扩展我的部署。
\n\n这里\xe2\x80\x99是我的HPA模板:
\n\napiVersion: autoscaling/v2beta2\nkind: HorizontalPodAutoscaler\nmetadata:\n name: my-hpa\nspec:\n scaleTargetRef:\n apiVersion: apps/v1\n kind: Deployment\n name: my-deployment\n minReplicas: 2\n maxReplicas: 10\n metrics:\n - type: Resource\n resource:\n name: cpu\n target:\n type: Utilization\n averageUtilization: 80\n - type: Resource\n resource:\n name: memory\n target:\n type: Utilization\n averageUtilization: 80\nRun Code Online (Sandbox Code Playgroud)\n\n问题是,尽管使用率低于 80%,但它\xe2\x80\x99 已经在 3 个副本上呆了好几天了,而且我不\xe2\x80\x99 不明白为什么。
\n\n$ kubectl get hpa --all-namespaces\n\nNAMESPACE NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE\nmy-ns my-hpa Deployment/my-deployment 61%/80%, 14%/80% 2 10 3 2d15h\nRun Code Online (Sandbox Code Playgroud)\n\n这里\xe2\x80\x99是top命令的输出:
\n\n$ kubectl top pods\n\nNAME CPU(cores) MEMORY(bytes) \nmy-deployment-86874588cc-chvxq 3m 146Mi \nmy-deployment-86874588cc-gkbg9 5m 149Mi \nmy-deployment-86874588cc-nwpll 7m 149Mi \nRun Code Online (Sandbox Code Playgroud)\n\n每个 Pod 消耗大约 60% 的请求内存(因此它们低于 80% 的目标):
\n\n$ kubectl get hpa --all-namespaces\n\nNAMESPACE NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE\nmy-ns my-hpa Deployment/my-deployment 61%/80%, 14%/80% 2 10 3 2d15h\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的部署:
\n\n$ kubectl top pods\n\nNAME CPU(cores) MEMORY(bytes) \nmy-deployment-86874588cc-chvxq 3m 146Mi \nmy-deployment-86874588cc-gkbg9 5m 149Mi \nmy-deployment-86874588cc-nwpll 7m 149Mi \nRun Code Online (Sandbox Code Playgroud)\n\n我手动缩小到 2 个副本,但它立即无缘无故地恢复到 3 个:
\n\nNormal SuccessfulRescale 28s (x4 over 66m) horizontal-pod-autoscaler New size: 3; reason:\nRun Code Online (Sandbox Code Playgroud)\n\n有人知道\xe2\x80\x99s 发生了什么吗?
\n小智 5
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-details
根据您当前的数字,除非您的内存使用量下降到所需百分比的一半,否则它永远不会缩小。
即 CPU 和内存的当前利用率应达到 40%(在您的情况下)或更低
根据下面的公式
desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
= ceil[3 * (61/80)]
= ceil[3 * (0.7625)]
= ceil[2.2875]
desiredReplicas = 3
Run Code Online (Sandbox Code Playgroud)
你可能会怀疑你的CPU低于40%为什么它没有降级..但是hpa不会以这种方式工作..它总是会寻找更大的数字。
| 归档时间: |
|
| 查看次数: |
4571 次 |
| 最近记录: |