如何设置 Kops 集群自动缩放器的冷却时间?

How to set cooldown period for the Kops cluster autoscaler?

自动缩放器插件效果很好,但它默认为不需要的节点设置 10 分钟的冷却时间。由于 AWS 按秒计费,我们希望更快地缩小规模以降低成本。

是否可以在 kops InstanceGroup 或集群自动缩放器中配置冷却时间?

https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#i-have-a-couple-of-nodes-with-low-utilization-but-they-are-not-scaled-down-why

node was unneeded for less than 10 minutes (configurable by --scale-down-unneeded-time flag)

所以,它会喜欢

          command:
            - ./cluster-autoscaler
            ...
            - --scale-down-unneeded-time=5m

您需要在部署配置文件中定义自动缩放器时应用 --scale-down-unneeded-time 标志:

这是一个例子:

 command:
   - ./cluster-autoscaler
   - --cloud-provider=aws
   - ...
   - --scan-interval=25s
   - --scale-down-unneeded-time=30s

添加 --scan-interval 标记也很有用。

还要记住,短冷却会导致过度缩放/缩放不足。

冷却时间应该 至少 目标指标在缩放事件后达到其新“正常”所需的时间。如果您的 CPU 利用率在扩展 2 倍后下降约 50% 需要三分钟,冷却时间少于三分钟会导致 AWS 在之前的扩展有时间对您的指标生效之前再次扩展,导致它超出必要的横向扩展。

看看:autoscaling-aws, kubernetes-autoscaler, autoscaler-aws-kubernetes.