在 KEDA 中暂停自动扩缩容

KEDA 允许您临时暂停工作负载的自动扩缩容,这在以下情况下非常有用:

  • 集群维护。
  • 通过缩减非关键工作负载避免资源匮乏。

操作步骤

立即暂停并保持当前从节点数

在您的 ScaledObject 定义中添加以下注解,以暂停扩缩容但不改变当前的从节点数:

metadata:
  annotations:
    autoscaling.keda.sh/paused: "true"

缩放到指定从节点数后暂停

使用此注解将工作负载缩放到指定的从节点数后暂停:

metadata:
  annotations:
    autoscaling.keda.sh/paused-replicas: "<number>"

两个注解同时设置时的行为

如果同时指定了 pausedpaused-replicas

  • KEDA 会将工作负载缩放到 paused-replicas 中定义的值。
  • 随后暂停自动扩缩容。

恢复自动扩缩容

要恢复自动扩缩容:

  • 从 ScaledObject 中移除 paused 和 paused-replicas 两个注解。
  • 如果只使用了 paused: "true",则将其设置为 false:
    metadata:
      annotations:
        autoscaling.keda.sh/paused: "false"

缩容至零

示例 ScaledObject 配置:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: example-scaledobject
  namespace: <your-namespace>
  annotations:
    autoscaling.keda.sh/paused-replicas: "0"  # 缩容至 0 个从节点并暂停

验证

要验证 ScaledObject 是否已缩容至零,可以检查目标 Deployment 的从节点数:

kubectl get deployment <your-deployment> -n <your-namespace>

或者检查目标 Deployment 中的 Pod 数量:

kubectl get pods -n <your-namespace> -l <your-deployment-label-key>=<your-deployment-label-value>

Pod 数量应为零,表示该 Deployment 已缩容至零。