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

时间:2020-06-25 02:51:16

标签: kubernetes kubernetes-pod kubernetes-statefulset horizontal-pod-autoscaling

从Kubernetes v1.18开始,v2beta2 API允许通过Horizo​​ntal Pod Autoscalar(HPA)行为字段配置缩放行为。 我正计划将具有自定义指标的HPA应用于StatefulSet

我正在查看的用例是使用自定义指标(例如,我的应用程序上的用户会话数)进行横向扩展,但是HPA根本不会缩减。 K8的SIG自动缩放增强功能-"Configurable scale velocity for HPA >> Story 4: Scale Up As Usual, Do Not Scale Down"也描述了该用例。

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

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

由于这是一个StatefulSet,并且不能突然缩小,因此我正在寻求有关新副本上的用户会话数降至0时缩小规模的方法的帮助。上面的链接说,按比例缩小可以通过单独的过程控制。不确定如何执行此操作?寻找一些指针。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

periodSeconds描述了每个Pod终止之间要经过多少时间,最大值为1800秒(30分钟)。

stabilizationWindowSeconds,当指标指示目标应按比例缩小时,此算法将查看先前计算的期望状态,并使用指定间隔中的最大值。对于按比例缩小的默认值是300,最大值是3600(一小时)。