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

    Обзор

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

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

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

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

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

    ВерсияВерсия
    v4.2.0v4.0, v4.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 и памяти для ваших подов на основе их исторических шаблонов использования.

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

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

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

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

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

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

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

    Поддерживаемые функции

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

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

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

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

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

      • Скачайте последний пакет плагина, совместимый с вашей версией платформы.
      • Используйте CLI-инструмент violet для загрузки пакетов 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. В следующем примере показано вертикальное автоскейлирование подов для объекта 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 использует селектор рабочей нагрузки для поиска подов, которым нужно скорректировать ресурсы. Поддерживаемые типы рабочих нагрузок: DaemonSet, Deployment, ReplicaSet, StatefulSet, ReplicationController, Job и CronJob.
      4. Укажите версию API объекта для масштабирования.
      5. Укажите тип объекта.
      6. Целевой ресурс, к которому применяется VPA.
      7. Политика обновления, определяющая, как VPA применяет рекомендации. Параметр updateMode может принимать значения:
        • Auto: Автоматически устанавливает запросы ресурсов при создании подов и обновляет текущие поды до рекомендуемых значений. В настоящее время эквивалентно "Recreate". Этот режим может вызвать простой приложения. После поддержки обновлений ресурсов подов на месте режим "Auto" будет использовать этот механизм.
        • Recreate: Автоматически устанавливает запросы ресурсов при создании подов и эвакуирует текущие поды для обновления до рекомендуемых значений. Обновления на месте не используются.
        • Initial: Устанавливает запросы ресурсов только при создании подов, последующие изменения не применяются.
        • Off: Не изменяет запросы ресурсов подов автоматически, только предоставляет рекомендации в объекте VPA.
      8. Политика ресурсов, позволяющая задавать отдельные стратегии для разных контейнеров. Например, установка режима контейнера в "Auto" означает, что для этого контейнера будут рассчитываться рекомендации, а "Off" — что рекомендации не будут рассчитываться.
      9. Применить политику ко всем контейнерам в поде.
      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.

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

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

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

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

    Опции политики обновления

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

    Опции политики контейнера

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

    Примечания:

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

    Последующие действия

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