Автоматическое масштабирование группы узлов

Managed Kubernetes поддерживает автоматическое масштабирование группы узлов в кластере (Cluster Autoscaler, CA). Сервис наблюдает за состоянием подов и нагрузкой на рабочие узлы и добавляет или удаляет узлы на основе запрошенных ресурсов.

Автоматическое увеличение количества узлов обеспечивает высокую доступность и производительность приложений, расширяя кластер Managed Kubernetes в соответствии с текущей загрузкой и ограничениями.

Автоматическое уменьшение количества узлов позволяет оптимизировать использование ресурсов и снизить затраты.

Параметры автомасштабирования

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

Включить автоматическое масштабирование и указать минимальное и максимальное количество узлов можно при создании или редактировании группы узлов.

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

Количество рабочих узлов в группе

Cluster Autoscaler

Поведение

Ниже, чем минимальное количество узлов, которое хотим указать.

Увеличивает количество узлов до нового значения минимального количества узлов.

Группа узлов не будет масштабироваться ниже указанного значения.

В пределах указываемого минимального и максимального размера.

Уменьшает или увеличивает количество узлов в зависимости от спроса.

Размер группы узлов будет масштабироваться в указанных пределах.

Выше, чем максимальное количество узлов, которое хотим указать.

Уменьшает количество узлов до нового значения максимального количества узлов.

Группа узлов не будет масштабироваться выше указанного значения.

Managed Kubernetes поддерживает автоматическое масштабирование группы узлов до нуля.

Увеличение количества узлов

Если рабочие узлы в кластере не могут обеспечить достаточное количество ресурсов для запуска новых подов, функция автоматического масштабирования кластера добавляет новые узлы. Количество узлов не может увеличиваться выше указанного максимального количества.

На схеме ниже показано автоматическое увеличение количества узлов.

Увеличение количества узлов при автомасштабировании

Как работает:

  1. Два пода ожидают распределения на рабочие узлы, но вычислительная мощность рабочих узлов достигнута.

  2. Если количество рабочих узлов меньше заданного пользователем максимального, будет запрошено предоставление нового узла.

  3. Как только узел развернут и обнаружен плоскостью управления, планировщик распределит ожидающие поды на новом узле.

Уменьшение количества узлов

При автомасштабировании в Managed Kubernetes происходит удаление узла, если выполняются условия:

  • использование ресурсов узла в течение 10 минут ниже порогового значения в 50%;

  • все поды могут быть перемещены на другой узел;

  • не достигнут порог минимального числа узлов.

На схеме ниже показано автоматическое уменьшение количества узлов.

Уменьшение количества узлов при автомасштабировании

Как работает:

  1. Использование ресурсов третьего узла ниже 50% в течение 10 минут.

  2. На третьем узле развернут один под, который можно перераспределить на первый или второй узел.

  3. Если количество рабочих узлов больше заданного пользователем минимального, третий узел удаляется.

Ограничения и особенности

Некоторые типы подов могут запретить удаление узла при масштабировании вниз. Например:

  • Поды с ограничением PodDisruptionBudget, если удаление узла превысило бы указанное значение.

  • Для пода установлена аннотация cluster-autoscaler.kubernetes.io/safe-to-evict": "false".

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

  • Поды не управляются Deployment, StatefulSet, Job или ReplicaSet.

Подробнее об особенностях и ограничениях читайте в разделе Frequently Asked Questions документации Kubernetes Autoscaler.

Пример

Создание группы узлов с автоматическим масштабированием, изменение политики масштабирования и обновление параметров автомасштабирования описано в сценарии Настройка автомасштабирования группы узлов.

Запустили Evolution free tier
для Dev & Test
Получить