Errors
KEDA

KEDA: Kubernetes enabling or disabling Keda and HPA

Ты развернул KEDA, настроил ScaledObject, автоскейлинг пошел работать. И теперь встает вопрос: а как его быстро и глобально приостановить? Не менять же maxRepli

Ты развернул KEDA, настроил ScaledObject, автоскейлинг пошел работать. И теперь встает вопрос: а как его быстро и глобально приостановить? Не менять же maxReplicaCount на текущее значение или не править каждый триггер вручную.

Часто первое, что приходит в голову — выставить replicaCount в деплойменте на фиксированное число и забыть про KEDA. Способ рабочий, но не очень элегантный. Придется потом вспоминать, какие были настройки min и max, да и deployment лишний раз тронуть.

Есть ли главный тумблер?

Прямо в ScaledObject или HPA такого поля enabled: false нет. Но есть кое-что получше — аннотация-пауза.

Вместо танцев с репликами можно просто сказать KEDA: «стой на месте и не двигайся». Для этого в ScaledObject добавляется одна аннотация:

metadata:
  annotations:
    autoscaling.keda.sh/paused-replicas: "0"

Само наличие этой аннотации полностью останавливает процесс автоскейлинга. Цифра "0" — это не количество реплик, а стоп-сигнал. KEDA зафиксирует текущее количество подов (или scale до указанного числа) и перестанет реагировать на любые метрики из триггеров.

Зачем это нужно

Классические сценарии — плановые работы в кластере или временная нехватка ресурсов. Нужно быстро приостановить не самые критичные нагрузки, но не сносить их полностью, а просто заморозить в текущем состоянии.

Важный нюанс: эта пауза работает только для KEDA. Стандартный HPA, если он у вас тоже настроен, продолжит жить своей жизнью. Поэтому если используете оба механизма, HPA нужно будет отключать отдельно.

Как снова включить

Всё до безобразия просто: удаляем аннотацию и сохраняем манифест.

kubectl annotate scaledobject/<your-scaledobject-name> autoscaling.keda.sh/paused-replicas-

KEDA подхватит изменение, и автоскейлинг снова начнет работать по первоначальным правилам. Ничего восстанавливать или вспоминать не нужно.

Что в сухом остатке

Когда нужна быстрая пауза — используй autoscaling.keda.sh/paused-replicas. Это чисто и атомарно. Когда нужно точечно отключить один триггер — правишь его параметры или maxReplicaCount.

Если же нужно выключить всё и надолго — возможно, стоит задуматься о деактивации самого ScaledObject или о переводе workload в другой неймспейс. Но для оперативных пауз аннотации более чем достаточно.