Автоматическое масштабирование
Автоматическое масштабирование — это изменение размера группы узлов, количества подов или количества выделяемых каждому поду ресурсов на основе запросов ресурсов для подов, запущенных на узлах этой группы. Автоматическое масштабирование доступно в Kubernetes с версии 1.15.
В кластере Managed Service for Kubernetes доступны три вида автоматического масштабирования:
- Автоматическое масштабирование кластера (Cluster Autoscaler). Managed Service for Kubernetes отслеживает нагрузку на узлы и при необходимости изменяет их количество в указанных пределах.
- Горизонтальное масштабирование подов (Horizontal Pod Autoscaler). Kubernetes динамически изменяет количество подов, запущенных на каждом узле группы.
- Вертикальное масштабирование подов (Vertical Pod Autoscaler). При повышении нагрузки Kubernetes выделяет каждому поду дополнительные ресурсы в установленных пределах.
Вы можете использовать несколько видов автоматического масштабирования в одном кластере. При этом не рекомендуется использовать Horizontal Pod Autoscaler и Vertical Pod Autoscaler одновременно.
Автоматическое масштабирование кластера
Cluster Autoscaler автоматически изменяет количество узлов в группе в зависимости от нагрузки.
При создании группы узлов выберите автоматический тип масштабирования и задайте минимальное, максимальное и начальное количество узлов в группе. Kubernetes будет периодически проверять состояние подов и нагрузку на узлы, при необходимости изменяя размер группы:
- Если поды не могут быть назначены из-за нехватки vCPU или RAM на существующих узлах, число узлов в группе будет постепенно увеличиваться до указанного максимального размера.
- Если нагрузка на узлы недостаточная и все поды могут быть назначены с меньшим количеством узлов в группе, число узлов в группе будет постепенно уменьшаться до указанного минимального размера. Если поды узла не могут быть расселены за установленное время (5 минут), узел принудительно останавливается. Время ожидания нельзя изменить.
Примечание
При подсчете текущих лимитов и квот
Включение Cluster Autoscaler доступно только при создании группы узлов. Управление Cluster Autoscaler выполняется на стороне сервиса Managed Service for Kubernetes.
Подробнее см. в документации Kubernetes:
См. также раздел Вопросы и ответы про автоматическое масштабирование группы узлов в Managed Service for Kubernetes.
Горизонтальное автомасштабирование подов
При использовании горизонтального масштабирования подов Kubernetes изменяет их количество в зависимости от степени нагрузки на vCPU.
При создании Horizontal Pod Autoscaler укажите в параметрах:
- Желаемую среднюю нагрузку на vCPU для каждого пода в процентах.
- Минимальное и максимальное количество реплик подов.
Горизонтальное автомасштабирование подов доступно для контроллеров:
Подробнее о Horizontal Pod Autoscaler см. в документации Kubernetes
Вертикальное автомасштабирование подов
Kubernetes ограничивает выделение ресурсов для каждого приложения с помощью параметров limits
. Для пода, превысившего лимит vCPU, включается режим пропуска тактов процессора. Под, превысивший лимит RAM, будет остановлен.
Vertical Pod Autoscaler при необходимости выделяет дополнительные ресурсы vCPU и RAM для подов.
При создании Vertical Pod Autoscaler укажите в спецификации опцию автоматического масштабирования:
updateMode: "Auto"
, чтобы Vertical Pod Autoscaler автоматически управлял ресурсами подов.updateMode: "Off"
, чтобы Vertical Pod Autoscaler предоставлял рекомендации по управлению ресурсами подов, но не изменял их.
Подробнее о Vertical Pod Autoscaler см. в документации Kubernetes