1

我们为应用程序定义了 HPA,使其具有最小 1 个和最大 4 个副本,以 80% cpu 作为阈值。

我们想要的是,如果 pod cpu 超过 80%,应用程序需要一次扩展 1 个。相反,正在发生的事情是应用程序正在扩大到最大数量的副本。

我们如何定义一次缩放 1 个 pod 的缩放速度。同样,如果其中一个 pod 消耗超过 80% 的 cpu,则再扩展一个 pod,但不是最大副本数。

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

4

3 回答 3

1

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

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

X = N * (C/T)

在哪里:

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

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

在您的情况下,这意味着如果您的应用程序的 pod 的平均 CPU 利用率低于 80%,HPA 倾向于减少副本数量(以使剩余 pod 的 CPU 利用率上升)。另一方面,如果跨 Pod 的平均 CPU 利用率在 80% 以上,HPA 倾向于增加副本数,从而降低单个 Pod 的 CPU 利用率。

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

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

于 2019-10-26T13:14:36.733 回答
0

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

如果我记得,v1.12 对 HPA 算法进行了一些(积极的)更改。

于 2019-10-24T17:27:55.507 回答
0

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

--horizo​​ntal-pod-autoscaler-downscale-stabilization

好消息是,有一个关于HPA 的可配置纵向扩展/缩减速度的提议

于 2019-10-24T21:10:14.807 回答