Atribuir grupos de reserva de capacidade aos conjuntos de nós do Azure Kubernetes Service (AKS)

À medida que as exigências da sua carga de trabalho mudam, pode associar grupos de reserva de capacidade (CRGs) existentes aos seus pools de nós do Azure Kubernetes Service (AKS) para garantir a capacidade alocada para eles. Os grupos de reserva de capacidade permitem-lhe reservar capacidade de computação numa região Azure ou zona de disponibilidade por qualquer período de tempo. Esta funcionalidade é útil para cargas de trabalho que requerem capacidade garantida, como aquelas com padrões de tráfego previsíveis ou aquelas que precisam de cumprir requisitos específicos de desempenho.

Neste artigo, irá aprender como usar grupos de reserva de capacidade com conjuntos de nós no AKS.

Observação

A exclusão de um conjunto de nós dissocia automaticamente esse conjunto de qualquer grupo associado de reserva de capacidade antes de ser excluído. A exclusão de um cluster dissocia implicitamente todos os conjuntos de nós desse cluster dos seus grupos associados de reserva de capacidade.

Pré-requisitos para usar os grupos de reserva de capacidade com pools de nós AKS

  • Precisas que a versão 2.56 ou posterior do CLI do Azure esteja instalada e configurada. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, consulte Install CLI do Azure.
  • Precisa de um grupo de reserva de capacidade existente com pelo menos uma reserva de capacidade. Caso contrário, o pool de nós é adicionado ao cluster com um aviso e nenhum grupo de reserva de capacidade é associado.
  • É necessário criar uma identidade gerida atribuída pelo utilizador com a Contributor função do grupo de recursos que contém a reserva de capacidade e atribuir a identidade ao seu AKS cluster. As identidades geridas atribuídas pelo sistema não funcionam para esta funcionalidade.

Importante

Para grupos de reservas de capacidade partilhadas ou por subscrição cruzada, o utilizador ou principal do serviço que executa o comando AKS deve ter Microsoft.Compute/capacityReservationGroups/write permissão no grupo de reservas de capacidade ligado. As permissões granulares do consumidor do grupo de reserva de capacidade partilhado, usadas para máquinas virtuais, como Microsoft.Compute/capacityReservationGroups/deploy/action, não são atualmente suficientes para associar um pool de nós do AKS a um grupo de reserva de capacidade.

As permissões atribuídas à identidade gerida do cluster AKS não substituem esta verificação de autorização do chamador. A identidade gerida pelo cluster ainda necessita das permissões necessárias no grupo de recursos que contém o grupo de reserva de capacidade, conforme descrito neste artigo.

Crie uma identidade gerida atribuída pelo utilizador e atribua-a a um cluster AKS

  1. Crie uma identidade gerenciada atribuída pelo usuário usando o az identity create comando.

    az identity create --name <identity-name> --resource-group <resource-group-name> --location <location>
    
  2. Obtenha o ID da identidade gerida atribuída pelo utilizador usando o az identity show comando e defina-o para uma variável de ambiente.

    IDENTITY_ID=$(az identity show --name <identity-name> --resource-group <resource-group-name> --query identity.id -o tsv)
    
  3. Atribua o papel Contributor à identidade atribuída pelo utilizador com o comando az role assignment create.

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

    Pode demorar até 60 minutos para que a atribuição do papel se propage.

  4. Atribua a identidade gerida atribuída pelo utilizador a um novo ou existente cluster AKS, utilizando o sinalizador --assign-identity com o comando az aks create ou 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         
    

Obtenha o ID de um grupo de reservas de capacidade já existente

Obtenha o ID de um grupo de reservas de capacidade existente usando o az capacity reservation group show comando e defina-o para uma variável de ambiente.

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

Associar um grupo de reservas de capacidade existente a um novo cluster

Associe um grupo de reservas de capacidade existente ao pool de nós do sistema por defeito durante a criação do cluster, executando o comando az aks create com os sinalizadores --assign-identity e --crg-id.

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

Associe um grupo de reservas de capacidade existente a um novo pool de nós

Associe um grupo de reservas de capacidade existente a um novo pool de nós de utilizador usando o az aks nodepool add comando com a --crg-id bandeira.

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

Para associar um grupo de reservas de capacidade existente a um novo pool de nós do sistema, crie o pool de nós com os sinalizadores --mode System e --crg-id. Para clusters de produção, use um mínimo de três nós para pools de nós do sistema.

az aks nodepool add \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --name <system-node-pool-name> \
    --mode System \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --crg-id $CRG_ID

Associar um grupo de reserva de capacidade existente a um pool de nós existente (Pré-visualização)

Associe um grupo de reserva de capacidade existente a um conjunto de nós existente utilizando o comando az aks nodepool update com a opção --crg-id.

  • Para pools de nós zonais, esta operação inicia uma atualização contínua do pool de nós alvo. O processo de atualização envolve o cordão rotativo e drenagem de todos os nós, seguido de um reinício para aplicar a alteração.
  • Para pools de nós de utilizadores não zonais (regionais) durante a pré-visualização, primeiro escala o pool de nós para zero e depois aplica o grupo de reserva de capacidade.
  • Para pools de nós do sistema não zonais (regionais), não escale o pool de nós do sistema a zero. Em vez disso, crie um novo pool de nós do sistema associado ao grupo de reserva de capacidade, verifique se o novo pool de nós está pronto e depois elimine o pool de nós do sistema antigo. O AKS requer pelo menos um pool de nós do sistema em todos os momentos.

Prerequisites

  • Instale a versão aks-preview da 20.0.0b7 extensão CLI do Azure ou posterior antes de executar este comando.

  • Garante que o grupo de reserva de capacidade tem capacidade suficiente para a tua estratégia de atualização do pool de nós. Quando maxSurge > 0, reserve capacidade extra para o valor máximo de pico . Por exemplo, um pool de 10 nós com maxSurge definido como 2 pode executar até 12 nós durante uma atualização. Esta capacidade extra não é necessária para implementações apenas com maxUnavailable nem para rotas regionais reduzidas a zero.

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

    Se o comando falhar com LinkedAuthorizationFailed e fizer referência a Microsoft.Compute/capacityReservationGroups/write, conceda essa permissão ao utilizador com sessão iniciada ou à entidade de serviço que está a executar o comando no grupo de reserva de capacidade de destino.

Próximos passos: Gerir pools de nós no AKS

Para saber mais sobre a gestão de pools de nós no AKS, consulte Gerir pools de nós no Azure Kubernetes Service (AKS). Para aprender a adicionar, atualizar ou eliminar pools de nós do sistema, consulte Usar pools de nós do sistema no Azure Kubernetes Service (AKS).