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.