Horizontal Pod Autoscaler (HPA)

⌘K

Horizontal Pod Autoscaler (HPA)

Horizontal Pod Autoscaler (HPA) — это контроллер в Kubernetes, который автоматически изменяет количество реплик подов в зависимости от нагрузки. Его задача — поддерживать баланс между производительностью и эффективным использованием ресурсов.


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

  1. Сбор метрик
    HPA получает данные из Metrics Server или других источников (Prometheus Adapter и т.п.): CPU, память, пользовательские метрики.
  2. Сравнение с целевыми значениями
    В манифесте указывается, какое среднее использование ресурсов считается допустимым (например, 70% CPU).
  3. Принятие решения
    Если нагрузка выше целевого уровня, HPA увеличивает количество подов. Если ниже — уменьшает.
  4. Обновление Deployment/ReplicaSet
    HPA напрямую изменяет поле
    replicas
    у контроллера, которому подчиняются поды.

Пример манифеста HPA

apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: web-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: web-app minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70

Здесь количество подов будет автоматически меняться от 2 до 10 в зависимости от нагрузки на CPU.


Где применяется

  • Web-приложения с переменным трафиком (например, пиковая нагрузка в e-commerce во время распродаж).
  • API-сервисы с непредсказуемым числом запросов.
  • Обработчики очередей — масштабируются в зависимости от длины очереди сообщений (через кастомные метрики).

Ограничения

  • Работает только с контроллерами, поддерживающими масштабирование (Deployment, ReplicaSet, StatefulSet).
  • Требует настроенного источника метрик (обычно
    metrics-server
    ).
  • Не управляет ресурсами узлов — для этого используется Cluster Autoscaler.

Для клиента

HPA позволяет приложению выдерживать пиковые нагрузки без падений и при этом экономить ресурсы в периоды простоя. Это означает:

  • меньше затрат на инфраструктуру;
  • предсказуемую производительность;
  • автоматизацию без ручного вмешательства админов.

Сравнение HPA, VPA и Cluster Autoscaler

ХарактеристикаHPA (Horizontal Pod Autoscaler)VPA (Vertical Pod Autoscaler)Cluster Autoscaler
Что масштабируетКоличество подов (реплик)Ресурсы одного пода (CPU, память)Количество узлов (node) в кластере
Уровень действияПоды внутри Deployment/ReplicaSet/StatefulSetОтдельный под (увеличивает
requests/limits
)
Инфраструктура (виртуальные машины, узлы)
Примеры примененияWeb-приложения, API, обработчики очередейБазы данных, ML-задачи, ресурсоёмкие сервисыГибридные кластеры в облаке (AWS, GCP, Azure)
Источник метрикCPU, память, кастомные метрики (Prometheus, API)История использования ресурсов подаУтилизация кластера, pending pods
Когда увеличивает нагрузкуПри росте запросов и CPUКогда под систематически «упирается» в лимитыКогда подов некуда разместить (нет узлов)
Когда снижает нагрузкуПри падении трафикаПри избыточном выделении ресурсовКогда узлы простаивают, и поды можно переселить
Подходит дляПеременного трафика, микросервисовStateful-приложений, тяжёлых задачОблачных кластеров с оплатой за узлы

Кратко:

  • HPA — регулирует количество подов.
  • VPA — регулирует «вес» одного пода.
  • Cluster Autoscaler — регулирует количество серверов (node).

Эти инструменты часто используются вместе: HPA масштабирует поды, VPA оптимизирует их размеры, а Cluster Autoscaler добавляет или убирает узлы.

Долгосрочные клиенты — наша гордость

Для тех, кто с нами надолго: 12 месяцев = 13 с промокодом

Месяц в подарок
COPIED
NEWCOM COPIED