Использование пулов узлов виртуальных машин в службе Azure Kubernetes (AKS)

В этой статье вы узнаете о новом типе пула узлов виртуальных машин для AKS.

С помощью пулов узлов Виртуальных машин AKS напрямую управляет подготовкой и инициализацией каждого отдельного узла. Для пулов узлов, созданных на основе Масштабируемых наборов виртуальных машин, AKS управляет моделью этих наборов и использует её для обеспечения согласованности между всеми узлами в пуле. Пулы узлов виртуальных машин позволяют оркестрировать кластер с виртуальными машинами, которые лучше всего подходят для индивидуальных рабочих нагрузок.

Обзор

Принцип работы

Пул узлов состоит из набора виртуальных машин , где разные размеры виртуальных машин предназначены для поддержки различных типов рабочих нагрузок. Эти размеры виртуальных машин, называемые номерами SKU, классифицируются в разных семействах, оптимизированных для конкретных целей. Дополнительные сведения см. в документации по SKU VM. С помощью пулов узлов виртуальной машины можно выполнять масштабирование с несколькими номерами SKU вручную и даже автомасштабирование нескольких SKU.

Чтобы обеспечить масштабирование нескольких размеров виртуальных машин, пул узлов виртуальных машин использует ScaleProfile с конфигурациями, которые указывают, как пул может масштабироваться. Эти конфигурации включают в себя желаемый список размеров виртуальных машин и количество экземпляров каждого размера. Это ManualScaleProfile профиль масштабирования, который указывает требуемый размер виртуальной машины и общее количество таких виртуальных машин в пуле узлов. В ней допускается только один размер виртуальной ManualScaleProfileмашины. Необходимо создать отдельный ManualScaleProfile размер каждой виртуальной машины в пуле узлов. При создании пула узлов виртуальных машин добавьте начальный профиль ручного масштабирования для размера виртуальной машины, используя поле vm-size и включая node-count. Вы также можете добавить дополнительные профили масштабирования вручную, следуя инструкциям по добавлению профилей масштабирования вручную.

Пулы узлов виртуальной машины также допускают Auto режим, что означает, что пул узлов может использовать автомасштабирование кластера. Все пулы узлов виртуальной машины в Auto режиме могут использовать до пяти номеров SKU виртуальных машин одного семейства и автоматически масштабируют эти разные номера SKU виртуальных машин в одном пуле узлов. Каждый AutoScaleProfile может иметь собственные минимальное и максимальное количества узлов в пуле узлов.

Примечание.

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

Достоинства

Преимущества типа пула узлов на виртуальных машинах включают:

  • Гибкость. Спецификации узлов можно обновить, чтобы адаптироваться к текущей рабочей нагрузке и потребностям.
  • Точно настроенные элементы управления: управление на уровне одного узла позволяет указывать и комбинировать узлы с различными спецификациями для снятия ограничений с одной модели и улучшения согласованности.
  • Эффективность. Вы можете уменьшить объем памяти узла для кластера, упрощая требования к работе.

Виртуальные машины пулы узлов обеспечивают лучший интерфейс для динамических рабочих нагрузок и требований к высокой доступности. Узлы виртуальных машин позволяют настроить несколько виртуальных машин из одной семейства в одном пуле узлов. Рабочая нагрузка автоматически запланирована на доступные ресурсы, настроенные вами.

Сравнение возможностей

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

Тип пула узлов Возможности
пул узлов виртуальных машин Вы можете добавлять, удалять или обновлять узлы в пуле узлов. Типы виртуальных машин могут быть любой виртуальной машиной данного семейства (например, серии D, серии A и т. д.). Пулы узлов виртуальных машин также поддерживают ручное и автоматическое масштабирование для нескольких SKU.
Пул узлов, основанный на масштабируемом наборе виртуальных машин Вы можете добавлять или удалять узлы с одинаковым размером и типом в пуле узлов. При добавлении нового размера виртуальной машины в кластер необходимо создать пул узлов.

Какой интерфейс масштабирования вычислений следует выбрать в AKS?

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

  • Автоматическая подготовка узлов: лучше всего подходит для автомасштабирования с несколькими SKU и более интеллектуального и гибкого выбора SKU виртуальных машин (включая несколько семейств SKU). = Пулы узлов виртуальных машин: лучше всего подходят для ручного масштабирования с несколькими SKU и поддерживают автомасштабирование с несколькими SKU. Требуется выбрать определённые SKU: до 5 типоразмеров на каждый пул узлов
  • Масштабируемые наборы виртуальных машин: поддерживают масштабирование вручную и автоматическое масштабирование с использованием одного SKU. Требуется выбрать определенный SKU и не более одного размера для каждого пула узлов

Ограничения

  • Размеры виртуальных машин, указанные в пуле, должны иметь одинаковый тип. Например, виртуальные машины GPU и без GPU или x86 и ARM64 не могут находиться в одном пуле узлов.
  • InifiniBand недоступна.
  • Снимок пула узлов не поддерживается.
  • Все размеры виртуальных машин, выбранные в пуле узлов, должны находиться в аналогичном семействе виртуальных машин. Например, нельзя смешивать тип виртуальной машины серии N с типом виртуальной машины серии D в одном пуле узлов.
  • Виртуальные машины для пулов узлов позволяют использовать до пяти различных размеров виртуальных машин в каждом пуле узлов.

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

  • Подписка Azure. Если ее нет, можно создать бесплатную учетную запись.
  • Azure CLI версии 2.73.0 или более поздней, установлена и настроена. Чтобы узнать версию, выполните команду az --version. Дополнительные сведения об установке или обновлении Azure CLI см. в статье "Установка Azure CLI"
  • Для этой функции требуется kubernetes версии 1.27 или более поздней. Сведения об обновлении версии Kubernetes см. в разделе "Обновление кластера AKS"

Это важно

Требование настраиваемой виртуальной сети. При развертывании пула узлов виртуальных машин в настраиваемой виртуальной сети кластер должен использовать управляемое удостоверение, назначаемое пользователем, по крайней мере с разрешениями участника сети в целевой подсети. В отличие от пулов узлов масштабируемого набора виртуальных машин, пулы узлов виртуальных машин полагаются исключительно на идентичность кластера для операций присоединения к подсети и не используют собственные маркеры. Кластеры, использующие автоматически назначаемое системой управляемое удостоверение, терпят неудачу при предварительной проверке при создании или обновлении пула узлов виртуальных машин в пользовательской виртуальной сети, возвращая ошибку InvalidParameter. Дополнительные сведения о настройке управляемого удостоверения, назначаемого пользователем для кластера, см. в статье "Использование управляемого удостоверения в AKS".

Создание кластера AKS с пулами узлов на виртуальных машинах

Примечание.

В профиле масштабирования допускается только один размер виртуальной машины, а максимальный предел — пять профилей масштабирования виртуальных машин в целом для пула узлов Виртуальные машины.

Создайте кластер AKS с пулами узлов с виртуальными машинами с использованием az aks create команды с заданным флагом --vm-set-type"VirtualMachines".

В следующем примере создается кластер с именем myAKSCluster с пулом узлов виртуальных машин, содержащим два узла, создает ключи SSH, задает номер SKU подсистемы балансировки нагрузки стандартным и задает для Kubernetes версию 1.31.0:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3"
    --node-count 2 \
    --kubernetes-version 1.31.0

Создание кластера AKS с пулами узлов виртуальных машин в пользовательской виртуальной сети

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

  1. Создайте виртуальную сеть и подсеть.

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --address-prefixes 10.1.0.0/16 \
        --subnet-name mySubnet \
        --subnet-prefix 10.1.0.0/24
    
  2. Получите идентификатор ресурса подсети.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group myResourceGroup \
        --vnet-name myVnet \
        --name mySubnet \
        --query id \
        --output tsv)
    
  3. Создайте управляемый идентификатор, назначенный пользователем.

    az identity create \
        --name myAKSIdentity \
        --resource-group myResourceGroup
    
  4. Получите идентификатор субъекта и идентификатор ресурса управляемого удостоверения.

    IDENTITY_PRINCIPAL_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query principalId \
        --output tsv)
    
    IDENTITY_RESOURCE_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query id \
        --output tsv)
    
  5. Назначьте роль "Network Contributor" управляемому удостоверению в виртуальной сети.

    VNET_ID=$(az network vnet show \
        --resource-group myResourceGroup \
        --name myVnet \
        --query id \
        --output tsv)
    
    az role assignment create \
        --assignee $IDENTITY_PRINCIPAL_ID \
        --role "Network Contributor" \
        --scope $VNET_ID
    

    Для распространения разрешений, предоставленных управляемому удостоверению кластера, может потребоваться до 60 минут. Чтобы проверить состояние, используйте следующую команду.

  6. Создайте кластер AKS с пулами узлов виртуальных машин в пользовательской виртуальной сети.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type "VirtualMachines" \
        --vm-sizes "Standard_D4s_v3" \
        --node-count 2 \
        --vnet-subnet-id $SUBNET_ID \
        --assign-identity $IDENTITY_RESOURCE_ID
    

Создайте кластер с поддержкой Windows и пулом узлов Windows Виртуальной Машины

Пулы узлов виртуальной машины доступны в кластерах с поддержкой Windows. В следующем примере создается кластер с именем myAKSCluster с пулом узлов виртуальных машин. Сначала эти действия создают системный пул Linux.

  1. Создайте имя пользователя для использования в качестве учетных данных администратора для узлов Windows Server в кластере. Следующая команда запрашивает имя пользователя и задает его WINDOWS_USERNAME для использования в следующей команде.

    echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
    
  2. Создайте пароль для имени администратора, созданного на предыдущем шаге. Пароль должен быть не менее 14 символов и соответствовать требованиям к сложности паролей Windows Server.

    echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
    
  3. Создайте кластер AKS с поддержкой Windows и пулами узлов типа виртуальных машин с помощью az aks create команды с установленным --vm-set-typeфлагом"VirtualMachines".

    az aks create \
       --resource-group myResourceGroup \
       --name myAKSCluster \
       --node-count 2 \
       --enable-addons monitoring \
       --generate-ssh-keys \
       --windows-admin-username $WINDOWS_USERNAME \
       --windows-admin-password $WINDOWS_PASSWORD \
       --vm-set-type "VirtualMachines" \
       --network-plugin azure
    
  4. Добавьте пул узлов виртуальных машин в существующий кластер с поддержкой Windows с помощью az aks nodepool add команды с установленным --vm-set-typeфлагом"VirtualMachines". В следующем примере в кластер myAKSCluster добавляется пул узлов виртуальных машин с именем npwin:

    az aks nodepool add
       --resource-group myResourceGroup \
       --cluster-name myAKSCluster \
       --os-type Windows \
       --name npwin \
       --vm-sizes "Standard_D2s_V3" \
       --node-count 1
       --vm-set-type "VirtualMachines"
    

Добавление пула узлов Виртуальные машины в существующий кластер

Добавьте пул узлов Виртуальные машины в существующий кластер с помощью az aks nodepool add команды с установленным --vm-set-typeфлагом"VirtualMachines".

В следующем примере добавляется пул узлов Виртуальные машины с именем myvmpool в кластер myAKSCluster. Пул узлов создаёт ManualScaleProfile, где --vm-sizes задано значением Standard_D4s_v3, а --node-count — 3.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3" \
    --node-count 3

Добавить профиль ручного масштабирования в пул узлов

Добавьте профиль ручного масштабирования в пул узлов, используя az aks nodepool manual-scale add, с флагом --vm-sizes установленным в "Standard_D2s_v3" и node-count равным 2.

Следующий пример добавляет профиль масштабирования вручную в пул узлов myvmpool в кластере myAKSCluster. Пул узлов включает два узла с номером SKU Standard_D2s_v3 виртуальной машины.

az aks nodepool manual-scale add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-sizes "Standard_D2s_v3" \
    --node-count 2

Обновление существующего профиля масштабирования вручную

Обновите существующий профиль масштабирования вручную в пуле узлов с помощью команды az aks nodepool manual-scale update, используя флаг --vm-sizes"Standard_D2s_v3".

Примечание.

--current-vm-sizes Используйте параметр, чтобы указать размер существующего пула узлов, который требуется обновить. Вы можете обновить --vm-sizes и/или --node-count. При использовании других инструментов или REST API необходимо передать полностью заполненное поле agentPoolProfiles.virtualMachinesProfile.scale при обновлении профиля масштабирования пула узлов.

В следующем примере обновляется профиль ручного масштабирования для пула узлов myvmpool в кластере myAKSCluster. Команда обновляет число узлов до пяти и изменяет номер SKU виртуальной машины на Standard_D4s_v3Standard_D8s_v3:

az aks nodepool manual-scale update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D4s_v3" \
    --vm-sizes "Standard_D8s_v3" \
    --node-count 5

Удаление профиля ручного масштабирования

Удалите существующий профиль масштабирования вручную с помощью az aks nodepool manual-scale delete команды.

Примечание.

Параметр --current-vm-sizes указывает размер существующего пула узлов, который необходимо удалить. При использовании других средств или REST API для обновления профиля масштабирования пула узлов передайте полное agentPoolProfiles.virtualMachinesProfile.scale поле.

В следующем примере удаляется профиль масштабирования вручную для Standard_D8s_v3 SKU виртуальной машины в пуле узлов myvmpool .

az aks nodepool manual-scale delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D8s_v3"

Автомасштабирование кластера с пулами узлов виртуальных машин (предварительная версия)

Пулы узлов виртуальных машин поддерживают автомасштабирование кластера. Это можно включить с помощью флага --enable-cluster-autoscaler во время создания кластера, при добавлении нового пула узлов или при обновлении существующего пула узлов вручную.

При использовании автомасштабирования кластера с пулами узлов виртуальной машины поведение выглядит следующим образом:

  • Масштабирование вверх: автомасштабировщик реагирует на наличие ожидающих назначения pod’ов и может увеличивать количество узлов в пуле узлов, содержащем виртуальные машины нескольких размеров.
  • Уменьшение масштаба: определенный узел выбирается автомасштабированием на основе использования узла. вы можете сконфигурировать scale-down-utilization-threshold, чтобы настроить запуск действия по масштабированию кластера, когда срабатывает автоматическое масштабирование. Дополнительные сведения о настройке автомасштабирования кластера см. в документации по автомасштабированию кластера .

Ограничения

  • Эта функция доступна только в общедоступном облаке.
  • Узлы GPU в настоящее время не поддерживаются.
  • Расширение AKS (предварительная версия) версии 20.0.0b8 или более поздней.

Установка расширения aks-preview

Это важно

Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:

  • Установите или обновите расширение Azure CLI, используя команду aks-preview или az extension add.
    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview

Регистрация флага компонента

Зарегистрируйте флаг функции предварительного просмотра VMsAgentAutoscalePreview с помощью команды az feature register.

    az feature register --namespace Microsoft.ContainerService --name VMsAgentPoolAutoscalePreview

Создайте кластер AKS с пулами узлов виртуальных машин и включенной функцией автомасштабирования кластера.

  • Создайте кластер AKS с пулами узлов виртуальных машин с помощью команды az aks create с флагом --vm-set-type, установленным на "VirtualMachines", и флагом --enable-cluster-autoscaler.

В следующем примере создается кластер с именем myAKSCluster с пулом узлов виртуальных машин с размером "Standard_D4s_v3" минимального количества узлов 2, максимальное число узлов 5, а версия Kubernetes — 1.32.5:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3"
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5 \
    --kubernetes-version 1.32.5

Добавление пула узлов виртуальных машин с включенным автомасштабированием кластера в существующий кластер

  • Создайте пул узлов виртуальных машин с помощью команды az aks nodepool add с установленным флагом --vm-set-type"VirtualMachines" и флагом --enable-cluster-autoscaler.

В следующем примере в кластер с именем myAKSCluster добавляется пул узлов виртуальных машин myvmpool с включенным автомасштабированием, использованием размера виртуальной машины "Standard_D4s_v3", минимальным количеством узлов — 2, а максимальным — 5.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3" \
    --enable-cluster-autoscaler
    --min-count 2 \
    --max-count 5 \

Обновление параметров автомасштабирования кластера для пула узлов виртуальных машин с включенным автомасштабированием кластера

В следующем примере обновляются параметры пула узлов виртуальных машин myvmpool в кластере с именем myAKSCluster с помощью размера виртуальной машины "Standard_D4s_v3":

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --update-cluster-autoscaler \
    --node-vm-size "Standard_D4s_v3" \
    --min-count 3 \
    --max-count 7

Переключение профилей масштабирования пула узлов Виртуальные машины с ручного масштабирования на режим автомасштабирования

В следующем примере обновляется пул узлов Виртуальные машины myvmpool в кластере с именем myAKSCluster, преобразуя все профили масштабирования вручную в профили автомасштабирования с одинаковым минимальным и максимальным числом узлов:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Отключение автомасштабирования кластера в пуле узлов виртуальных машин

Вы можете отключить автомасштабирование кластера или переключить все профили масштабирования в пуле узлов виртуальной машины из Auto режима в режим Manual .

В следующем примере обновляется пул узлов Virtual Machines myvmpool в кластере myAKSCluster из режима Manual в режим Auto:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --disable-cluster-autoscaler

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

Из этой статьи вы узнали, как использовать пулы узлов Виртуальные машины в AKS. Дополнительные сведения о пулах узлов в AKS см. в статье "Создание пулов узлов".