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

    Обзор

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

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

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

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

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

    ВерсияВерсия
    v4.2.0v4.1, v4.2

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

    v4.2.0
    1. Устранение уязвимости в системе безопасности.
    2. Теперь может выпускаться независимо.

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

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

    ВерсияДата выпускаОкончание срока поддержки
    v4.2.02025-12-162027-12-16

    Понимание VerticalPodAutoscalers

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      • Загрузите последний пакет плагина, совместимый с версией вашей платформы.
      • Используйте инструмент violet CLI для загрузки пакетов Alauda Container Platform Vertical Pod Autoscalers и Alauda DevOps Pipelines в целевой кластер. Подробные инструкции по использованию violet см. в CLI.
    • Убедитесь, что компоненты мониторинга развернуты в текущем кластере и работают корректно. Проверить состояние развертывания и работоспособность компонентов мониторинга можно, нажав в правом верхнем углу платформы развернуть > 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. В следующем примере показано вертикальное autoscaling для объекта 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. Укажите целевой объект рабочей нагрузки. VPA использует селектор рабочей нагрузки, чтобы найти pods, которым требуется корректировка ресурсов. Поддерживаемые типы рабочих нагрузок включают 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

    Использование веб-консоли

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

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

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

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

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

      ПараметрОписание
      Scaling ModeВ настоящее время поддерживается режим Manual Scaling, который предоставляет рекомендуемые конфигурации ресурсов на основе анализа предыдущего использования ресурсов. Вы можете вручную скорректировать параметры в соответствии с рекомендуемыми значениями. Корректировки приведут к пересозданию и перезапуску pods, поэтому выберите подходящее время, чтобы избежать влияния на работающие приложения.
      Как правило, после того как pods работают более 8 дней, рекомендуемые значения становятся точными.
      Обратите внимание, что при недостатке ресурсов кластера масштабирование может привести к тому, что Pods окажутся в состоянии Pending. Убедитесь, что в кластере достаточно ресурсов или заданы разумные квоты, либо настройте оповещения для отслеживания условий масштабирования.
      Target ContainerПо умолчанию используется первый контейнер рабочей нагрузки. При необходимости можно включить рекомендации по ограничениям ресурсов для одного или нескольких контейнеров.
    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 и памяти для целевого контейнера можно просмотреть в области Elastic Scaling. В области Containers выберите вкладку целевого контейнера и нажмите значок справа от Resource Limits, чтобы обновить ограничения ресурсов в соответствии с рекомендованными значениями.