kubernetes 使用Keda强制缩放至零

3lxsmp7m  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(118)

使用普通HPA,可以将底层部署手动扩展到零。这是必须的,例如。维护任务。当缩放回大于零的值时,缩放像以前一样继续。这是执行的命令:第一个月
然而,对于KEDA,这是不可能的。文档中唯一的地方指出:
KEDA不会强制执行该值,这意味着您可以手动将部署扩展到0,KEDA不会将其扩展回来。但是,当KEDA本身扩展部署时,它将遵守那里设置的值。
我无法确认这种行为,之前的缩放命令也不起作用。手动将minReplicasmaxReplicas更改为零会在keda日志中引发大量错误,将部署指向假值时也会发生同样的情况。
我需要一种方法来扩展到零临时(删除ScaledObject当然可以,但是我需要将它们存储在某个地方,这也容易出错并且违反直觉)。这应该与minReplicaCount的值无关。
使用Kubernetes 1.15,keda 1.5.0. ScaledObject示例:

apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata: ... # left out
spec:
  cooldownPeriod: 600
  maxReplicaCount: 8
  minReplicaCount: 0
  pollingInterval: 30
  scaleTargetRef:
    containerName: main
    deploymentName: my-deployment
  scaleType: deployment
  triggers:
  - type: kafka
    ... # left out
status:
  externalMetricNames:
  - lagThreshold
  lastActiveTime: "2020-07-21T11:32:31Z"

字符串

v8wbuo2f

v8wbuo2f1#

很晚了,但希望能帮助一些像我这样几年后来到这里的人...
更新版本的KEDA文档不包含您提到的片段。但是,从2022年5月发布的KEDA 2.7开始,您可以在ScaledObject上应用autoscaling.keda.sh/paused-replicas注解来暂停自动缩放。此注解允许您保持副本数量不变(它可以是任何非负整数,不一定是0)。因此,如果出现问题,您应该将autoscaling.keda.sh/paused-replicas: "0"行添加到描述ScaledObject的YAML中,因此它看起来像这样:

apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
  annotations:
    autoscaling.keda.sh/paused-replicas: "0"
  ... # other annotations and metadata
spec:
  cooldownPeriod: 600
  maxReplicaCount: 8
  minReplicaCount: 0
  pollingInterval: 30
  scaleTargetRef:
    containerName: main
    deploymentName: my-deployment
  scaleType: deployment
  triggers:
  - type: kafka
    ... # left out
status:
  externalMetricNames:
  - lagThreshold
  lastActiveTime: "2020-07-21T11:32:31Z"

字符串
我用KEDA 2.10.1和K8s 1.26.4测试了它,工作起来很有魅力。
以下是相关文档和KEDA release notes

相关问题