Модуль adaptive-resource-management позволяет автоматизировать подбор resource requests и limits для рабочих нагрузок на основе рекомендаций Vertical Pod Autoscaler (VPA).

Для этого модуль разворачивает контроллер AutoVPA, основанный на проекте Goldilocks, с доработками Deckhouse Kubernetes Platform (DKP). Контроллер автоматически создает и поддерживает объекты VPA для рабочих нагрузок в выбранных неймспейсах и предоставляет рекомендации по настройке ресурсов.

Основные возможности:

  • Автоматическое создание объектов VPA для Deployment, StatefulSet, DaemonSet и Job в управляемых неймспейсах.
  • Гибкий выбор неймспейсов: управление всеми неймспейсами, неймспейсами с определённым лейблом или соответствующими определённому label-селектору.
  • Комбинированный режим выбора неймспейсов по label-селектору и специальному лейблу autovpa.deckhouse.io/enabled.
  • Автоматическое создание объектов VPA в режиме рекомендаций без изменения манифестов приложений.
  • Настройка VPA на уровне отдельных нагрузок и неймспейсов через аннотации и лейблы autovpa.deckhouse.io/*.
  • Минимальное потребление ресурсов: контроллер работает в одной реплике и предъявляет низкие требования к CPU и памяти.

Подробнее с настройками модуля и примерами его использования можно ознакомиться в разделе документации модуля.

Архитектура модуля

Для упрощения схемы приняты следующие допущения:

  • На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
  • Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.

Архитектура модуля adaptive-resource-management на уровне 2 модели C4 и его взаимодействие с другими компонентами DKP показаны на следующей диаграмме:

Архитектура модуля adaptive-resource-management

Компоненты модуля

Модуль adaptive-resource-management состоит из одного компонента autovpa-controller, включающего основной контейнер autovpa.

Взаимодействия модуля

Модуль взаимодействует с компонентом kube-apiserver для создания объектов VPA под рабочие нагрузки.

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