Horizontal Pod Autoscaler (HPA) — это встроенный в Kubernetes механизм, который автоматически масштабирует количество подов на основе текущей загрузки, например, по CPU или памяти.

Разберем, как работает HPA, когда он полезен, его плюсы и минусы, и как его настроить.


1. Что такое HPA

HPA отслеживает метрики (обычно CPU) и масштабирует поды в пределах заданного диапазона.

Пример:

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

2. Преимущества HPA

  • ⚖️ Автоматическое масштабирование по нагрузке
  • 💰 Снижение затрат при снижении нагрузки
  • 📈 Повышение стабильности при росте трафика
  • 🔧 Поддержка кастомных метрик через Prometheus Adapter

3. Минусы и ограничения

  • 🐢 Задержка метрик: не всегда быстро реагирует на пиковую нагрузку
  • ⚠️ Неэффективен для краткосрочных всплесков
  • Поды не запускаются мгновенно
  • 📦 Зависит от Metrics Server или адаптера
  • 🧩 Не регулирует requests/limits ресурсов — рекомендуется использовать с VPA

4. Когда HPA полезен

  • Статeless-приложения: API, веб-сервисы
  • Микросервисы с плавной нагрузкой
  • Когда нужно быстро масштабироваться без участия человека

5. Когда HPA не лучший выбор

  • Приложения с состоянием (например, базы данных)
  • Сценарии с критичной задержкой
  • Отсутствие настроенной метрик-инфраструктуры

6. Заключение

HPA — один из главных инструментов масштабирования в Kubernetes. Он повышает устойчивость приложений и помогает эффективно использовать ресурсы. Но в некоторых случаях стоит дополнительно использовать VPA или KEDA.