Назначение групп резервирования емкости пулам узлов Службы Azure Kubernetes (AKS)

По мере изменения требований рабочей нагрузки можно связать существующие группы резервирования емкости (CRG) с пулами узлов Службы Azure Kubernetes (AKS), чтобы гарантировать выделенную емкость для них. Группы резервирования емкости позволяют резервировать вычислительные мощности в регионе Azure или зоне доступности в течение любого времени. Эта функция полезна для рабочих нагрузок, требующих гарантированной емкости, таких как с прогнозируемыми шаблонами трафика или теми, которые должны соответствовать определенным требованиям к производительности.

В этой статье вы узнаете, как использовать группы резервирования ресурсов с пулами узлов в AKS.

Замечание

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

Предварительные требования для использования групп резервирования емкости с пулами узлов AKS

  • Вам потребуется Azure CLI версии 2.56 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
  • Вам нужна существующая группа резервирования емкости с по крайней мере одним резервированием емкости. Если нет, пул узлов добавляется в кластер с предупреждением, и группа резервирования емкости не будет связана.
  • Вам необходимо создать управляемую пользователем идентичность с Contributor ролью для группы ресурсов, включающей группу резервирования емкости, и назначить эту идентичность вашему кластеру AKS. Назначаемые системой управляемые удостоверения не работают для этой функции.

Создайте управляемую идентичность, назначенную пользователем, и привяжите её к кластеру AKS.

  1. Создайте пользовательское управляемое удостоверение с помощью команды az identity create.

    az identity create --name <identity-name> --resource-group <resource-group-name> --location <location>
    
  2. Получите идентификатор управляемого удостоверения, назначенного пользователю, используя команду az identity show, и установите его в переменной среды.

    IDENTITY_ID=$(az identity show --name <identity-name> --resource-group <resource-group-name> --query identity.id -o tsv)
    
  3. Назначьте роль идентификации, назначенной пользователем, с помощью команды Contributor.

    az role assignment create --assignee $IDENTITY_ID --role "Contributor" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
    

    Распространение назначения роли может занять до 60 минут.

  4. Назначьте управляемое удостоверение, назначаемое пользователем, новому или существующему кластеру AKS, используя флаг --assign-identity с командой az aks create или az aks update.

    # Create a new AKS cluster with the user-assigned managed identity
    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --location <location> \
        --node-vm-size <vm-size> --node-count <node-count> \
        --assign-identity $IDENTITY_ID \
        --generate-ssh-keys
    
    # Update an existing AKS cluster to use the user-assigned managed identity
    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --location <location> \
        --node-vm-size <vm-size> \
        --node-count <node-count> \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID         
    

Получение идентификатора существующей группы резервирования емкости

Получите идентификатор существующей группы резервирования емкости с помощью az capacity reservation group show команды и задайте для нее переменную среды.

CRG_ID=$(az capacity reservation group show --capacity-reservation-group <crg-name> --resource-group <resource-group-name> --query id -o tsv)

Свяжите существующую группу резервирования мощности с новым пулом узлов

Свяжите существующую группу резервирования емкости с новым пулом узлов с помощью команды az aks nodepool add с флагом --crg-id. В следующем примере предполагается, что у вас есть CRG с именем myCRG.

az aks nodepool add --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --crg-id $CRG_ID

Связывание существующей группы резервирования емкости с существующим пулом узлов (предварительная версия)

Свяжите существующую группу резервирования емкости с существующим пулом узлов с помощью команды az aks nodepool update с флагом --crg-id.

  • Для зональных пулов узлов эта операция инициирует последовательное обновление целевого пула узлов. Процесс обновления включает поочерёдное выполнение операций cordon и drain на всех узлах с последующей перезагрузкой для применения изменений.
  • Для незональных (региональных) пулов узлов на этапе предварительной версии сначала масштабируйте пул узлов до нуля, а затем примените группу резервирования ёмкости.

Prerequisites

  • aks-preview Установите версию 20.0.0b7 расширения Azure CLI или более позднюю перед выполнением этой команды.

  • Убедитесь, что у группы резервирования мощности достаточно ресурсов для стратегии обновления вашего пула узлов. При maxSurge > 0резервировании дополнительной емкости для максимального значения всплеска . Например, пул из 10 узлов, в котором для параметра maxSurge задано значение 2, может работать с количеством узлов до 12 во время обновления. Эти дополнительные ресурсы не требуются для развертываний только с параметром maxUnavailable или для региональных путей, масштабируемых до нуля.

    az aks nodepool update --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --crg-id $CRG_ID
    

Связывание существующей группы резервирования емкости с пулом системных узлов

Чтобы связать существующую группу резервирования емкости с пулом системных узлов, необходимо назначить назначаемое пользователем управляемое удостоверение с ролью Contributor при создании кластера. Затем можно использовать --crg-id флаг для связывания группы резервирования емкости с пулом системных узлов.

  • Создайте новый кластер AKS с управляемым удостоверением, назначенным пользователем, и свяжите его с группой резервирования емкости, используя флаги --assign-identity и --crg-id с командой az aks create.

    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --location <location> \
        --node-vm-size <vm-size> --node-count <node-count> \
        --assign-identity $IDENTITY_ID \
        --crg-id $CRG_ID \
        --generate-ssh-keys
    

Дальнейшие действия. Управление пулами узлов в AKS

Дополнительные сведения об управлении пулами узлов в AKS см. в статье "Управление пулами узлов" в службе Azure Kubernetes (AKS).