Enforced scaled to zero with Keda

Viewed 622

With plain HPAs it is possible to scale the underlying deployment manually to zero. This is required for eg. maintainance tasks. When scaling back to a value greater zero, the scaling continues as before. This is the command executed: kubectl scale deployment my-deployment --replicas=0

With KEDA however, this is not possible. The only place in the documentation states:

KEDA will not enforce that value, meaning you can manually scale the deployment to 0 and KEDA will not scale it back up. However, when KEDA itself is scaling the deployment it will respect the value set there.

I can not confirm this behaviour, nor does the previous scaling command works. Manually changing the minReplicas and maxReplicas to zero throws a lot of errors in the keda log, the same happens when pointing the deployment to an fake-value.

I need a way to scale to zero temporary (deleting the ScaledObject works of course, but then I need to store them somewhere, which is also errorprone and counterintuitive). This should work independant from the value of minReplicaCount.

Using Kubernetes 1.15, keda 1.5.0. Example 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"
0 Answers
Related