Kubernetes中的水平缩放方法

时间:2020-01-13 09:28:39

标签: kubernetes azure-kubernetes

首先,我对Kubernetes还是很陌生,而且那里大量的不同架构和解决方案使得很难找到适合我特定需求的好资源。

所以我有一个集群,可以运行同一应用程序的许多克隆,这是一个无状态的高负荷python应用程序。我启用了垂直自动缩放功能,以在高峰时间添加更多节点,这将有助于有效地处理更大的流量。我不确定的是pod分配策略。

我想做的是让最大数量的空闲容器在我的节点中运行,以等待请求开始运行。 这种方法在概念上是否正确/可靠?是Kubernetes的“精神”,还是我以某种方式滥用了它?

我之所以要避免Pod自动缩放,是因为很难确定执行缩放的规则,而且我看不到好处,因为每个Pod基本上都有两种状态-空闲或已满-打开电源。

1 个答案:

答案 0 :(得分:1)

例如,如果要避免在高峰时段出现应用程序错误,则可以使用群集自动缩放器使某些资源处于空闲状态。

集群自动缩放器会根据您的资源使用情况来增加集群大小,但是这种缩放速度不是很快,有时可能需要几分钟,在配置集群自动缩放器时必须牢记这一点。

如果您已经知道高峰时间,那么可以安排增加群集上的节点数以等待高峰时间。

一开始,自动缩放总是很复杂,因为您永远不知道客户会怎样。没有一个神奇的公式可以执行此操作,我的建议是测试您拥有的所有选项,并尝试找到最适合您的工作负载的方法。

在这里,您可以了解如何在最常见的提供程序中配置群集自动缩放器:

Auto scaler GCE

Autoscaler GKE

Autoscaler AWS

Autoscaler Azure

Here上有一篇文章可以为您提供帮助。

关于容器资源分配,documentation提及:

如果未为容器指定CPU限制,则适用以下情况之一: -容器在可以使用的CPU资源上没有上限。容器可以使用运行它的节点上所有可用的CPU资源。 -容器在具有默认CPU限制的命名空间中运行,并且自动为容器分配了默认限制。群集管理员可以使用LimitRange指定CPU限制的默认值。

如果不需要,容器将不会分配资源,但是现在它们请求资源时,节点上的所有资源都会分配给容器。

如果您想平衡应用程序中的工作负载,则可以创建容器的副本,只有在您限制容器资源或知道每个容器/应用程序支持有限数量的请求时,才有意义。