繁体   English   中英

Kubernetes HPA(带有自定义指标)扩展策略

[英]Kubernetes HPA (with custom metrics) scaling policies

从 Kubernetes v1.18 开始,v2beta2 API 允许通过 Horizontal Pod Autoscalar (HPA) 行为字段配置缩放行为。 我打算将带有自定义指标的 HPA 应用于 StatefulSet

我正在查看的用例是使用自定义指标(例如我的应用程序上的用户会话数)进行横向扩展,但 HPA 根本不会缩减。 K8s SIG-Autoscaling 增强功能也描述了此用例 - “HPA 的可配置缩放速度 >> 故事 4:照常放大,不要缩小”

behavior:
  scaleDown:
    policies:
    - type: pods
      value: 0

用户会话可以保持活跃几分钟到几小时。 从 StatefulSet 的 1 个副本开始,随着用户会话数达到上限(使用 Prometheus 收集器公开,然后使用 HPA 自定义指标选项进行配置),应用程序 pod 将向外扩展。 新的 Pod 将开始为新用户提供服务。

由于这是一个 StatefulSet 并且不能突然缩小,因此我正在寻求帮助,以便在新副本 go 上的用户会话降至 0 时缩小规模 上面的链接说缩小可以通过一个单独的过程来控制。 不知道该怎么做? 寻找一些指针。

谢谢。

您可以使用periodSecondsstabilizationWindowSeconds值来管理 pod 终止之间的时间间隔,例如:

  behavior:
    scaleDown:
      stabilizationWindowSeconds: 10
      policies:
      - type: Pods
        value: 1
        periodSeconds: 20

这样,它将每约 30 秒缩小 1 个 pod(或在periodSecondsstabilizationWindowSeconds中使用的任何值)。 时间可能会随着时间的推移而变化,具体取决于stabilizationWindowSeconds值。

periodSeconds描述了每个 Pod 终止之间的时间间隔,最大值为 1800 秒(30 分钟)。

当指标表明目标应该按比例缩小时, stabilizationWindowSeconds会查看先前计算的所需状态并使用指定间隔中的最大值。 缩减默认值为 300,最大值为 3600(一小时)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM