Автомасштабирование вертикального модуля Pod в Служба Azure Kubernetes (AKS)

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

Автомасштабирование по вертикали pod предоставляет рекомендации по использованию ресурсов с течением времени. Чтобы управлять внезапным увеличением использования ресурсов, используйте средство автомасштабирования горизонтального модуля Pod, которое масштабирует количество реплика pod по мере необходимости.

Льготы

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

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

  • Модуль pod вытеснен, если он должен изменить запросы ресурсов, если его режим масштабирования установлен для автоматического или повторного создания.

  • Задание ограничений ЦП и памяти для отдельных контейнеров путем указания политики ресурсов

  • Гарантирует, что узлы имеют правильные ресурсы для планирования pod

  • Настраиваемое ведение журнала любых настроек для ресурсов процессора или памяти, сделанных

  • Повышение использования ресурсов кластера и освобождение ЦП и памяти для других модулей pod.

Ограничения

  • Автомасштабирование вертикального модуля Pod поддерживает не более 1000 модулей pod, связанных с VerticalPodAutoscaler объектами на кластер.

  • VPA может рекомендовать больше ресурсов, чем доступно в кластере. В результате это предотвращает назначение модуля pod узлу и запуску, так как узел не имеет достаточных ресурсов. Это ограничение можно преодолеть, задав LimitRange максимально доступные ресурсы для каждого пространства имен, что гарантирует, что модули pod не запрашивают больше ресурсов, чем указано. Кроме того, можно задать максимально допустимые рекомендации по ресурсам для каждого модуля pod в объекте VerticalPodAutoscaler . Помните, что VPA не может полностью преодолеть нехватку ресурсов узла. Диапазон ограничений исправлен, но использование ресурсов узла динамически изменяется.

  • Мы не рекомендуем использовать вертикальное автомасштабирование pod с горизонтальным автомасштабированием pod, который масштабируется на основе одних и того же показателя использования ЦП и памяти.

  • Средство рекомендаций VPA хранит только до восьми дней исторических данных.

  • VPA не поддерживает рабочие нагрузки на основе JVM из-за ограниченной видимости фактического использования памяти рабочей нагрузки.

  • Не рекомендуется или не поддерживается для запуска собственной реализации VPA вместе с этой управляемой реализацией VPA. Поддержка дополнительного или настраиваемого рекомендуемого средства.

  • Контейнеры Windows AKS не поддерживаются.

Подготовка к работе

  • В кластере AKS работает Kubernetes версии 1.24 или более поздней.

  • Интерфейс командной строки Azure версии 2.52.0 или более поздней версии, установленный и настроенный. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

  • kubectl необходимо подключиться к кластеру, который требуется установить VPA.

Обзор VPA

Объект API

Вертикальное автомасштабирование pod — это ресурс API в группе API Автомасштабирования Kubernetes. Поддерживаемая версия — 0.11 и выше, и ее можно найти в репозитории автомасштабирования Kubernetes.

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

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

  • Обновление — это проверка, какие из управляемых модулей pod имеют правильный набор ресурсов, и, если нет, убивает их, чтобы их можно было воссоздать их контроллерами с обновленными запросами.

  • Контроллер допуска VPA — он задает правильные запросы ресурсов на новых модулях pod (созданных или повторно созданных их контроллером из-за действия Updater).

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

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

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

Для обеспечения высокой доступности AKS поддерживает два контроллера допуска реплика.

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

Ресурс автомасштабирования вертикального модуля Pod вставляется для каждого контроллера, для которого требуется автоматически вычислить требования к ресурсам. Это чаще всего развертывание. Существует четыре режима, в которых работают виртуальные платформы:

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

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

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

  1. Установите UpdateMode = "Off" в рабочем кластере и запустите VPA в режиме рекомендаций, чтобы протестировать и получить представление о VPA. UpdateMode = Off может избежать неправильной настройки, которая может вызвать сбой.

  2. Сначала создайте наблюдаемость, собирая фактические данные телеметрии использования ресурсов в течение заданного периода времени. Это помогает понять поведение и признаки симптомов или проблем с ресурсами контейнера и pod, на которые влияют рабочие нагрузки, выполняемые на них.

  3. Ознакомьтесь с данными мониторинга, чтобы понять характеристики производительности. На основе этого анализа задайте требуемые запросы и ограничения соответствующим образом, а затем в следующем развертывании или обновлении

  4. Задайте updateMode значение Auto, Recreateили Initial в зависимости от ваших требований.

Развертывание, обновление или отключение VPA в кластере

В этом разделе описано, как развернуть, обновить или отключить средство автомасштабирования Вертикального модуля Pod в кластере.

  1. Чтобы включить VPA в новом кластере, используйте --enable-vpa параметр с командой az aks create .

    az aks create -n myAKSCluster -g myResourceGroup --enable-vpa
    

    Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

  2. При необходимости, чтобы включить VPA в существующем кластере, используйте --enable-vpa команду [https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update] .

    az aks update -n myAKSCluster -g myResourceGroup --enable-vpa 
    

    Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

  3. При необходимости, чтобы отключить VPA в существующем кластере, используйте --disable-vpa команду [https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update] .

    az aks update -n myAKSCluster -g myResourceGroup --disable-vpa
    

    Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

  4. Чтобы убедиться, что модули pod Autoscaler по вертикали успешно созданы, используйте команду get kubectl.

kubectl get pods -n kube-system

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

NAME                                        READY   STATUS    RESTARTS   AGE
vpa-admission-controller-7867874bc5-vjfxk   1/1     Running   0          41m
vpa-recommender-5fd94767fb-ggjr2            1/1     Running   0          41m
vpa-updater-56f9bfc96f-jgq2g                1/1     Running   0          41m

Тестирование установки средства вертикального автомасштабирования pod

Следующие шаги создают развертывание с двумя модулями pod, каждый из которых выполняет один контейнер, который запрашивает 100 милликоров и пытается использовать чуть выше 500 милликоров. Также создается конфигурация VPA, указывающая на развертывание. VPA наблюдает поведение модулей pod и через пять минут обновляется с более высоким запросом ЦП.

  1. Создайте файл с именем hamster.yaml и скопируйте в следующем манифесте примера вертикального автомасштабирования Pod из репозитория kubernetes/autoscaler GitHub.

  2. hamster.yaml Разверните пример автомасштабирования вертикального pod с помощью команды kubectl apply и укажите имя манифеста YAML:

    kubectl apply -f hamster.yaml
    

    Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

  3. Выполните следующую команду kubectl get , чтобы получить модули pod из примера приложения хомяков:

    kubectl get pods -l app=hamster
    

    Пример выходных данных выглядит следующим образом:

    hamster-78f9dcdd4c-hf7gk   1/1     Running   0          24s
    hamster-78f9dcdd4c-j9mc7   1/1     Running   0          24s
    
  4. Используйте команду kubectl описать в одном из модулей pod для просмотра резервирования ЦП и памяти. Замените exampleID одним из идентификаторов pod, возвращенных в выходных данных предыдущего шага.

    kubectl describe pod hamster-exampleID
    

    Пример выходных данных — это фрагмент сведений о кластере:

     hamster:
        Container ID:  containerd://
        Image:         k8s.gcr.io/ubuntu-slim:0.1
        Image ID:      sha256:
        Port:          <none>
        Host Port:     <none>
        Command:
          /bin/sh
        Args:
          -c
          while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done
        State:          Running
          Started:      Wed, 28 Sep 2022 15:06:14 -0400
        Ready:          True
        Restart Count:  0
        Requests:
          cpu:        100m
          memory:     50Mi
        Environment:  <none>
    

    Модуль pod имеет 100 миллипу и 50 Мибибайт памяти, зарезервированных в этом примере. Для этого примера приложения модуль pod должен выполняться менее 100 миллипусов, поэтому емкость ЦП недоступна. Модули pod также резервирует гораздо меньше памяти, чем требуется. Развертывание вертикального модуля Pod Autoscaler vpa-recommender анализирует модули pod, в которых размещено приложение хомячка, чтобы узнать, соответствуют ли требования к ЦП и памяти. Если необходимы корректировки, vpa-updater повторно запускает модули pod с обновленными значениями.

  5. Подождите, пока vpa-updater запустит новый модуль хомячки, который должен занять несколько минут. Вы можете отслеживать модули pod с помощью команды get kubectl.

    kubectl get --watch pods -l app=hamster
    
  6. Когда запускается новый модуль хомячки, опишите модуль pod, выполняющий команду kubectl, и просмотрите обновленные резервирования ЦП и памяти.

    kubectl describe pod hamster-<exampleID>
    

    Пример выходных данных — это фрагмент сведений, описывающих модуль pod:

    State:          Running
      Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    

    В предыдущих выходных данных видно, что резервирование ЦП увеличилось до 587 миллипу, что превышает пять раз исходное значение. Объем памяти увеличился до 262 144 Килобайт, что составляет около 250 Мибибайтов или пять раз, чем исходное значение. Этот модуль pod был недостаточно ресурсоемким, и вертикальный модуль автомасштабирования pod исправил оценку с гораздо более подходящим значением.

  7. Чтобы просмотреть обновленные рекомендации из VPA, выполните команду kubectl, чтобы описать сведения о ресурсе хомяк-vpa.

    kubectl describe vpa/hamster-vpa
    

    Пример выходных данных — это фрагмент сведений об использовании ресурсов:

     State:          Running
      Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    

Настройка запросов автомасштабирования pod

Автомасштабирование по вертикали pod использует VerticalPodAutoscaler объект для автоматического задания запросов ресурсов на pod, если для updateMode задано значение Auto. Можно задать другое значение в зависимости от требований и тестирования. В этом примере для updateMode задано значение Recreate.

  1. Включите VPA для кластера, выполнив следующую команду. Замените имя кластера именем myAKSCluster кластера AKS и замените myResourceGroup именем группы ресурсов, в котором размещен кластер.

    az aks update -n myAKSCluster -g myResourceGroup --enable-vpa
    
  2. Создайте файл azure-autodeploy.yaml и скопируйте в него следующий манифест.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: vpa-auto-deployment
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: vpa-auto-deployment
      template:
        metadata:
          labels:
            app: vpa-auto-deployment
        spec:
          containers:
          - name: mycontainer
            image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
            resources:
              requests:
                cpu: 100m
                memory: 50Mi
            command: ["/bin/sh"]
            args: ["-c", "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done"]
    

    В этом манифесте описывается развертывание с двумя модулями pod. Каждый модуль pod имеет один контейнер, который запрашивает 100 миллиCPU и 50 МиБ памяти.

  3. Создайте модуль pod с помощью команды kubectl create, как показано ниже.

    kubectl create -f azure-autodeploy.yaml
    

    Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

  4. Выполните следующую команду kubectl get , чтобы получить модули pod:

    kubectl get pods
    

    Выходные данные похожи на следующий пример, показывающий имя и состояние модулей pod:

    NAME                                   READY   STATUS    RESTARTS   AGE
    vpa-auto-deployment-54465fb978-kchc5   1/1     Running   0          52s
    vpa-auto-deployment-54465fb978-nhtmj   1/1     Running   0          52s
    
  5. Создайте файл с именем azure-vpa-auto.yamlи скопируйте его в следующем манифесте, описывающего VerticalPodAutoscaler:

    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: vpa-auto
    spec:
      targetRef:
        apiVersion: "apps/v1"
        kind:       Deployment
        name:       vpa-auto-deployment
      updatePolicy:
        updateMode: "Recreate"
    

    Значение targetRef.name указывает, что любой модуль pod, контролируемый именем vpa-auto-deployment развертывания, принадлежит VerticalPodAutoscaler. Значение updateModeRecreate означает, что контроллер автомасштабирования вертикального модуля pod может удалить модуль pod, настроить запросы ЦП и памяти, а затем создать новый модуль pod.

  6. Примените манифест к кластеру с помощью команды kubectl apply :

    kubectl create -f azure-vpa-auto.yaml
    
  7. Подождите несколько минут и снова просмотрите запущенные модули pod, выполнив следующую команду kubectl get :

    kubectl get pods
    

    Выходные данные похожи на следующий пример, показывающий, что имена модулей pod изменились и состояние модулей pod:

    NAME                                   READY   STATUS    RESTARTS   AGE
    vpa-auto-deployment-54465fb978-qbhc4   1/1     Running   0          2m49s
    vpa-auto-deployment-54465fb978-vbj68   1/1     Running   0          109s
    
  8. Получите подробные сведения об одном из запущенных модулей pod с помощью команды get Kubectl. Замените podName именем одного из модулей pod, полученных на предыдущем шаге.

    kubectl get pod podName --output yaml
    

    Выходные данные похожи на следующий пример, показывающий, что контроллер автомасштабирования вертикального модуля pod увеличил запрос памяти до 262144k и ЦП-запроса на 25 миллиCPU.

    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        vpaObservedContainers: mycontainer
        vpaUpdates: 'Pod resources updated by vpa-auto: container 0: cpu request, memory
          request'
      creationTimestamp: "2022-09-29T16:44:37Z"
      generateName: vpa-auto-deployment-54465fb978-
      labels:
        app: vpa-auto-deployment
    
    spec:
      containers:
      - args:
        - -c
        - while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done
        command:
        - /bin/sh
        image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        imagePullPolicy: IfNotPresent
        name: mycontainer
        resources:
          requests:
            cpu: 25m
            memory: 262144k
    
  9. Чтобы получить подробные сведения о вертикальном автомасштабировании pod и его рекомендациях по ЦП и памяти, используйте команду get kubectl :

    kubectl get vpa vpa-auto --output yaml
    

    Выходные данные похожи на следующий пример:

     recommendation:
      containerRecommendations:
      - containerName: mycontainer
        lowerBound:
          cpu: 25m
          memory: 262144k
        target:
          cpu: 25m
          memory: 262144k
        uncappedTarget:
          cpu: 25m
          memory: 262144k
        upperBound:
          cpu: 230m
          memory: 262144k
    

    Результаты показывают target , что для оптимального выполнения контейнера не требуется изменять ЦП или целевой объект памяти. Результаты могут отличаться от того, где рекомендация целевого ЦП и памяти выше.

    Средство автомасштабирования вертикального модуля pod использует lowerBound и upperBound атрибуты, чтобы решить, следует ли удалить модуль pod и заменить его новым модулем pod. Если модуль pod запрашивает меньше нижней или больше верхней границы, средство автомасштабирования вертикального модуля pod удаляет модуль pod и заменяет его на pod, соответствующий целевому атрибуту.

Дополнительный рекомендуемый параметр для автомасштабирования вертикального модуля Pod

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

В следующем примере приведен дополнительный рекомендуемый метод, применяемый к существующему кластеру AKS. Затем вы настроите объект VPA для использования дополнительного рекомендуемого средства.

  1. Создайте файл с именем extra_recommender.yaml и скопируйте его в следующем манифесте:

    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: extra-recommender 
      namespace: kube-system 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: extra-recommender 
      template: 
        metadata: 
          labels: 
            app: extra-recommender 
        spec: 
          serviceAccountName: vpa-recommender 
          securityContext: 
            runAsNonRoot: true 
            runAsUser: 65534 # nobody 
          containers: 
          - name: recommender 
            image: registry.k8s.io/autoscaling/vpa-recommender:0.13.0 
            imagePullPolicy: Always 
            args: 
              - --recommender-name=extra-recommender 
            resources: 
              limits: 
                cpu: 200m 
                memory: 1000Mi 
              requests: 
                cpu: 50m 
                memory: 500Mi 
            ports: 
            - name: prometheus 
              containerPort: 8942 
    
  2. Разверните пример автомасштабирования вертикального extra-recomender.yaml модуля Pod с помощью команды kubectl apply и укажите имя манифеста YAML.

    kubectl apply -f extra-recommender.yaml 
    

    Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.

  3. Создайте файл с именем hamnster_extra_recommender.yaml и скопируйте его в следующем манифесте:

    apiVersion: "autoscaling.k8s.io/v1" 
    kind: VerticalPodAutoscaler 
    metadata: 
      name: hamster-vpa 
    spec: 
      recommenders:  
        - name: 'extra-recommender' 
      targetRef: 
        apiVersion: "apps/v1" 
        kind: Deployment 
        name: hamster 
      updatePolicy: 
        updateMode: "Auto" 
      resourcePolicy: 
        containerPolicies: 
          - containerName: '*' 
            minAllowed: 
              cpu: 100m 
              memory: 50Mi 
            maxAllowed: 
              cpu: 1 
              memory: 500Mi 
            controlledResources: ["cpu", "memory"] 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: hamster 
    spec: 
      selector: 
        matchLabels: 
          app: hamster 
      replicas: 2 
      template: 
        metadata: 
          labels: 
            app: hamster 
        spec: 
          securityContext: 
            runAsNonRoot: true 
            runAsUser: 65534 # nobody 
          containers: 
            - name: hamster 
              image: k8s.gcr.io/ubuntu-slim:0.1 
              resources: 
                requests: 
                  cpu: 100m 
                  memory: 50Mi 
              command: ["/bin/sh"] 
              args: 
                - "-c" 
                - "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done" 
    

    Если memory этот параметр не указан, controlledResourcesсредство рекомендаций не отвечает на события OOM. В этом случае вы устанавливаете только ЦП.controlledValues controlledValues позволяет выбрать, следует ли обновлять запросы ресурсов контейнера по RequestsOnly параметру или как запросы ресурсов, так и ограничения с помощью RequestsAndLimits этого параметра. Значение по умолчанию — RequestsAndLimits. Если вы используете RequestsAndLimits этот параметр, запросы вычисляются на основе фактического использования, а ограничения вычисляются на основе текущего запроса и соотношения ограничений pod.

    Например, если начать с модуля pod, который запрашивает 2 ЦП и ограничивает 4 ЦП, VPA всегда задает ограничение в два раза больше, чем запросы. Тот же принцип применяется к памяти. При использовании RequestsAndLimits режима он может служить схемой для первоначальных запросов и ограничений ресурсов приложения.

Вы можете упростить объект VPA с помощью автоматических и вычислительных рекомендаций для ЦП и памяти.

  1. hamster_extra-recomender.yaml Разверните пример с помощью команды kubectl apply и укажите имя манифеста YAML.

    kubectl apply -f hamster_customized_recommender.yaml
    
  2. Подождите, пока vpa-updater запустит новый модуль хомячки, который должен занять несколько минут. Вы можете отслеживать модули pod с помощью команды get kubectl.

    kubectl get --watch pods -l app=hamster
    
  3. Когда запускается новый модуль хомячки, опишите модуль pod, выполняющий команду kubectl, и просмотрите обновленные резервирования ЦП и памяти.

    kubectl describe pod hamster-<exampleID>
    

    Пример выходных данных — это фрагмент сведений, описывающих модуль pod:

    State:          Running
      Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    
  4. Чтобы просмотреть обновленные рекомендации из VPA, выполните команду kubectl, чтобы описать сведения о ресурсе хомяк-vpa.

    kubectl describe vpa/hamster-vpa
    

    Пример выходных данных — это фрагмент сведений об использовании ресурсов:

    State:          Running
     Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    Spec:
      recommenders:
        Name: customized-recommender
    

Устранение неполадок

Чтобы диагностировать проблемы с установкой VPA, выполните следующие действия.

  1. Проверьте, выполняются ли все системные компоненты с помощью следующей команды:

    kubectl --namespace=kube-system get pods|grep vpa
    

Выходные данные должны содержать три модуля pod — рекомендателя, средства обновления и контроллера допуска со состоянием, показывающим состояние Running.

  1. Убедитесь, что системные компоненты регистрируют ошибки. Для каждого из модулей pod, возвращаемых предыдущей командой, выполните следующую команду:

    kubectl --namespace=kube-system logs [pod name] | grep -e '^E[0-9]\{4\}'
    
  2. Убедитесь, что определение настраиваемого ресурса было создано, выполнив следующую команду:

    kubectl get customresourcedefinition | grep verticalpodautoscalers
    

Следующие шаги

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

  • Также вы можете использовать средство горизонтального автомасштабирования pod для автоматической настройки числа pod, на которых выполняется приложение. Инструкции по использованию средства горизонтального автомасштабирования pod см. в статье Руководство. Масштабирование приложений в Службе Azure Kubernetes (AKS).

  • Дополнительные сведения об определениях связанных объектов VPA см. в разделе "Автомасштабирование вертикального модуля pod" [справочник по API].