Kubernetes HPA自动缩放速度

时间:2019-10-24 15:05:11

标签: kubernetes kubernetes-hpa

我们为一个应用程序定义了HPA,具有最少1个副本和最多4个副本,阈值为80%cpu。

我们想要的是,如果pod cpu超过80%,则该应用程序需要一次放大1。 取而代之的是,应用程序正在按比例扩大到最大副本数。

我们如何定义标度速度以一次标定1个容器。再一次,如果其中一个Pod消耗的CPU超过80%,则再向上扩展一个Pod,但不增加最大副本数。

让我知道我们如何实现这一目标。

3 个答案:

答案 0 :(得分:1)

首先,80%的CPU利用率不是阈值,而是目标值。

用于计算所需副本数的HPA algorithm基于以下公式:

  

X = N * (C/T)

位置:

  • X:所需的副本数
  • N:当前副本数
  • C:指标的当前值
  • T:指标的目标值

换句话说,该算法旨在计算副本数,该副本数可使观测到的度量值尽可能接近目标值。

在您的情况下,这意味着如果应用程序Pod中的平均CPU使用率低于80%,则HPA倾向于减少副本数(使其余Pod的CPU使用率提高)。另一方面,如果各个Pod的平均CPU利用率高于80%,则HPA倾向于增加副本数,从而使单个Pod的CPU利用率降低。

在单个步骤中添加或删除的副本数取决于当前度量值与目标值之间的距离以及当前副本数。该决定是HPA算法的内部决定,您不能直接影响它。 HPA与用户签订的唯一合同是保持度量标准值尽可能接近目标值。

如果您需要非常特定的自动缩放行为,则可以编写自定义控制器(或运算符)来自动缩放应用程序,而不使用HPA。

答案 1 :(得分:0)

这-https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-details-解释了HPA使用的算法,包括用于计算“所需副本”数量的公式。

我记得,v1.12对HPA算法有一些(积极的)改变。

答案 2 :(得分:0)

截止到今天,HPA已完全控制规模扩大。您只能使用以下参数微调按比例缩小操作。

-水平吊舱自动定标器的降比例稳定

好消息是,有一个针对Configurable scale up/down velocity for HPA的提案