kubernetes水平吊舱自动缩放是被动方法还是主动方法?

时间:2020-10-06 09:17:39

标签: kubernetes google-kubernetes-engine autoscaling kubernetes-pod horizontal-pod-autoscaling

我想知道kubernetes中的自动缩放功能是被动式还是主动式,并且它们是否仅基于规则

请让我知道

谢谢

1 个答案:

答案 0 :(得分:2)

这完全取决于您定义 active proactive 的方式。一方面,我会说反应性作为自动缩放决策所基于的指标,需要达到一定的值才能进行自动缩放过程。仅当某个动作基于某些事件的预测或预期时,它才会主动。负载增加例如您预计由于下周要推出的促销活动,应用程序的负载将增加约3倍。

我鼓励您仔细研究autoscaling algorithm details

从最基本的角度来看,Horizo​​ntal Pod Autoscaler控制器将根据所需度量值与当前度量值之间的比率进行操作:

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

例如,如果当前指标值为200m,并且期望 值为100m,副本数量将增加一倍,因为 200.0 / 100.0 == 2.0如果当前值为50m,我们将 从50.0 / 100.0 == 0.5开始,将副本数减半。我们将跳过 如果比率足够接近1.0(在 全局可配置的公差,从 --horizontal-pod-autoscaler-tolerance标志,默认为0.1)。

如您所见,所需的副本数是根据当前指标值计算的,并且只有当该值达到某个临界点时,才会触发自动缩放过程。因此,从这个角度来看,它是100%反应的。

从不同的角度来看问题,使用水平吊舱自动缩放器的决定是 proactive 方法。但是,现在我在谈论的是用户管理其基础结构的方法,而不是如上所述的 hpa 本身的机制。假设您根本不使用水平吊舱自动缩放器,并且有时您在运行应用程序的一组固定固定的吊舱上会出现意外负载增加,并且由于这些增加,您的应用程序通常变得不可用。< / p>

如果您手动管理此类环境,则在这种情况下的反应是决定扩展 Deployment的决定。您可能会同意我的观点,这是完全被动的方法。

但是,如果您决定使用 hpa ,则会主动预测这种负载的发生率增加。它使您可以始终领先一步,并在情况发生之前自动做出反应。因此,如果您决定在CPU使用率达到一定程度时扩展Deployment,例如50%(对于应用程序仍然安全,因此它可以继续运行), hpa 会根据您的预测自动为您处理情况。但是水平吊舱自动定标器的反应是反应性(对超出阈值的反应),与此同时,基础架构自动定标在这种情况下是 proactive ,因为自动定标器在情况严重之前采取行动。

我希望这可以帮助您理解问题。