Как работает вертикальное масштабирование (VPA)

Vertical Pod Autoscaler (VPA) позволяет автоматизировать управление ресурсами контейнеров и значительно повысить эффективность работы приложений. VPA полезен в ситуациях, когда заранее неизвестно, сколько ресурсов потребуется приложению. При использовании VPA и включении соответствующего режима работы, запрашиваемые ресурсы устанавливаются на основе фактического потребления ресурсов, полученных от системы мониторинга. Также возможно настроить систему таким образом, чтобы она только рекомендовала ресурсы, не внося изменений автоматически.

Если нагрузка на приложение меняется в зависимости от времени суток, запросов пользователей или других факторов, VPA автоматически подстраивает выделенные ресурсы. Это позволяет избежать падений из-за нехватки ресурсов или чрезмерного расходования CPU и памяти.

Подробнее о режимах работы VPA, его компонентах и ограничениях можно почитать в разделе «Архитектура».

Как включить или отключить VPA

Включить VPA можно следующими способами:

  1. Через ресурс ModuleConfig (например, ModuleConfig/vertical-pod-autoscaler). Установите параметр spec.enabled в значение true или false:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: vertical-pod-autoscaler
    spec:
      enabled: true
    
  2. Через команду d8 (в поде d8-system/deckhouse):

    d8 system module enable vertical-pod-autoscaler
    
  3. Через веб-интерфейс Deckhouse:

    • Перейдите в раздел «Deckhouse - «Модули»;
    • Найдите модуль vertical-pod-autoscaler и нажмите на него;
    • Включите тумблер «Модуль включен».

У модуля vertical-pod-autoscaler нет обязательных настроек, то есть можно включить его и не настраивать дополнительно. При этом он будет работать со значениями по умолчанию.

После создания ресурса VerticalPodAutoscaler посмотреть рекомендации VPA можно с помощью команды:

d8 k describe vpa my-app-vpa

В секции status будут такие параметры:

  • Target — рекомендуемое количество ресурсов для пода.
  • Lower Bound— минимальное рекомендуемое количество ресурсов для приложения.
  • Upper Bound — максимальное рекомендуемое количество ресурсов для приложения.
  • Uncapped Target— значение, основанное на крайних метриках без учета истории.

Настройка VPA

  1. Создайте конфигурации модуля VPA.

    Для настройки VPA нужно создать файл конфигурации для модуля. Пример конфигурации:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: vertical-pod-autoscaler
    spec:
      version: 1
      enabled: true
      settings:
        nodeSelector:
          node-role/system: ""
        tolerations:
        - key: dedicated.deckhouse.io
          operator: Equal
          value: system
    
  2. Примените файл конфигурации для VPA с помощью d8 k apply -f <имя файла конфигурации>.

Подробнее про настройку лимитов VPA см. в разделе Использование.

Пример настройки модуля

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: vertical-pod-autoscaler
spec:
  version: 1
  enabled: true
  settings:
    nodeSelector:
      node-role/system: ""
    tolerations:
    - key: dedicated.deckhouse.io
      operator: Equal
      value: system

Дополнительные ресурсы