0

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

请告诉我

谢谢

4

1 回答 1

2

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

我鼓励您仔细查看自动缩放算法的详细信息

从最基本的角度来看,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% 反应式的。

从不同的角度来看问题,使用水平 pod autoscaler的决定是一种主动的方法。但现在我要讨论的是用户管理其基础设施的方法,而不是我上面描述的hpa本身的机制。假设您根本不使用水平 pod 自动扩缩器,并且您的应用程序正在运行的一组刚性固定的 pod 上有时会出现意外的负载增加,并且由于这些增加,您的应用程序通常会变得不可用。

如果您手动管理这样的环境,那么您在这种情况下的反应就是决定向外扩展Deployment。你可能会同意我的观点,这是完全被动的方法。

但是,如果您决定使用hpa,您会主动预测此类负载增加的发生。它使您有可能始终领先一步,并在情况发生之前自动做出反应。因此,如果您决定Deployment在 CPU 使用率达到某个阈值时进行扩展,例如 50%(对于应用程序来说仍然是安全的,因此它会继续运行),hpa会根据您的预测自动为您处理这种情况。然而,水平 pod 自动扩缩器的反应是被动的(超过阈值时的反应),同时基础设施在这种时刻自动扩缩是主动的,因为自动扩缩器在情况变得危急之前采取行动。

我希望这对您对问题的理解有所帮助。

于 2020-10-06T11:50:42.590 回答