Vertical Pod Autoscaler (VPA) — это компонент Kubernetes, который автоматически подбирает значения CPU и памяти для контейнеров, основываясь на истории их использования.
В отличие от HPA (Horizontal Pod Autoscaler), VPA не масштабирует количество подов, а меняет ресурсы в уже существующих.
1. Что такое VPA
VPA может работать в трёх режимах:
Off
: только рекомендацииAuto
: применяет настройки и перезапускает подыInitial
: задаёт ресурсы только при создании пода
Пример манифеста:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: my-app
updatePolicy:
updateMode: "Auto"
2. Плюсы использования VPA
- 🔧 Автоматическая настройка ресурсов без ручного тюнинга
- 💰 Экономия ресурсов — меньше оверпровиженинга
- 📉 Меньше OOM ошибок при нехватке памяти
- 🎯 Идеально для одиночных подов, где HPA неприменим
3. Минусы и ограничения
Но не всё так радужно:
- 🔁 Под нужен перезапуск — ресурсы применяются только при рестарте
- ⚠️ Не работает с HPA по CPU/памяти
- 🚫 Не увеличивает количество подов — только ресурсы
- 🐢 Медленная реакция — решение основывается на прошлой нагрузке
- 📆 Не поддерживает Jobs и CronJobs
- 📉 Требуются начальные лимиты, иначе нечего анализировать
- 📦 Не учитывает initContainers и ephemeral containers
4. Где использовать VPA
- Сборщики метрик и фоновый обработчик
- ML-задачи с плавающим потреблением памяти
- Внутренние API с предсказуемой нагрузкой
- CI/CD сервисы с переменным профилем
5. Когда VPA подходит
Используйте VPA, если:
- У вас stateful-приложения
- Вы хотите оптимизировать CPU/память, не масштабируя поды
- Вам нужно устранить недовыделение или перерасход ресурсов
Не используйте, если:
- Ваши приложения чувствительны к задержкам
- Требуется масштабирование по количеству подов
- Вы используете краткоживущие batch-задания
6. Заключение
VPA — мощный инструмент для настройки ресурсов в Kubernetes. Но его ограничения делают его подходящим не для всех сценариев. Внимательно оценивайте — может быть, вам больше подойдёт HPA или KEDA.