如何防止 Kubernetes 水平自动扩缩器缩容?
Posted
技术标签:
【中文标题】如何防止 Kubernetes 水平自动扩缩器缩容?【英文标题】:How to prevent Kubernetes horizontal auto-scaler from scaling down? 【发布时间】:2019-11-16 02:49:39 【问题描述】:我创建了一个基于 cpu 使用情况的水平自动缩放器,它工作正常。我想知道如何配置自动缩放器,使其只放大而不缩小?我想要这样的事情的原因是,当我有高负载/请求时,我创建了一些操作符,但我想让它们保持活力,即使在一段时间内它们不做任何事情,但自动缩放器会杀死 pod 并缩小到如果没有负载,则在某个时间后的最小副本数。
我的自动缩放器:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: gateway
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: gateway
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 20
编辑: 操作员是指在 pod 中运行的小型应用程序/程序。
【问题讨论】:
运营商是什么意思?它是为有状态容器执行后处理步骤的框架吗? 您为什么不简单地将 pod 的最小数量锁定在您希望拥有的值?如果您的 targetCpu 为 20,您可能会遇到另一个问题......您可能希望使用另一个值作为放大目标...... 我编辑了我的问题并添加了我所说的操作员的意思。 @night-gold 我不想保留资源,我只想在需要时进行扩展,但我想让那些在扩展 pod 中运行的小程序保持活力,以防我再次需要它们,比如 10-20分钟。我发现了这些标志:--horizontal-pod-autoscaler-downscale-stabilization
和 --horizontal-pod-autoscaler-downscale-delay
,我认为它们有助于解决我的问题。那 20 只用于测试和基准测试,而不是用于生产。
【参考方案1】:
您可以按照in docs 的描述将--horizontal-pod-autoscaler-downscale-stabilization
标志添加到kube-controller-manager。默认延迟设置为 5 分钟。
在 master 节点上添加标志到 kube-controller-manager edit /etc/kubernetes/manifests/kube-controller-manager.yaml
,pod 将被重新创建。
【讨论】:
以上是关于如何防止 Kubernetes 水平自动扩缩器缩容?的主要内容,如果未能解决你的问题,请参考以下文章