Posicionamento automático de zona em Serviço de Kubernetes do Azure (versão prévia)

O posicionamento automático de zona em AKS (Serviço de Kubernetes do Azure) seleciona dinamicamente o melhor conjunto de zonas de disponibilidade para um pool de nós. Você não precisa especificar as zonas manualmente para cada região e combinação de SKU de VM. Quando você cria ou atualiza um pool de nós com --zones auto, o AKS coloca máquinas virtuais (VMs) em zonas de disponibilidade com capacidade para a SKU solicitada na região de destino e aplica um percentual máximo de instâncias de 50% por zona.

Este artigo mostra como criar ou atualizar pools de nós do AKS que usam o posicionamento automático em zonas.

Como funciona o posicionamento automático de zona

Quando você especifica --zones auto (ou availabilityZones: ["auto"] no perfil do pool de agentes), o AKS usa a política automática de posicionamento em zonas do Azure Compute para selecionar zonas e distribuir os nós. Você não precisa especificar números de zona ou manter configurações de zona diferentes para cada região e SKU de VM.

O posicionamento automático da zona funciona da seguinte maneira:

  1. O AKS avalia quais zonas de disponibilidade na região de destino podem dar suporte à SKU de VM solicitada.
  2. Inicialmente, o AKS seleciona até três zonas disponíveis e posiciona nós de acordo com a política automática de posicionamento em zonas. Por padrão, uma única zona não pode conter mais de 50% do pool de nós.
  3. Durante operações de expansão posteriores, o AKS reavalia a disponibilidade da zona. Se Azure adicionar uma zona à região ou disponibilizar a SKU da VM em outra zona, o AKS poderá colocar novos nós nessa zona quando a política de posicionamento e a capacidade disponível permitirem. Você não precisa atualizar a configuração do pool de nós.

Importante

O limite de 50% é uma concentração máxima por zona, não uma garantia de que os nós são sempre distribuídos igualmente. A distribuição real depende da contagem de nós, das zonas que dão suporte à SKU de VM selecionada e da capacidade disponível quando os nós são provisionados. Uma operação de criação ou escala ainda poderá falhar se Azure não puder alocar os nós solicitados, respeitando o limite por zona.

Essa abordagem aborda pontos de dor comuns com a especificação manual de zonas:

  • Implantações independentes de região: use configurações consistentes entre regiões sem se preocupar com diferenças de disponibilidade de zona.
  • Resiliência aprimorada: obtenha automaticamente redundância de várias zonas para melhorar a disponibilidade do aplicativo.
  • Expansão automática de zona: aproveite perfeitamente novas zonas de disponibilidade quando as regiões se expandem (por exemplo, de três a quatro zonas).
  • Redução de falhas de implantação: reduza as falhas de alocação durante a criação e o escalonamento causadas por limitações de capacidade em zonas específicas, com base na tolerância da sua carga de trabalho ao balanceamento entre zonas.

Limitações e considerações

  • O posicionamento de zona automático dá suporte à criação e à atualização de pools de nós baseados em Conjuntos de Dimensionamento de Máquinas Virtuais e em Máquinas Virtuais.
  • O limite máximo padrão por zona é de 50% dos nós.
  • O posicionamento automático em zonas é destinado a cargas de trabalho que abrangem várias zonas. Para cargas de trabalho alinhadas à zona (em que cada pool de nós está fixado em uma única zona), continue especificando a zona explicitamente usando --zones 1, --zones 2 e assim por diante.

Pré-requisitos

Importante

As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

  • Versão da API 2026-01-02-preview do AKS ou posterior.

  • A versão mais recente da extensão CLI do Azure aks-preview.

  • Uma região que oferece suporte a zonas de disponibilidade. Para obter mais informações, consulte a lista de regiões do Azure.

  • O sinalizador de recurso VmssAutomaticZonePlacement registrado em sua assinatura. Registre a feature flag usando o comando az feature register:

    az feature register \
      --namespace Microsoft.Compute \
      --name VmssAutomaticZonePlacement
    

    Verifique o status do registro usando o az feature show comando:

    az feature show \
      --namespace Microsoft.Compute \
      --name VmssAutomaticZonePlacement \
      --query properties.state \
      --output tsv
    

    Aguarde até que o comando retorne Registered antes de continuar.

Criar um cluster do AKS com posicionamento automático de zona (versão prévia)

Crie um novo cluster do AKS com um pool de nós do sistema baseado em Conjuntos de Dimensionamento de Máquinas Virtuais ou baseado em Máquinas Virtuais que usa o posicionamento de zona automático usando o comando az aks create com --zones auto:

az aks create \
  --resource-group example-rg \
  --name example-cluster \
  --node-vm-size Standard_D8s_v5 \
  --node-count 10 \
  --zones auto

O AKS escolhe as zonas com capacidade para Standard_D8s_v5 na região de destino e distribui os 10 nós entre elas, sem que uma única zona contenha mais de 50% dos nós.

Adicionar um pool de nós com posicionamento automático em zonas (Prévia)

Adicione a um cluster existente um novo pool de nós baseado em Conjuntos de Dimensionamento de Máquinas Virtuais ou em Máquinas Virtuais usando o comando az aks nodepool add com --zones auto:

az aks nodepool add \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name userpoolauto \
  --node-vm-size Standard_D8s_v5 \
  --node-count 6 \
  --zones auto

Atualizar um pool de nós existente para usar a alocação automática em zonas (Prévia)

Atualize um pool de nós existente baseado em Conjuntos de Dimensionamento de Máquinas Virtuais ou baseado em Máquinas Virtuais para usar o posicionamento automático em zonas usando o comando az aks nodepool update com --zones auto:

az aks nodepool update \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name nodepool1 \
  --zones auto

O AKS atualiza o pool de nós existente por meio de uma operação sem interrupção:

  1. O AKS adiciona nós de sobretensão que usam o posicionamento de zona automático.
  2. O AKS isola e esvazia os nós existentes.
  3. O AKS remove os nós existentes após a migração de cargas de trabalho para os nós de sobretensão.

A operação considera as seguintes definições de atualização configuradas por você no pool de nós:

  • Max surge (--max-surge): Controla quantos nós extras o AKS adiciona durante a atualização. Um valor mais alto conclui a atualização mais rapidamente, mas requer mais cota de computação e capacidade de IP de sub-rede.
  • Tempo limite de drenagem de nó (--drain-timeout): controla quanto tempo o AKS aguarda a remoção do pod em um nó antes de falha na operação de drenagem.
  • Duração de imersão do nó (--node-soak-duration): controla o tempo de espera de AKS após um novo nó ficar pronto antes de continuar para o próximo lote.

Antes de iniciar a atualização, verifique se você tem cota de computação e capacidade de IP da sub-rede suficientes para os nós de sobretensão e se os orçamentos de interrupção de pods permitem a drenagem de nós.

Verificar o posicionamento da zona

Depois de criar ou atualizar o pool de clusters ou nós, verifique as zonas selecionadas pelo AKS usando o az aks show comando.

az aks show \
 --name example-cluster \
 --resource-group example-rg \
 --query agentPoolProfiles[].availabilityZones \
 --output tsv

Você também pode usar kubectl para confirmar a distribuição de nós entre zonas.

kubectl get nodes -o custom-columns='NAME:metadata.name, REGION:metadata.labels.topology\.kubernetes\.io/region, ZONE:metadata.labels.topology\.kubernetes\.io/zone'

Exemplo de saída:

NAME                                REGION   ZONE
aks-nodepool1-12345678-vmss000000   eastus   eastus-1
aks-nodepool1-12345678-vmss000001   eastus   eastus-2
aks-nodepool1-12345678-vmss000002   eastus   eastus-3
...