Автомасштабирование вертикального модуля pod в Служба Azure Kubernetes (AKS)

В этой статье представлен обзор использования вертикального автомасштабирования pod (VPA) в Служба Azure Kubernetes (AKS), основанного на версии открытый код Kubernetes.

При настройке VPA автоматически задает запросы ресурсов и ограничения на контейнеры для каждой рабочей нагрузки на основе прошлого использования. VPA освобождает ЦП и память для других модулей pod и помогает обеспечить эффективное использование кластеров AKS. Автомасштабирование вертикального модуля pod предоставляет рекомендации по использованию ресурсов с течением времени. Чтобы управлять внезапным увеличением использования ресурсов, используйте средство автомасштабирования горизонтального модуля Pod, которое масштабирует количество реплик pod по мере необходимости.

Льготы

Автомасштабирование вертикального модуля pod обеспечивает следующие преимущества:

  • Анализирует и настраивает ресурсы процессора и памяти для правильного размера приложений. VPA не только отвечает за увеличение масштаба, но и за масштабирование на основе использования ресурсов с течением времени.
  • Модуль pod с режимом масштабирования, установленным для автоматического или повторного создания , вытеснен, если он должен изменить запросы ресурсов.
  • Ограничения ЦП и памяти для отдельных контейнеров можно задать, указав политику ресурсов.
  • Гарантирует, что узлы имеют правильные ресурсы для планирования pod.
  • Предоставляет настраиваемое ведение журнала любых изменений, внесенных в ресурсы процессора или памяти.
  • Улучшает использование ресурсов кластера и освобождает ЦП и память для других модулей pod.

Рекомендации и ограничения

При использовании автомасштабирования вертикального модуля Pod следует учитывать следующие ограничения и рекомендации.

  • VPA поддерживает не более 1000 модулей pod, связанных с VerticalPodAutoscaler объектами на кластер.
  • VPA может рекомендовать больше ресурсов, чем доступно в кластере, что предотвращает назначение pod узлу и запуск из-за нехватки ресурсов. Это ограничение можно преодолеть, задав LimitRange максимально доступные ресурсы для каждого пространства имен, что гарантирует, что модули pod не запрашивают больше ресурсов, чем указано. Кроме того, можно задать максимально допустимые рекомендации по ресурсам для каждого модуля pod в объекте VerticalPodAutoscaler . VPA не может полностью преодолеть нехватку ресурсов узла. Диапазон ограничений исправлен, но использование ресурсов узла динамически изменяется.
  • Мы не рекомендуем использовать VPA с горизонтальным автомасштабированием pod (HPA), который масштабируется на основе одной и той же метрики использования ЦП и памяти.
  • Средство рекомендаций VPA хранит только до восьми дней исторических данных.
  • VPA не поддерживает рабочие нагрузки на основе JVM из-за ограниченной видимости фактического использования памяти рабочей нагрузки.
  • VPA не поддерживает собственную реализацию VPA вместе с ней. Поддержка дополнительного или настраиваемого рекомендуемого средства.
  • Контейнеры Windows AKS не поддерживаются.

Обзор VPA

Объект VPA состоит из трех компонентов:

  • Рекомендация. Средство рекомендаций отслеживает текущее и предыдущее потребление ресурсов, включая журнал метрик, события вне памяти (OOM) и спецификации развертывания VPA, а также использует сведения, собираемые для предоставления рекомендуемых значений запросов на ЦП и памяти контейнера.
  • Updater: Updater отслеживает управляемые модули pod, чтобы убедиться, что их запросы на ресурсы заданы правильно. Если нет, он удаляет эти модули pod, чтобы их контроллеры могли воссоздать их с обновленными запросами.
  • Контроллер допуска VPA. Контроллер допуска VPA задает правильные запросы ресурсов на новые модули pod, созданные или повторно созданные их контроллером на основе действия Updater.

Контроллер допуска VPA

Контроллер допуска VPA — это двоичный файл, который регистрирует себя как веб-перехватчик для мутирующего приема. При создании нового модуля pod контроллер допуска VPA получает запрос от сервера API и оценивает, есть ли соответствующая конфигурация VPA или находит соответствующую и использует текущую рекомендацию для задания запросов ресурсов в модуле pod.

Автономное задание overlay-vpa-cert-webhook-check, выполняется за пределами контроллера допуска VPA. Задание overlay-vpa-cert-webhook-check создает и обновляет сертификаты и регистрирует контроллер допуска VPA в качестве контроллера MutatingWebhookConfiguration.

Режимы операций объектов VPA

Ресурс автомасштабирования вертикального модуля Pod, чаще всего, вставляется для каждого контроллера, который требуется вычислить автоматически.

Существует четыре режима, в которых работает VPA:

  • Auto: VPA назначает запросы ресурсов во время создания модуля pod и обновляет существующие модули pod с помощью предпочтительного механизма обновления. Auto— это режим Recreateпо умолчанию. После перезапуска или на месте доступны обновления запросов pod, его можно использовать в качестве предпочтительного механизма обновления в режиме Auto . В режиме Auto VPA вытесняет модуль pod, если он должен изменить запросы ресурсов. Это может привести к перезапуску модулей pod одновременно, что может привести к несоответствиям приложений. Вы можете ограничить перезапуски и обеспечить согласованность в этой ситуации с помощью PodDisruptionBudget.
  • Recreate: VPA назначает запросы ресурсов во время создания и обновления существующих модулей pod путем их вытеснения, если запрошенные ресурсы значительно отличаются от новых рекомендаций (при определении podDisruptionBudget). Этот режим следует использовать только в том случае, если необходимо убедиться, что модули pod перезапускаются при изменении запроса ресурса. В противном случае рекомендуется использовать Auto режим, который использует преимущества обновлений без перезапуска после его доступности.
  • Initial: VPA назначает только запросы ресурсов во время создания pod. Он не обновляет существующие модули pod. Этот режим полезен для тестирования и понимания поведения VPA, не затрагивая выполняемые модули pod.
  • Off: VPA не изменяет требования к ресурсам модулей pod автоматически. Рекомендации вычисляются и могут быть проверены в объекте VPA.

Шаблон развертывания для разработки приложений

Если вы не знакомы с VPA, рекомендуется использовать следующий шаблон развертывания во время разработки приложений, чтобы определить уникальные характеристики использования ресурсов, протестировать VPA, чтобы убедиться, что он работает правильно, и протестировать вместе с другими компонентами Kubernetes для оптимизации использования ресурсов кластера:

  1. Установите UpdateMode = "Off" в рабочем кластере и запустите VPA в режиме рекомендаций, чтобы протестировать и ознакомиться с VPA. UpdateMode = "Off" может избежать неправильной настройки, которая может вызвать сбой.
  2. Сначала создайте наблюдаемость, собирая фактические данные телеметрии использования ресурсов в течение заданного периода времени, что помогает понять поведение и любые признаки проблем из ресурсов контейнера и pod, влияющих на рабочие нагрузки, выполняемые на них.
  3. Ознакомьтесь с данными мониторинга, чтобы понять характеристики производительности. На основе этого аналитических сведений задайте требуемые запросы и ограничения соответствующим образом, а затем в следующем развертывании или обновлении.
  4. Задайте updateMode значение Auto, Recreateили Initial в зависимости от ваших требований.

Следующие шаги

Сведения о настройке вертикального автомасштабирования Pod в кластере AKS см. в статье "Автомасштабирование вертикального модуля pod" в AKS.