Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Автомасштабирование до нуля нод

Автоматическое масштабирование группы нод до нуля позволяет экономить ресурсы, когда они не используются. Это удобно для разовых задач — например, Job — или стейдж-окружений, которые неактивны ночью.

Масштабирование до нуля нод — это частный случай автомасштабирования. Поэтому принципы работы, ограничения и требования, описанные для обычного автомасштабирования, действуют и здесь.

Требования

Чтобы масштабирование до нуля работало, в кластере должна быть еще хотя бы одна группа с 1–2 постоянно активными нодами. Эти ноды нужны для системных компонентов Kubernetes

Настройка подов

Чтобы автоскейлер мог запускать ноды в нужной группе, укажите ID этой группы в манифесте через nodeSelector или nodeAffinity.

Как найти ID группы

  1. Перейдите в панель управления кластером.
  2. Откройте вкладку «Ресурсы».
  3. Нажмите на три точки рядом с нужной группой и выберите «Редактировать группу».

Scr 20250820 Kpwe

  1. ID группы будет указан в URL, например:

    

Здесь:

  • 1048329 — ID кластера,
  • 54289 — ID группы узлов.

Пример с nodeSelector:

    

Пример с nodeAffinity:

    

Когда масштабирование до нуля не сработает

Автоскейлер не сможет удалить последнюю ноду в группе в следующих случаях:

  • У пода установлена аннотация: cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
  • Поды нельзя переместить на другие узлы из-за ограничений планировщика.
  • Есть PodDisruptionBudget, который не позволяет удалить поды без превышения лимита.
  • Под не управляется контроллером (Deployment, StatefulSet, Job, ReplicaSet).

Практический пример

В этом примере создадим группу узлов с включенным масштабированием до нуля, запустим в ней Job и посмотрим, как кластер автоматически создаст ноду для выполнения задачи и удалит ее после завершения.

Предварительные требования

Существующий кластер Kubernetes хотя бы с одной группой нод.

Создание группы нод с масштабированием до нуля

  1. Перейдите во вкладку «Ресурсы» в панели управления.
  2. Нажмите «Добавить группу».
  3. Выберите конфигурацию воркер-нод.
  4. Включите переключатель «Автомасштабирование» и установите минимальное количество нод равным 0.

Scr 20250820 Luzj

После создания группы появится одна нода, которая будет автоматически удалена, если на ней не запущены пользовательские поды.

Теперь в кластере есть две группы:

  • группа с активными нодами, которые не масштабируются в 0;
  • группа с включенным масштабированием до 0. В нашем примере ее ID — 54289.

Scr 20250820 Lxah

Проверка существующих нод

Выполните команду:

    

Пример вывода:

    

Создание Job

Создайте файл job.yaml со следующим содержимым:

    

Это задание запускает контейнер с образом busybox, который выводит сообщение в лог 10 раз с интервалом 30 секунд.

Обратите внимание: в секции nodeSelector указан ID группы нод (54289).

Примените манифест:

    

Проверьте список подов:

    

Пример вывода:

    

Под находится в статусе Pending, так как в группе пока нет нод. Перейдите в раздел «Ресурсы» панели управления. Вы увидите, что началось создание ноды в группе с автомасштабированием. 

Scr 20250820 Mugx

После ее создания проверьте список нод:

    

Пример вывода:

    

worker-192.168.0.6 — это новая нода, созданная для Job.

Проверьте под снова:

    

Пример вывода:

    

Теперь под запущен.

Завершение задания и удаление ноды

После выполнения Job на ноду, где она запускалась, будет установлен тейнт. Посмотрите его командой:

    

Найдите строку:

    

Это означает, что нода помечена на удаление. Через 2 минуты после установки тейнта она будет удалена.

Проверьте это:

    
Была ли статья полезна?
Ваша оценка очень важна