Поделиться через


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

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

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

Преимущества

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

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

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

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

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

Обзор VPA

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

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

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

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

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

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

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

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

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

Предупреждение

Режим Auto обновления устарел, начиная с VPA версии 1.4.0 (AKS 1.34+). В настоящее время автоматический режим является псевдонимом для Recreate режима и ведет себя одинаково. Было введено, чтобы обеспечить дальнейшее расширение стратегий автоматического обновления.

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

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

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

Дальнейшие действия

Чтобы узнать, как настроить вертикальное автомасштабирование Pod в вашем кластере AKS, см. статью «Использование вертикального автомасштабирования Pod в AKS».