使用普通HPA,可以将底层部署手动扩展到零。这是必须的,例如。维护任务。当缩放回大于零的值时,缩放像以前一样继续。这是执行的命令:第一个月
然而,对于KEDA,这是不可能的。文档中唯一的地方指出:
KEDA不会强制执行该值,这意味着您可以手动将部署扩展到0,KEDA不会将其扩展回来。但是,当KEDA本身扩展部署时,它将遵守那里设置的值。
我无法确认这种行为,之前的缩放命令也不起作用。手动将minReplicas
和maxReplicas
更改为零会在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"
字符串
1条答案
按热度按时间v8wbuo2f1#
很晚了,但希望能帮助一些像我这样几年后来到这里的人...
更新版本的KEDA文档不包含您提到的片段。但是,从2022年5月发布的KEDA 2.7开始,您可以在
ScaledObject
上应用autoscaling.keda.sh/paused-replicas
注解来暂停自动缩放。此注解允许您保持副本数量不变(它可以是任何非负整数,不一定是0)。因此,如果出现问题,您应该将autoscaling.keda.sh/paused-replicas: "0"
行添加到描述ScaledObject
的YAML中,因此它看起来像这样:字符串
我用KEDA 2.10.1和K8s 1.26.4测试了它,工作起来很有魅力。
以下是相关文档和KEDA release notes。