kubectl get scaledobjects: Просмотр ScaledObject: статус, триггеры, текущий scaler
Просмотр ScaledObject: статус, триггеры, текущий scaler
Вот шпаргалка по команде, которую я использую почти каждый день для мониторинга автоскейлинга через KEDA. Она показывает, какие объекты у нас управляют масштабированием, на основе каких метрик и в каком они сейчас состоянии.
Базовый синтаксис
Самая простая команда выводит список всех ScaledObject в текущем namespace.
kubectl get scaledobjects
Что ты увидишь:
- NAME: Имя самого ScaledObject.
- SCALERS: Количество активных скалеров (триггеров). Если 0, масштабирование не работает.
- SCALEDOBJECT: Имя целевого ресурса (например, Deployment или StatefulSet), которым управляет KEDA.
- READY: Состояние готовности (
True/False).False— есть проблемы с конфигурацией триггера. - ACTIVE: Активен ли скалер (
True/False).Falseозначает, что триггер не активирован (например, длина очереди равна 0). - PAUSED: Находится ли масштабирование на паузе.
Полезные флаги
-n — проверка в другом namespace
Когда поды не масштабируются, первым делом смотрю, есть ли там вообще ScaledObject. Часто проблема в том, что его забыли создать в нужном namespace.
kubectl get scaledobjects -n data-processing
-o yaml — детальная диагностика проблемы
Если в колонке READY или ACTIVE стоит False, этой командой получаю полную конфигурацию. В выводе ищу секции status.conditions и spec.triggers.
kubectl get scaledobject my-queue-scaler -o yaml
В YAML смотрю на два ключевых места: status.conditions с сообщением об ошибке и spec.triggers, чтобы проверить корректность параметров (например, имя очереди или подключения).
Типичные сценарии
1. Поиск «мёртвых» ScaledObject
Ищу объекты, у которых триггеры не активны (ACTIVE = False), хотя нагрузка должна быть. Это может указывать на проблемы с источником метрик (например, недоступность очереди RabbitMQ) или неверные пороговые значения.
kubectl get scaledobjects -A | grep False
2. Проверка состояния скалеров перед деплоем
После обновления конфигурации ScaledObject через kubectl apply сразу смотрю его статус в широком формате, чтобы убедиться, что он перешёл в состояние Ready.
kubectl get scaledobject my-app -o wide
Частые ошибки
Ошибка: No resources found
Самая частая. Пользователь забывает указать namespace (-n), если контекст kubectl настроен на другое пространство, или ScaledObject действительно не создан. Всегда сначала проверяю правильность namespace.
Ошибка: Игнорирование колонки READY
Если READY = False, масштабирование не будет работать, даже если ACTIVE = True. Нужно сразу смотреть детали через kubectl get scaledobject <name> -o yaml и искать причину в status.conditions. Частые причины — ошибки в ссылке на Secret для подключения или неверный тип триггера.