1

HPA - 如何避免因 CPU 利用率峰值而扩大规模(不是在启动时)当为不同国家/地区加载业务配置时,CPU 负载增加 1 分钟,但我们希望避免扩大那 1 分钟。

在图片下方,CurrentMetricValue 只是矩阵中的当前值或上次轮询到当前轮询持续时间的平均值--horizo​​ntal.-pod-autoscaler-sync-period

在此处输入图像描述

4

1 回答 1

1

默认 HPA 检查间隔为 30 秒。这可以通过您提到的通过更改--horizontal-pod-autoscaler-sync-period控制器管理器的标志值来配置。

Horizo​​ntal Pod Autoscaler 实现为控制循环,周期由控制器管理器的 --horizo​​ntal-pod-autoscaler-sync-period 标志控制。

在每个期间,控制器管理器根据每个 Horizo​​ntalPodAutoscaler 定义中指定的指标查询资源利用率。控制器管理器从资源指标 API(对于每个 pod 的资源指标)或自定义指标 API(对于所有其他指标)获取指标。

为了在 kube-controller-manager 中更改/添加标志 - 您应该可以访问/etc/kubernetes/manifests/主节点上的目录并能够修改/etc/kubernetes/manifests/kube-controller-manager.yaml 中的参数。

注意:您无法在 GKE、EKS 和其他托管集群上执行此操作。

更重要的是,我建议增加--horizontal-pod-autoscaler-downscale-stabilization(替换为--horizontal-pod-autoscaler-upscale-delay)。

如果您担心长时间中断,我建议您设置一个自定义指标(如果网络在 last 中关闭,则为 1 ${duration},否则为 0)并将指标的目标值设置为 1(除了基于 CPU 的自动缩放)。这边走:

${duration}如果基于自定义指标的最后建议中的网络出现故障,则将等于您的当前部署规模。此建议的最大值和非常低的 CPU 建议将等于当前部署的大小。在连接恢复之前不会出现缩减(+ 几分钟后,因为缩减稳定窗口)。

如果网络可用,基于指标的推荐将为 0。使用 CPU 推荐达到最大值后,它将等于 CPU 推荐,并且自动缩放器将正常运行。我认为这比限制自动缩放步骤的大小更能解决您的问题。限制自动缩放步骤的大小只会减慢 pod 数量减少的速度,因此更长的网络中断仍会导致您的部署缩小到允许的最小大小。

您还可以使用基于内存的缩放

由于无法在 Kubernetes 中创建基于内存的 hpa,因此编写了一个脚本来实现相同的功能。您可以通过单击此链接在此处找到我们的脚本:

https://github.com/powerupcloud/kubernetes-1/blob/master/memory-based-autoscaling.sh

克隆存储库:

https://github.com/powerupcloud/kubernetes-1.git

然后转到 Kubernetes 目录。执行帮助命令获取指令:

./memory-based-autoscaling.sh --help

在此处阅读更多内容:基于内存的自动缩放

于 2020-01-15T11:50:14.757 回答