Cluster Autoscaler в Kubernetes — это штука, которая следит за тем, хватает ли кластера вообще как физической мощности. Если подам некуда запуститься, потому что CPU или памяти не хватает на всех узлах, он добавляет новые ноды. Если наоборот, половина машин простаивает, — потихоньку их отключает, чтобы не жечь деньги впустую.
Важно не путать его с HPA и VPA. Horizontal Pod Autoscaler (HPA) занимается количеством подов, Vertical Pod Autoscaler (VPA) — их ресурсными запросами. А Cluster Autoscaler смотрит шире — он управляет именно инфраструктурой: сколько вообще узлов в кластере нужно. В облаке каждый такой узел — это реальный платный ресурс, поэтому от его работы напрямую зависит стоимость.
Под капотом Cluster Autoscaler постоянно анализирует состояние кластера: не висят ли поды в pending, можно ли их куда-то воткнуть, нет ли узлов, на которых крутится ерунда и которые можно спокойно освободить. Когда решение принято, он идёт к API облачного провайдера (AWS, GCP, Azure и т.п.) и просит добавить или убрать виртуальные машины.
Где это особенно полезно:
– когда нагрузка скачет, и кластер нужно автоматически расширять в пике,
– когда ночью или в нерабочее время хотите экономить и сжимать инфраструктуру обратно,
– когда часть подов просто физически не помещается на текущие ноды,
– когда не хочется руками крутить размер кластера при любой смене нагрузки.
У него есть настройки по минимальному и максимальному числу узлов, причём отдельно по разным node group — например, одна группа под GPU, другая под обычные CPU, третья под ARM. При масштабировании вниз он умеет «выгружать» поды с мало загруженных машин на другие, чтобы узел можно было честно выключить.
В итоге кластеры с Cluster Autoscaler получаются куда более живыми и экономичными. Это особенно заметно в боевых окружениях с плавающей нагрузкой: CI/CD-пайплайны, машинное обучение, всякие батчевые задачи по обработке данных — всё это гораздо проще держать в адекватных ресурсных рамках.
Сравнение механизмов масштабирования в Kubernetes #
- Cluster Autoscaler масштабирует сами узлы кластера. Работает, когда подам не хватает места, и приводит к реальному добавлению или удалению виртуальных машин у провайдера. Это горизонтальное масштабирование, но на уровне инфраструктуры.
- Horizontal Pod Autoscaler (HPA) управляет количеством подов. Смотрит на метрики нагрузки (CPU, память, кастомные метрики) и, если пороги превышены, поднимает или уменьшает число реплик. На инфраструктуру напрямую не влияет.
- Vertical Pod Autoscaler (VPA) подстраивает запросы и лимиты CPU/памяти у подов под фактическую нагрузку. Тоже не добавляет и не убирает узлы, работает только с конфигурацией подов.
- Все три механизма можно использовать вместе: кластер умеет доростать новыми нодами, на этих нодах HPA раздувает или ужимает поды, а VPA помогает им не вылетать из-за неправильно выставленных ресурсов.
