Partilhar via


Criar pools de nós para um cluster no Azure Kubernetes Service (AKS)

No Serviço Kubernetes do Azure (AKS), nós da mesma configuração são agrupados em pools de nós. Esses pools de nós contêm as VMs subjacentes que executam seus aplicativos. Ao criar um cluster AKS, você define o número inicial de nós e seu tamanho (SKU), o que cria um pool de nós do sistema.

Para dar suporte a aplicativos com diferentes demandas de computação ou armazenamento, você pode criar pools de nós de usuário. Os grupos de nós do sistema têm como principal finalidade hospedar pods críticos do sistema, como CoreDNS e konnectivity. Os pools de nós de usuário têm o objetivo principal de hospedar seus pods de aplicativo. Por exemplo, utilize mais pools de nós de utilizador para fornecer GPUs para aplicações de computação intensiva ou para acesso a armazenamento SSD de alto desempenho. No entanto, se desejar ter apenas um pool no seu cluster AKS, pode programar pods de aplicações em pools de nós do sistema.

Observação

Esse recurso permite mais controle sobre a criação e o gerenciamento de vários pools de nós e requer comandos separados para operações de criação/atualização/exclusão (CRUD). Anteriormente, as operações de cluster por meio az aks create ou az aks update usavam a API managedCluster e eram as únicas opções para alterar seu plano de controle e um único pool de nós. Esta funcionalidade expõe um conjunto de operações separado para pools de agentes através da API agentPool e requer o uso do conjunto de comandos az aks nodepool para executar operações em um pool de nós específico.

Este artigo mostra como criar um ou mais pools de nós em um cluster AKS.

Importante

A partir de 30 de novembro de 2025, o AKS deixará de suportar ou fornecer atualizações de segurança para o Azure Linux 2.0. A partir de 31 de março de 2026, as imagens dos nós serão removidas e não poderás dimensionar os teus pools de nós. Migre para uma versão Linux do Azure com suporte atualizando seus pools de nós para uma versão do Kubernetes com suporte ou migrando para o osSku AzureLinux3. Para obter mais informações, consulte [Desativação] Pools de nós do Azure Linux 2.0 no AKS.

Antes de começar

Limitações

As limitações a seguir se aplicam quando você cria clusters AKS que suportam vários pools de nós:

  • Consulte Cotas, restrições de tamanho de máquina virtual e disponibilidade de região no Serviço Kubernetes do Azure (AKS).
  • Você pode excluir o pool de nós do sistema se tiver outro pool de nós do sistema para ocupar seu lugar no cluster AKS. Caso contrário, não será possível excluir o pool de nós do sistema.
  • Os pools de sistema devem conter pelo menos um nó e os pools de nós de usuário podem conter zero ou mais nós.
  • O cluster AKS deve usar o balanceador de carga SKU padrão para usar vários pools de nós. Esse recurso não é suportado com balanceadores de carga SKU básicos.
  • O cluster AKS deve usar Conjuntos de Escala de Máquina Virtual para os nós.
  • O nome de um pool de nós pode conter apenas caracteres alfanuméricos minúsculos e deve começar com uma letra minúscula.
    • Para pools de nós Linux, o comprimento deve estar entre 1 e 12 caracteres.
    • Para pools de nós do Windows, o comprimento deve estar entre 1 e 6 caracteres.
  • Todos os pools de nós devem residir na mesma rede virtual.
  • Quando você cria vários pools de nós no momento da criação do cluster, as versões do Kubernetes para os pools de nós devem corresponder à versão definida para o plano de controle.

Definir variáveis de ambiente

export RESOURCE_GROUP_NAME="my-aks-rg"
export LOCATION="eastus"
export CLUSTER_NAME="my-aks-cluster"
export NODE_POOL_NAME="mynodepool"

Criar um cluster AKS com um único pool de nós

Importante

Se você executar um único pool de nós do sistema para seu cluster AKS em um ambiente de produção, recomendamos usar pelo menos três nós para o pool de nós. Se um nó falhar, a redundância fica prejudicada. Você pode reduzir esse risco aumentando o número de nós no cluster do sistema.

  1. Crie um grupo de recursos do Azure usando o az group create comando.

    az group create --name $RESOURCE_GROUP_NAME --___location $LOCATION
    
  2. Crie um cluster AKS com um único pool de nós usando o az aks create comando. Esta etapa especifica dois nós no pool de nós únicos.

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --___location $LOCATION \
        --load-balancer-sku standard \
        --generate-ssh-keys
    

    A criação do cluster demora alguns minutos.

  3. Quando o cluster estiver pronto, obtenha as credenciais do cluster usando o az aks get-credentials comando.

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Adicionar um segundo pool de nós

O cluster criado na etapa anterior tem um único pool de nós. Nesta seção, adicionamos um segundo pool de nós ao cluster.

  1. Crie um novo pool de nós usando o az aks nodepool add comando. O exemplo a seguir cria um pool de nós chamado mynodepool que executa três nós:

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 3
    
  2. Verifique o estado dos pools de nós usando o comando az aks node pool list e especifique o grupo de recursos e o nome do cluster.

    az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
    

    A saída de exemplo condensado a seguir mostra que mynodepool foi criado com êxito com três nós. Quando o cluster AKS foi criado na etapa anterior, um nodepool1 padrão foi criado com uma contagem de nós de 2.

    [
      {
        ...
        "count": 3,
        ...
        "name": "mynodepool",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

Pools de nós Linux do Azure

O host de contêiner do Azure Linux para AKS é uma distribuição Linux de código aberto disponível como um host de contêiner AKS. Ele fornece alta confiabilidade, segurança e consistência. Ele inclui apenas o conjunto mínimo de pacotes necessários para executar cargas de trabalho de contêiner, que melhoram os tempos de inicialização e o desempenho geral.

Adicionar um pool de nós do Azure Linux

  • Adicione um pool de nós do Azure Linux ao cluster existente usando o az aks nodepool add comando e especifique --os-sku AzureLinux.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $AZ_LINUX_NODE_POOL_NAME \
        --os-sku AzureLinux
    

Migrar nós do Ubuntu para nós do Azure Linux

Você pode migrar seus nós existentes do Ubuntu para o Azure Linux usando um dos seguintes métodos:

Pools de nós com sub-redes exclusivas

Uma carga de trabalho pode exigir a divisão de nós de cluster em pools separados para isolamento lógico. Sub-redes separadas dedicadas a cada pool de nós no cluster podem ajudar a dar suporte a esse isolamento, que pode atender a requisitos como ter espaço de endereço de rede virtual não contíguo para dividir entre pools de nós.

Observação

Certifique-se de usar a versão 2.35.0 da CLI do Azure ou posterior.

Limitações

  • Todas as sub-redes atribuídas a pools de nós devem pertencer à mesma rede virtual.
  • Os pods do sistema devem ter acesso a todos os nós e pods no cluster para fornecer funcionalidades críticas, como resolução de DNS e tunelamento kubectl logs/exec/port-forward proxy.
  • Se você expandir sua VNET depois de criar o cluster, deverá atualizá-lo antes de adicionar uma sub-rede fora do bloco CIDR original. Enquanto o AKS apresenta erros na adição do pool de agentes, a aks-preview extensão da CLI do Azure (versão 0.5.66 e superior) agora oferece suporte à execução do az aks update comando com apenas os argumentos necessários -g <resourceGroup> -n <clusterName>. Este comando executa uma operação de atualização sem fazer alterações, o que pode recuperar um cluster preso em um estado de falha.
  • Em clusters com a versão do Kubernetes inferior a 1.23.3, o kube-proxy aplica SNAT ao tráfego de novas sub-redes, o que pode fazer com que a Política de Rede do Azure descarte os pacotes.
  • Os nós do Windows realizam SNAT do tráfego para as novas sub-redes até que o pool de nós seja recriado.
  • Os balanceadores de carga internos usam como padrão uma das sub-redes do pool de nós.

Adicionar um pool de nós com uma sub-rede exclusiva

  • Adicione um pool de nós com uma sub-rede exclusiva ao cluster existente usando o az aks nodepool add comando e especifique o --vnet-subnet-id.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 3 \
        --vnet-subnet-id $SUBNET_RESOURCE_ID
    

Pools de nós habilitados para FIPS

Para obter mais informações sobre como habilitar o FIPS (Federal Information Process Standard) para seu cluster AKS, consulte Habilitar FIPS (Federal Information Process Standard) para pools de nós do Serviço Kubernetes do Azure (AKS).

Pools de nós do Windows Server com containerd

A partir do Kubernetes versão 1.20 e superior, você pode especificar containerd como o tempo de execução do contêiner para pools de nós do Windows Server 2019. A partir do Kubernetes 1.23, containerd é o tempo de execução de contêiner padrão e único para Windows.

Importante

Ao utilizar containerd com pools de nós do Windows Server 2019:

  • O plano de controle e os pools de nós do Windows Server 2019 devem usar o Kubernetes versão 1.20 ou superior.
  • Quando você cria ou atualiza um pool de nós para executar contêineres do Windows Server, o valor padrão para --node-vm-size é Standard_D2s_v3, que era o tamanho mínimo recomendado para pools de nós do Windows Server 2019 antes do Kubernetes versão 1.20. O tamanho mínimo recomendado para pools de nós do Windows Server 2019 utilizando containerd é Standard_D4s_v3. Ao definir o --node-vm-size parâmetro, verifique a lista de tamanhos de VM restritos.
  • Recomendamos o uso de manchas ou rótulos com os seus grupos de nós do Windows Server 2019 no seu ambiente containerd e tolerâncias ou seletores de nós com suas implementações para garantir que suas cargas de trabalho sejam atribuídas corretamente.

Adicionar um pool de nós do Windows Server com containerd

  • Adicione um pool de nós do Windows Server com containerd ao cluster existente usando o az aks nodepool add.

    Observação

    Se não especificar o cabeçalho personalizado WindowsContainerRuntime=containerd, o pool de nós ainda usará containerd como o ambiente de execução do contêiner por padrão.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --os-type Windows \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --node-vm-size Standard_D4s_v3 \
        --kubernetes-version 1.20.5 \
        --aks-custom-headers WindowsContainerRuntime=containerd \
        --node-count 1
    

Atualizar um pool de nós do Windows Server existente específico para containerd

  • Atualize um pool de nós específico do Docker para containerd usando o comando az aks nodepool upgrade.

    export CONTAINER_D_NODE_POOL_NAME="mywindowsnodepool"
    
    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Atualize todos os conjuntos de nós existentes do Windows Server para containerd

  • Atualize todos os pools de nós do Docker para containerd, usando o comando az aks nodepool upgrade.

    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Pools de nós com discos de SO efémeros

  • Adicione um pool de nós que utiliza discos efémeros do sistema operativo a um cluster existente usando o comando az aks nodepool add com o sinalizador --node-osdisk-type definido para Ephemeral.

    Observação

    • Pode especificar discos efémeros do sistema operativo durante a criação do cluster usando o sinalizador --node-osdisk-type com o comando az aks create.
    • Se quiser criar pools de nós com discos de sistema operacional conectados à rede, você pode fazer isso especificando --node-osdisk-type Managed.
    export EPHEMERAL_NODE_POOL_NAME="mydiskpool"
    
    az aks nodepool add --name $EPHEMERAL_NODE_POOL_NAME --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME -s Standard_DS3_v2 --node-osdisk-type Ephemeral
    

Importante

Com o Ephemeral OS, pode-se implantar VMs e imagens de instância até ao limite do cache da VM. A configuração de disco do SO do nó padrão no AKS usa 128 GB, o que significa que você precisa de um tamanho de VM que tenha um cache maior que 128 GB. O Standard_DS2_v2 padrão tem um tamanho de cache de 86 GB, que não é grande o suficiente. O Standard_DS3_v2 VM SKU tem um tamanho de cache de 172 GB, que é grande o suficiente. Você também pode reduzir o tamanho padrão do disco do sistema operacional usando --node-osdisk-size, mas lembre-se de que o tamanho mínimo para imagens AKS é de 30 GB.

Eliminar um pool de nós

Se você não precisar mais de um pool de nós, poderá excluí-lo e remover os nós de VM subjacentes.

Atenção

Quando se elimina um pool de nós, o AKS não realiza as ações de isolamento e drenagem, e não há opções de recuperação para perda de dados que pode ocorrer nesse processo. Se os pods não puderem ser agendados em outros pools de nós, esses aplicativos tornam-se indisponíveis. Certifique-se de não excluir um pool de nós quando os aplicativos em uso não tiverem backups de dados ou a capacidade de executar em outros pools de nós em seu cluster. Para minimizar a interrupção do reagendamento de pods atualmente em execução no pool de nós que você deseja excluir, execute um cordão e drene todos os nós no pool de nós antes de excluir.

  • Exclua um pool de nós usando o az aks nodepool delete comando e especifique o nome do pool de nós.

    az aks nodepool delete --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --no-wait
    

    Leva alguns minutos para excluir os nós e o pool de nós.

Próximos passos

Neste artigo, você aprendeu como criar vários pools de nós em um cluster AKS. Para saber mais sobre como gerenciar vários pools de nós, consulte Gerenciar vários pools de nós para um cluster no Serviço Kubernetes do Azure (AKS).