gpt4 book ai didi

docker - 如何防止在 Kubernetes 中由 HPA 创建的特定时间段内新扩展的 pod 缩减?

转载 作者:行者123 更新时间:2023-12-04 12:02:41 28 4
gpt4 key购买 nike

我在 DigitalOcean 中设置了一个 Kubernetes 集群。集群配置为使用 HPA(Horizo​​ntal Pod Autoscaler)自动扩展。我想防止终止在过去 1 小时内按比例放大的 pod,以避免颠簸和节省账单。
以下是两个相同的原因:

  • 由于不可预测的流量,有时新的 Pod 会在一小时内放大和缩小多次。由于应用程序的性质,50-60 个新用户需要一个新的 Pod 来处理流量。
  • DigitalOcean 液滴每小时收费。即使水滴上升 15 分钟,他们也会充电一个小时。因此,有时我们在一小时内支付 5 个液滴,而本可以只支付 1 个液滴。

  • 来自 documentation ,我找不到与此相关的任何内容。任何相同的黑客都会有所帮助。

    最佳答案

    是的,我们可以做到这一点。我目前正在做的这个实验几乎与你的问题有关。
    尝试在自动缩放时找到以下内容。

  • HPA 计算所需副本所需的时间
  • pod 启动所需的时间。
  • Droplet 旋转所需的时间。
  • pod 旋转所需的时间。
  • Droplet Spin down 所需的时间。

  • 案例 1:HPA 计算所需副本 (HPA) 所需的时间
    HPA 检测更改,立即或至少在 15 秒内获取指标。取决于 horizontal-pod-autoscaler-sync-period默认设置为 15 秒。一旦 HPA 获得 Metric,它就会计算 Replica Needed。
    案例 2:pod 启动所需的时间。 (HPA)
    一旦 HPA 计算出所需的副本,Pod 就会开始旋转。但这取决于 ScaleUp Policy .您可以根据您的用例进行设置。并且还取决于可用的 Droplet,集群自动缩放器
    例如:
    您可以告诉 HPA,嘿,请在 15 秒内启动 4 个 Pod,或者在 20 秒内启动 100% 的当前可用 Pod。
    现在 HPA 将决定选择任何人的策略,这会产生更大的影响(副本数量的大多数变化)。如 100% pods > 4 pods ,第二个策略接管,否则第一个策略可以接管。
    过程重复,直到到达所需的副本。
    如果您需要立即扩大 Pod 数量,则将策略设置为在 1 秒内启动 100% 的 Pod,因此它会尝试在每秒钟内启动 100% 的当前副本计数,直到与所需副本计数匹配。
    案例 3:Droplet 旋转所需的时间。 (集群自动扩缩器)
    所用时间:
  • 用于检测挂起的 Pod 并开始旋转液滴的集群自动缩放器:1 min 05 secs (大约)
  • 液滴旋转,但未就绪状态:1 min 20 secs
  • Droplet 到每个就绪状态:10 - 20 secs
  • Total Time taken to droplet Available: 2 min 40 secs (approx) 案例 4: pods 旋转所需的时间。 (HPA)
    这取决于 ScalDown Policy,就像案例 2 一样。
    案例 5:Droplet Spin down 所需的时间。 (集群自动扩缩器)
    在所有 Target pod 从 Droplet 终止之后(所用时间取决于情况 4)。
    Digital Ocean 将污点设置为节点,如 DeletionCandidate...=<timestamp>:NopreferSchedule污点设置十分钟后,液滴开始向下旋转。
    结论:
    如果您需要节点一小时才能保持事件状态(由于按小时收费,因此使用最大值)
    并且不超过一小时(如果超过 1 小时,则按 2 小时计费)
    您可以设置,StabilizatioWindowSeconds = 1 hr - DigitalOcean Time Interval 删除
    理论上, StabilizatioWindowSeconds = 1 hr - 10 mins = 50 mins (3000 secs)几乎
    所有 Pod 终止所需的时间可能因缩减策略、您的应用程序等而异...
    所以我设置了大约(根据我的情况) StabilizatioWindowSeconds = 1 hr - 20 mins = 40 mins (2400 secs)因此,您的 Scaled up pod 现在可以存活 40 分钟,并在 40 分钟后开始终止(在我的情况下,所有 pod 在最多 5 分钟内终止)。所以平衡 15 分钟让 digital ocean 摧毁水滴。
    注意:计算的时间取决于我的用例和环境等。
    添加 HPA 行为配置以供引用
    behavior:
    scaleDown:
    stabilizationWindowSeconds: 2400
    selectPolicy: Max
    policies:
    - type: percent
    value: 100
    periodSeconds: 15
    scaleUp:
    stabilizationWindowSeconds: 0
    selectPolicy: Max
    policies:
    - type: Percent
    value: 100
    periodSeconds: 1

    关于docker - 如何防止在 Kubernetes 中由 HPA 创建的特定时间段内新扩展的 pod 缩减?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62328075/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com