Как называется механизм в Kubernetes, который увеличивает ресурсы (CPU/RAM) для существующих Pod’ов, не меняя их количество?

«Как называется механизм в Kubernetes, который увеличивает ресурсы (CPU/RAM) для существующих Pod’ов, не меняя их количество?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Этот механизм называется Vertical Pod Autoscaler (VPA).

В отличие от Horizontal Pod Autoscaler (HPA), который меняет количество Pod'ов, VPA анализирует историческое использование ресурсов контейнерами и автоматически рекомендует или применяет новые значения для запросов (requests) и лимитов (limits) CPU и памяти.

Как это работает на практике:

  1. VPA Recommender анализирует метрики использования ресурсов за прошедшее время.
  2. На основе этого анализа он вычисляет оптимальные значения requests и limits.
  3. В зависимости от настроенного режима (updateMode), VPA может:
    • Off: Только предоставлять рекомендации (без изменений).
    • Initial: Применять новые значения только при создании Pod'а.
    • Auto или Recreate: Обновлять значения у работающих Pod'ов. В режиме Recreate Pod будет пересоздан с новыми ресурсами, что приводит к кратковременному простою.

VPA особенно полезен для оптимизации затрат и предотвращения ситуаций, когда Pod'у не хватает ресурсов (OOMKill) или когда он запрашивает их с большим запасом.

Пример манифеста VPA для Deployment my-app в режиме рекомендаций:

apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: my-app-vpa
spec:
  targetRef:
    apiVersion: "apps/v1"
    kind: Deployment
    name: my-app
  updatePolicy:
    updateMode: "Off" # Режим "Off" только для рекомендаций