• Русский
  • Настройка VerticalPodAutoscaler (VPA)

    Обзор

    Alauda Container Platform Vertical Pod Autoscaler основан на компоненте с открытым исходным кодом Vertical Pod Autoscaler. Он анализирует исторические данные об использовании ресурсов Pods и предоставляет рекомендации по квотам для повышения эффективности использования ресурсов.

    Для приложений без сохранения состояния и с сохранением состояния VerticalPodAutoscaler (VPA) автоматически рекомендует — и при необходимости применяет — более подходящие ограничения CPU и memory на основе потребностей вашего приложения. Это помогает обеспечить Pod'ам достаточные ресурсы и одновременно повысить общую эффективность использования ресурсов кластера.

    Примечания к выпуску

    В этом разделе описаны новые функции, улучшения, устаревшие возможности и известные проблемы плагина Alauda Container Platform Vertical Pod Autoscaler.

    Поддерживаемые версии

    ВерсияВерсия
    v4.3.0v4.1, v4.2, v4.3

    Примечания к выпуску v4.3

    v4.3.0
    1. Устранение уязвимости безопасности.

    Политика жизненного цикла

    Следующая таблица описывает график жизненного цикла выпущенных версий плагина Alauda Container Platform Vertical Pod Autoscaler:

    ВерсияДата выпускаОкончание срока поддержки
    v4.3.02026-5-82028-5-8

    Понимание VerticalPodAutoscalers

    VerticalPodAutoscaler (VPA) используется для рекомендации или автоматического обновления запросов и лимитов ресурсов CPU и memory для ваших Pods на основе их исторических шаблонов использования.

    После создания VPA платформа начинает отслеживать использование ресурсов целевыми Pods. После сбора достаточного объема данных VPA вычисляет рекомендуемые значения ресурсов. В зависимости от настроенного режима обновления VPA может либо автоматически применить эти рекомендации, либо просто предоставить их для ручной проверки и применения.

    Анализируя использование ресурсов с течением времени, VPA помогает обеспечить выделение вашим Pods необходимых ресурсов без избыточного резервирования, что приводит к более эффективному использованию ресурсов во всем кластере.

    Как работает VPA?

    VerticalPodAutoscaler (VPA) расширяет концепцию оптимизации ресурсов Pod. VPA отслеживает использование ресурсов вашими pods и предоставляет рекомендации по запросам CPU и memory на основе наблюдаемых шаблонов использования.

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

    • Off: VPA только предоставляет рекомендации, не применяя их автоматически.
    • Manual Adjustment: вы можете вручную корректировать конфигурацию ресурсов на основе рекомендаций VPA.

    Важно: Эластичное масштабирование (горизонтальное или вертикальное) работает лучше всего, когда ресурсов кластера достаточно. При нехватке ресурсов операции масштабирования могут привести к тому, что Pods застрянут в состоянии Pending. Убедитесь, что в кластере достаточно ресурсов, задайте разумные квоты и настройте оповещения для мониторинга событий масштабирования.

    Поддерживаемые возможности

    VPA предоставляет рекомендации по ресурсам на основе исторических шаблонов использования, позволяя оптимизировать конфигурации CPU и memory вашего pod.

    Важно: При ручном применении рекомендаций VPA будет выполнено повторное создание pod, что может вызвать временное нарушение работы приложения. Для production-нагрузок рекомендуется применять рекомендации в окна обслуживания.

    Предварительные требования

    Перед использованием VPA убедитесь в следующем:

    • В вашем кластере установлен кластерный плагин Alauda Container Platform Vertical Pod Autoscaler.

      • Скачайте последнюю версию пакета плагина, совместимую с версией вашей платформы.
      • Используйте CLI-утилиту violet для загрузки пакетов Alauda Container Platform Vertical Pod Autoscalers и Alauda DevOps Pipelines в целевой кластер. Подробные инструкции по использованию violet см. в разделе CLI.
    • Убедитесь, что компоненты мониторинга развернуты в текущем кластере и работают корректно. Проверить состояние развертывания и работоспособности компонентов мониторинга можно, нажав в правом верхнем углу платформы expand > Platform Health Status..

    Установка плагина Vertical Pod Autoscaler

    1. Войдите в систему и перейдите на страницу Administrators.

    2. Нажмите Marketplace > Cluster Plugins, чтобы открыть страницу списка Cluster Plugins.

    3. Найдите кластерный плагин Alauda Container Platform Vertical Pod Autoscaler, нажмите Install, затем перейдите на страницу установки.

    Обновление плагина Vertical Pod Autoscaler

    1. Войдите в систему и перейдите на страницу Administrators.

    2. Нажмите Marketplace > Cluster Plugins, чтобы открыть страницу списка Cluster Plugins.

    3. Найдите кластерный плагин Alauda Container Platform Vertical Pod Autoscaler, нажмите Upgrade, затем перейдите на страницу установки.

    Создание VerticalPodAutoscaler

    Использование CLI

    Вы можете создать VerticalPodAutoscaler с помощью интерфейса командной строки, определив YAML-файл и выполнив команду kubectl create. В следующем примере показано вертикальное автомасштабирование pod для объекта Deployment:

    1. Создайте YAML-файл с именем vpa.yaml со следующим содержимым:

      apiVersion: autoscaling.k8s.io/v1
      kind: VerticalPodAutoscaler
      metadata:
        name: my-deployment-vpa
        namespace: default
      spec:
        targetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: my-deployment
        updatePolicy:
          updateMode: 'Off'
        resourcePolicy:
          containerPolicies:
            - containerName: '*'
              mode: 'Auto'
      1. Используйте API autoscaling.k8s.io/v1.
      2. Имя VPA
      3. Укажите целевой объект workload. VPA использует селектор workload для поиска pods, которым требуется корректировка ресурсов. Поддерживаемые типы workload включают DaemonSet, Deployment, ReplicaSet, StatefulSet, ReplicationController, Job и CronJob.
      4. Укажите версию API объекта, который требуется масштабировать.
      5. Укажите тип объекта.
      6. Целевой ресурс, к которому применяется VPA
      7. Политика обновления, определяющая, как VPA применяет рекомендации. Параметр updateMode может принимать следующие значения:
        • Auto: автоматически задает запросы ресурсов при создании pods и обновляет текущие pods до рекомендуемых запросов ресурсов. В настоящее время эквивалентно "Recreate". Этот режим может вызвать простои приложения. После поддержки обновления ресурсов pod на месте режим "Auto" будет использовать этот механизм обновления.
        • Recreate: автоматически задает запросы ресурсов при создании pods и удаляет текущие pods для обновления до рекомендуемых запросов ресурсов. Не использует обновления на месте.
        • Initial: задает запросы ресурсов только при создании pods, после этого изменений не вносит.
        • Off: автоматически не изменяет запросы ресурсов pod, а только предоставляет рекомендации в объекте VPA.
      8. Политика ресурсов, которая может задавать отдельные стратегии для разных контейнеров. Например, установка для контейнера режима "Auto" означает, что для него будут рассчитываться рекомендации, а режим "Off" означает, что рекомендации рассчитываться не будут.
      9. Применить политику ко всем контейнерам в pod.
      10. Установить режим Auto или Off. Auto означает, что для этого контейнера будут сгенерированы рекомендации, Off означает, что рекомендации генерироваться не будут.
    2. Примените YAML-файл, чтобы создать VPA:

      kubectl create -f vpa.yaml

      Пример вывода:

      verticalpodautoscaler.autoscaling.k8s.io/my-deployment-vpa created
    3. После создания VPA вы можете просмотреть рекомендации, выполнив следующую команду:

      kubectl describe vpa my-deployment-vpa

      Пример вывода (частично):

      Status:
        Recommendation:
          Container Recommendations:
            Container Name:  my-container
            Lower Bound:
              Cpu:     100m
              Memory:  262144k
            Target:
              Cpu:     200m
              Memory:  524288k
            Upper Bound:
              Cpu:     300m
              Memory:  786432k

    Использование Web Console

    1. Войдите в систему и перейдите в Container Platform.

    2. В левой панели навигации нажмите Workloads > Deployments.

    3. Нажмите на Deployment Name.

    4. Прокрутите вниз до области Elastic Scaling и нажмите Update справа.

    5. Выберите Vertical Scaling и настройте правила масштабирования.

      ПараметрОписание
      Scaling ModeВ настоящее время поддерживается режим Manual Scaling, который предоставляет рекомендуемые конфигурации ресурсов на основе анализа предыдущего использования ресурсов. Вы можете вручную настроить значения в соответствии с рекомендациями. Корректировки приведут к повторному созданию и перезапуску pods, поэтому выберите подходящее время, чтобы не влиять на работающие приложения.
      Как правило, после того как pods работают более 8 дней, рекомендуемые значения становятся точными.
      Обратите внимание: при недостатке ресурсов кластера масштабирование может привести к состоянию Pending для Pods. Убедитесь, что в кластере достаточно ресурсов или заданы разумные квоты, либо настройте оповещения для мониторинга условий масштабирования.
      Target ContainerПо умолчанию используется первый контейнер workload. При необходимости вы можете выбрать включение рекомендаций по ограничениям ресурсов для одного или нескольких контейнеров.
    6. Нажмите Update.

    Расширенная настройка VPA

    Параметры политики обновления

    • updateMode: "Off" — VPA только предоставляет рекомендации, не применяя их автоматически. При необходимости вы можете применить эти рекомендации вручную.
    • updateMode: "Auto" — автоматически задает запросы ресурсов при создании pods и обновляет текущие pods до рекомендуемых значений. В настоящее время эквивалентно "Recreate".
    • updateMode: "Recreate" — автоматически задает запросы ресурсов при создании pods и удаляет текущие pods для обновления до рекомендуемых значений.
    • updateMode: "Initial" — задает запросы ресурсов только при создании pods, после этого изменений не вносит.
    • minReplicas: <number> — минимальное количество реплик. Обеспечивает сохранение этого минимального количества доступных pods, когда Updater удаляет pods. Должно быть больше 0.

    Параметры политики контейнера

    • containerName: "*" — применить политику ко всем контейнерам в pod.
    • mode: "Auto" — автоматически генерировать рекомендации для контейнера.
    • mode: "Off" — не генерировать рекомендации для контейнера.

    Примечания:

    • Рекомендации VPA основаны на исторических данных об использовании, поэтому для достижения точности может потребоваться несколько дней работы pod.
    • При применении рекомендаций VPA в режиме Auto будет выполнено повторное создание pod, что может вызвать временное нарушение работы приложения.

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

    После настройки VPA рекомендуемые значения лимитов ресурсов CPU и memory для целевого контейнера можно просмотреть в области Elastic Scaling. В области Containers выберите вкладку целевого контейнера и нажмите значок справа от Resource Limits, чтобы обновить лимиты ресурсов в соответствии с рекомендуемыми значениями.