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.