Автомтическое масштабирование кластера Kubernetes

Автоматическое масштабирование кластера Kubernetes (Cluster Autoscaler) отслеживает нагрузку на узлы и при необходимости уменьшает и увеличивает их количество в заданных приделах.

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

Если есть поды, которые не могут быть назначены на узлах из-за нехватки ресурсов (vCPU и RAM), число узлов в группе будет увеличено в рамках указанного максимального размера. Cluster Autoscaler каждые 10 секунд проверяет кластер на наличие подов со статусом «Pending» и «Conditions:PodScheduled = False». При наличии таких подов, направляется запрос на увеличение количества узлов.

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

Если нагрузка на узлы низкая и все поды могут быть назначены на меньшее количество узлов, число узлов в группе будет уменьшенно в рамках указанного минимального размера. Cluster Autoscaler каждые 10 секунд проверяет кластер на наличие узлов, соответствующих условиям:

  • Сумма vCPU и RAM всех подов на узле на 50% меньше, чем емкость (capacity) узла.

  • Все поды, запущенные на этом узле, могут быть перемещены на другие узлы.

  • Узел не имеет Annotations: Scale-down disabled.

Если соответствующий этим условиям узел имеет низкое потребление ресурсов более 10 минут, он будет остановлен.

Чтобы настроить автоматическое масштабирование клаcтера, при создании группы узлов выберите автоматическую политику масштабирования (auto scale) и задайте минимальное и максимальное количество узлов в группе и минимальную нагрузку на узел. Kubernetes будет проверять состояние подов и нагрузку на узлы, при необходимости изменяя размер группы в рамках заданных значений.