从Kubernetes v1.18开始,v2beta2 API允许通过Horizontal 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时缩小规模的方法的帮助。上面的链接说,按比例缩小可以通过单独的过程控制。不确定如何执行此操作?寻找一些指针。
谢谢。
答案 0 :(得分:0)
您可以使用periodSeconds
和stabilizationWindowSeconds
值来管理Pod终止之间的时间间隔,例如:
behavior:
scaleDown:
stabilizationWindowSeconds: 10
policies:
- type: Pods
value: 1
periodSeconds: 20
这样,它将每隔约30秒缩小1个窗格(或在periodSeconds
和stabilizationWindowSeconds
中使用任何值)。时间可能随时间而变化,具体取决于stabilizationWindowSeconds
的值。
periodSeconds
描述了每个Pod终止之间要经过多少时间,最大值为1800秒(30分钟)。
stabilizationWindowSeconds
,当指标指示目标应按比例缩小时,此算法将查看先前计算的期望状态,并使用指定间隔中的最大值。对于按比例缩小的默认值是300,最大值是3600(一小时)。