k8s HPA的扩缩触发条件

Autoscaler 控制器与聚合 API 获取到 Pod 性能指标数据之后,基于下面的算法计算出目标 Pod 副本数量,与当前运行的 Pod 副本数量进行对比,决定是否需要进行扩缩容操作:

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

即当前副本数 * (当前指标值/期望的指标值),将结果向上取整。

以 CPU 请求数量为例,如果用户设置的期望指标值为 100m,当前实际使用的指标值为 200,则结果得到期望的 Pod 副本数量应为两个(200/100=2)。如果设置的期望指标值为 50m,计算结果为 0.5,则向上取整为 1,得到目标 Pod 副本数量应为 1 个。

当结果计算与 1 非常接近时,可以设置一个容忍度让系统不做扩缩容操作。容忍度通过 kube-controller-manager 服务的启动参数 --horizontal-pod-autoscaler-tolerance 进行设置,默认值为 0.1(即 10%),表示基于上述算法得到的结果在 [-10% + 10% ] 区间内,即 [ 0.9 - 1.1],控制器都不会进行扩缩容操作。

大于10%则扩,低于10%则缩。

posted @ 2023-06-01 17:07  Dus  阅读(44)  评论(0编辑  收藏  举报