首页 > 解决方案 > 我们可以在 Kubernetes 中使用 HPA 以固定块的方式将 Pod 扩展/扩展吗?

问题描述

我有一个托管在 EKS 中的 Web 应用程序,并且有一个用于 CPU 利用率的矩阵,用于水平扩展 Pod。

如果当前的 pod 数量为 10,并且我增加了负载(每分钟增加的请求数),那么所需的 pod 数量取决于我增加负载的积极程度,因此可能是 13、16 等。

但是我希望豆荚的数量应该始终以 5 的倍数增加并以 3 的倍数减少。这可能吗?

标签: kuberneteshpa

解决方案


通过文档和一些代码,这看起来不可能强制水平 pod 自动缩放器 (HPA) 缩小或放大 pod 的确切数量,因为它没有标志/选项。

您可以获得的最接近的是设置scaleDownscaleUp策略。

在示例下方(注意,这将适用于v2beta2api 版本),这部分应位于spec

behavior:
  scaleDown:
    stabilizationWindowSeconds: 300
    policies:
    - type: Pods
      value: 3
      periodSeconds: 15
  scaleUp:
    stabilizationWindowSeconds: 0
    policies:
    - type: Pods
      value: 5
      periodSeconds: 15

这意味着什么:

  • scaleDown每 15 秒最多执行 3 个 pod。
  • scaleUp每 15 秒最多执行 5 个 pod。
  • stabilizationWindowSeconds- 当用于缩放的指标不断波动时,稳定窗口用于限制副本的摆动。自动缩放算法使用稳定窗口来考虑过去计算的期望状态以防止缩放

这并不能保证 HPA 会扩大或缩小指定 pod 的确切数量,这只是一个策略。但是,如果工作量增加或减少会很快发生,它应该接近您希望看到的行为。

有用的链接:


推荐阅读