Kubernetes HPA未按预期缩小规模
发生了什么事 我已使用以下详细信息配置了hpa:Kubernetes HPA未按预期缩小规模,kubernetes,horizontal-pod-autoscaling,horizontalpodautoscaler,Kubernetes,Horizontal Pod Autoscaling,Horizontalpodautoscaler,发生了什么事 我已使用以下详细信息配置了hpa: apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: api-horizontalautoscaler namespace: develop spec: scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: api-deplo
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: api-horizontalautoscaler
namespace: develop
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: api-deployment
minReplicas: 1
maxReplicas: 4
metrics:
- type: Resource
resource:
name: memory
targetAverageValue: 400Mib
我预期会发生什么:
当我们加载一些负载时,POD扩展到3个,平均内存超过了预期的400。现在平均内存已经下降到大约300个,尽管已经低于目标数几个小时了,但豆荚仍然没有缩小。
一天后:
我预计当内存降至400以下时,吊舱会缩小
环境:
- Kubernetes版本(使用
):kubectl版本
- 操作系统(例如:
):cat/etc/OS-release
- 内核(例如
): x86_64 x86_64 x86_64 GNU/Linuxuname-a
谢谢 有两件事要看:
- 委员会:
自动缩放/v2beta2
中找到。新领域
在自动缩放/v2beta2中引入的
使用自动缩放/v1
K8s 1.12中引入了autoscaling/v2beta2
,因此尽管您使用的是1.13(现在是6个主要的旧版本),但它应该可以正常工作(不过,建议升级到新版本)。尝试将您的apiVersion:
更改为autoscaling/v2beta2
- 委员会:
——水平吊舱自动缩放降尺度稳定化
:用于
此选项是一个持续时间,用于指定自动缩放器的持续时间
等待,然后在
当前一个已完成。默认值为5分钟(5ms
)
更改上述建议的API后,请检查此特定标志的值。HPA决定运行多少POD的公式如下:
根据您给出的数字,currentMetricValue
为3,currentMetricValue
为300 MiB,desiredMetricValue
为400 MiB,因此这将减少到
desiredReplicas = ceil[3 * (300 / 400)]
desiredReplicas = ceil[3 * 0.75]
desiredReplicas = ceil[2.25]
desiredReplicas = 3
您需要进一步降低负载(低于266 MiB平均内存利用率)或增加目标内存利用率,以便进一步缩小规模
(仅仅低于目标本身不会触发缩放,您必须足够低于目标,此公式才能生成较低的数字。如果负载正好在阈值附近,这有助于避免抖动,从而触发一个方向或另一个方向的缩放。)感谢您的回答。这是有道理的,但我显示的第二个屏幕截图显示内存大约为190M,这意味着使用公式,所需的副本应该是2。不是这样吗?TBH我也注意到了这一点,但指出@DavidMaze可能与k8s问题有误的想法对我来说是不对的;)谢谢我会试一试,然后再打给你。一些其他的优先事项出现了,我从来没有机会测试这个建议yetMany谢谢!这是现在的工作,因为我会预期,我得到了它的规模向上和向下。
> cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
desiredReplicas = ceil[3 * (300 / 400)]
desiredReplicas = ceil[3 * 0.75]
desiredReplicas = ceil[2.25]
desiredReplicas = 3