Масштабирование узлов
В графическом интерфейсе платформы «Штурвал» доступно управление количеством узлов ранее созданных кластеров (клиентские кластеры, кластер управления).
Инструкция применима для кластеров c провайдерами:
- Basis Dynamix;
- oVirt (zVirt, HostVM, РЕД Виртуализация, ROSA Virtualization);
- VMware vSphere;
- OpenStack (VK Cloud, Selectel);
- Yandex Cloud;
- vCloud Director.
Чтобы изменить количество узлов в кластере с провайдером Shturval v2, используйте инструкции Добавить хосты и Уменьшить число узлов в группе.
Управление доступно в конфигурации групп узлов. Вы можете масштабировать (увеличить или уменьшить) Control Plane узлы и Worker-узлы.
Выбор типа масштабирования
Для групп Worker-узлов доступны два режима: ручное и автоматическое масштабирование. Выбор зависит от предсказуемости нагрузки, требований к доступности и операционного контроля.
Когда предпочтительнее ручное масштабирование
- Стабильная или предсказуемая нагрузка — потребности в ресурсах известны и меняются редко.
- Жёсткие ограничения по бюджету или лицензиям — нужно точно контролировать количество узлов и не допускать неожиданного роста.
- Критичные к задержкам или изоляции нагрузки — добавление и удаление узлов нужно планировать вручную.
- Соответствие регламентам — любое изменение инфраструктуры должно проходить согласование.
- Малое количество групп или узлов — ручное изменение «Запрошено реплик» не создаёт операционной нагрузки.
Когда предпочтительнее автоматическое масштабирование
- Переменная или непредсказуемая нагрузка — трафик, события или объём задач сильно колеблются.
- Оптимизация затрат при простаивании — в периоды низкой нагрузки кластер может уменьшаться, в пики — увеличиваться без ручного вмешательства.
- Несколько групп Worker-узлов с разным назначением — удобно задать мин/макс реплик по группам.
- Высокие требования к доступности — автоматическое добавление узлов при нехватке ресурсов снижает риск Pending-подов.
При автоматическом масштабировании задайте Минимально реплик и Максимально реплик так, чтобы не выходить за лимиты лицензии и квоты облака или виртуализации.
Горизонтальное и вертикальное масштабирование
Масштабирование узлов в кластере (добавление или удаление узлов) — это горизонтальное масштабирование на уровне инфраструктуры. Вертикальное — изменение ресурсов (CPU, RAM) уже существующих узлов или подов.
Когда предпочтительнее горизонтальное масштабирование
- Бесстатусные и распределённые приложения — нагрузку лучше распределять по новым узлам и подам.
- Высокая доступность и отказоустойчивость — больше узлов снижают влияние отказа одного узла.
- Рост упирается в количество подов, а не в размер одного пода — приложения масштабируются по репликам (HPA), и нужны дополнительные узлы.
- Ограничения по размеру одной машины — проще добавить узлы стандартного размера, чем менять тип инстанса.
Рекомендуется сочетать горизонтальное масштабирование подов (HPA) с масштабированием узлов: сначала масштабируются поды, при нехватке узлов добавляются узлы.
Когда предпочтительнее вертикальное масштабирование
- Ресурсоёмкие задачи на одном узле — тяжёлые вычисления, ML, обработка данных.
- Stateful-нагрузки — базы данных, очереди с состоянием; увеличение реплик сложнее, чем увеличение ресурсов.
- Жёсткие требования к памяти или CPU на процесс — приложение не масштабируется горизонтально без переработки.
- Ограничение по количеству узлов — лимиты лицензии или облака делают выгодным увеличение размера узлов вместо добавления новых.
В платформе «Штурвал» изменение размера узлов (вертикальное масштабирование на уровне машин) может потребовать действий в конфигурации группы узлов или провайдера, например смены типа инстанса или параметров InfraMachineTemplate. Масштабирование ресурсов подов (CPU/Memory requests/limits) выполняется в манифестах workload’ов или через VPA, если он включён.
Масштабирование узлов в кластере
Выполните следующие действия, чтобы изменить количество узлов в кластере:
- Перейдите на страницу Управление узлами раздела Администрирование.
- Определите группу, в которой необходимо масштабировать узлы:
- группа Control Plane узлов;
- группа Worker-узлов. В клиентских кластерах можно управлять количеством узлов для каждой Worker-группы: Default, Infra или кастомной.
Скриншот: Control Plane

Скриншот: Worker-узлы в кластере управления

Скриншот: Worker-узлы в клиентском кластере

- Перейдите к конфигурации группы узлов, нажав Конфигурация группы.
Группа Control Plane узлов
На вкладке Конфигурация Cluster API группы Control Plane узлов доступно ручное масштабирование. Укажите желаемое количество узлов в поле Запрошено реплик.
Скриншот: конфигурация группы Control Plane узлов

Сохраните изменения. На странице Управление узлами можно отследить процесс масштабирования.
Группа Worker-узлов
На вкладке Конфигурация Cluster API группы Worker-узлов доступны два способа масштабирования:
- Ручной — укажите желаемое количество узлов в поле Запрошено реплик.
- Автоматическое — задайте диапазон в полях Минимально реплик и Максимально реплик.
Скриншот: ручное масштабирование

Скриншот: автоматическое масштабирование

Сохраните изменения. На странице Управление узлами можно отследить процесс масштабирования.
Рекомендации по ручному масштабированию
При ручном изменении количества узлов учитывайте следующее:
- Увеличение узлов планируйте до наступления пиковой нагрузки или перед развёртыванием новых приложений, чтобы поды не оставались в состоянии Pending.
- Уменьшение узлов выполняйте в период низкой нагрузки; убедитесь, что на остающихся узлах достаточно места для подов с выводимых узлов.
- Изменяйте количество реплик пошагово (например, по одному-два узла в группе), особенно при уменьшении.
- После изменения проверьте страницу Управление узлами: новые узлы должны перейти в состояние Ready, при уменьшении дождитесь завершения drain и удаления узлов.
- Для групп Control Plane не уменьшайте количество узлов ниже требуемого для кворума.
- Учитывайте лимиты лицензии по Worker-узлам и vCPU.
Cluster Autoscaler
Cluster Autoscaler изменяет размер Kubernetes-кластера на основе использования подов и узлов. В Cluster API он управляет созданием и удалением узлов через ресурсы Cluster API и применяется только к Worker Machines.
По данным Cluster API Book, autoscaler с провайдером Cluster API работает с ресурсами MachineSet, MachineDeployment или MachinePool, если на них есть обе аннотации диапазона. В «Штурвале» автоматическое масштабирование Worker-группы настраивается в интерфейсе на вкладке Конфигурация Cluster API (Группы узлов); для Worker-групп используется MachineDeployment.
Аннотации диапазона
| Аннотация | Назначение |
|---|---|
cluster.x-k8s.io/Cluster API-autoscaler-node-group-min-size |
Минимальное число узлов в группе. Autoscaler не уменьшает группу ниже этого значения. |
cluster.x-k8s.io/Cluster API-autoscaler-node-group-max-size |
Максимальное число узлов в группе. Autoscaler не увеличивает группу выше этого значения. |
Autoscaler отслеживает ресурсы Cluster API, на которых есть обе аннотации. В «Штурвале» эти значения соответствуют полям Минимально реплик и Максимально реплик.
Пример фрагмента MachineDeployment
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineDeployment
metadata:
annotations:
cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "7"
cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "2"
Просмотр YAML выполняется в кластере управления: Администрирование → Кастомные ресурсы.
Обратите внимание! Внимание: autoscaler не приводит группу к min/max автоматически, если текущее число узлов уже ниже минимума или выше максимума. Для принудительного соблюдения минимума в upstream Cluster Autoscaler используется флаг --enforce-node-group-min-size; доступность настройки в «Штурвале» зависит от поставки.
Scale from zero
В Cluster API scale-from-zero — опциональная возможность инфраструктурного провайдера. Если провайдер не отдаёт autoscaler сведения о размере будущих узлов, можно использовать capacity-аннотации на MachineDeployment или MachineSet (минимум CPU и memory), например:
capacity.cluster-autoscaler.kubernetes.io/cpu: "16"
capacity.cluster-autoscaler.kubernetes.io/memory: "128G"
Capacity-аннотации имеют приоритет над данными, полученными от infrastructure machine templates.
Обратите внимание! Внимание: в «Штурвале» автомасштабирование с нуля реплик в группе не включено. Для отказоустойчивости рекомендуется не менее двух Worker-узлов; в интерфейсе нельзя задать минимум меньше 2.
Принцип работы
Если для группы включено автомасштабирование, Cluster Autoscaler периодически:
- ищет поды в статусе Pending с причиной Unschedulable;
- оценивает запросы подов на CPU, RAM и GPU;
- анализирует загрузку узлов группы.
Дальше он может добавить узлы при дефиците ресурсов или удалить узел, если одновременно выполняются условия, в том числе:
- суммарные requests подов на узле меньше порога утилизации;
- поды, кроме системных подов на всех узлах, можно перенести;
- на узле нет аннотации запрета уменьшения масштаба.
cluster-autoscaler.kubernetes.io/scale-down-disabled: "true"
Подготовка нового узла не зависит от Autoscaler; типичное ожидание создания запрошенных узлов — до 15 минут, после чего может быть предпринята попытка масштабировать другую группу.
При необходимости добавления нескольких узлов в несколько Worker-групп Autoscaler может распределять создаваемые узлы равномерно между группами.
Учёт PodDisruptionBudget и affinity
Autoscaler учитывает PodDisruptionBudget, nodeSelector и nodeAffinity с типом requiredDuringSchedulingIgnoredDuringExecution. preferredDuringSchedulingIgnoredDuringExecution не учитывается.
Почему узел не удаляют
Autoscaler не удалит узел, если выполняется хотя бы одно из условий:
- на поды действует PDB;
- есть «отдельностоящие» поды, которые не принадлежат Deployment, ReplicaSet, StatefulSet и т.д.;
- поды используют локальное хранилище;
- на других узлах недостаточно ресурсов под запросы подов;
- другие узлы не подходят под nodeSelector или nodeAffinity подов.
При необходимости подам можно добавить аннотацию, разрешающую вытеснение:
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"