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

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

    Понимание VerticalPodAutoscalers

    Вы можете создать VerticalPodAutoscaler, чтобы рекомендовать или автоматически обновлять запросы и лимиты ресурсов CPU и памяти для ваших подов на основе их исторических шаблонов использования.

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

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

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

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

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

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

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

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

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

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

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

    • Убедитесь, что компоненты мониторинга развернуты в текущем кластере и работают корректно. Вы можете проверить статус развертывания и состояние компонентов мониторинга, нажав в правом верхнем углу платформы expand > Platform Health Status..
    • В вашем кластере должен быть установлен кластерный плагин Alauda Container Platform Vertical Pod Autoscaler.

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

    Перед использованием VPA необходимо установить кластерный плагин Vertical Pod Autoscaler:

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

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

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

    Создание 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: <число> — Минимальное количество реплик. Обеспечивает наличие этого минимального количества подов в доступном состоянии при эвакуации подов Updater-ом. Должно быть больше 0.

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

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

    Примечания:

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

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

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