Criar pools de nós para um cluster no Serviço de Kubernetes do Azure (AKS)
No AKS (Serviço de Kubernetes do Azure), os 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 do AKS, você define o número inicial de nós e seu tamanho (SKU), que cria um pool de nós do sistema.
Para dar suporte a aplicativos que têm demandas de armazenamento ou de computação diferentes, você pode criar pools de nós de usuário. Os pools de nós do sistema atendem à principal finalidade de hospedar pods críticos do sistema, como CoreDNS e konnectivity
. Os pools de nós do usuário atendem à principal finalidade de hospedar os pods de aplicativo. Por exemplo, use mais pools de nós para fornecer as GPUs para aplicativos de computação intensiva ou acesso ao armazenamento SSD de alto desempenho. No entanto, se você quiser ter apenas um pool no cluster do AKS, poderá agendar pods de aplicativo 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 exige comandos separados para operações CRUD (criação/atualização/exclusão). Antes, as operações de cluster por meio de az aks create
ou az aks update
usavam a API managedCluster e eram as únicas opções para alterar o plano de controle e um único pool de nós. Esse recurso expõe um conjunto de operações separado para pools de agentes por meio da API agentPool e requer o uso do comando az aks nodepool
definido para executar operações em um pool de nós individual.
Este artigo mostra como criar um ou mais pools de nós em um cluster do AKS.
Antes de começar
- Você precisará da CLI do Azure versão 2.2.0 ou posterior instalada e configurada. Execute
az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. - Examine as Opções de armazenamento para aplicativos no Serviço de Kubernetes do Azure para planejar a configuração de armazenamento.
Limitações
As seguintes limitações se aplicam quando você cria clusters do AKS com suporte a vários pools de nós:
- Confira Cotas, restrições de tamanho de máquina virtual e disponibilidade de região no AKS (Serviço de Kubernetes do Azure).
- É possível excluir os pools de nós do sistema se você tiver outro pool de nós do sistema para assumir seu lugar no cluster do AKS. Caso contrário, você não poderá excluir o pool de nós do sistema.
- Os pools do sistema devem conter pelo menos um nó, e os pools de nós de usuários podem conter zero ou mais nós.
- O cluster do AKS deve usar o balanceador de carga do SKU Padrão para usar vários pools de nós. Não há suporte para esse recurso nos balanceadores de carga do SKU Básico.
- O cluster do AKS deve usar Conjuntos de Dimensionamento de Máquinas Virtuais 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 do Linux, o comprimento deve ter entre 1 e 12 caracteres.
- Para pools de nós do Windows, o comprimento deve ter entre 1 e 6 caracteres.
- Todos os pools de nós devem estar 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 pelo plano de controle.
Criar um cluster AKS
Importante
Se for executado um único pool de nós do sistema para o cluster do AKS em um ambiente de produção, é recomendável usar pelo menos três nós para o pool de nós. Se um nó ficar inoperante, você perde os recursos do plano de controle e a redundância é comprometida. Você pode mitigar esse risco tendo mais nós do plano de controle.
Crie um grupo de recursos do Azure usando o comando
az group create
.az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Crie um cluster do AKS com um único pool de nós usando o comando
az aks create
.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
São necessários alguns minutos para criar o cluster.
Quando o cluster estiver pronto, obtenha as credenciais do cluster usando o comando
az aks get-credentials
.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Adicionar um 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.
Crie um novo pool de nós usando o comando
az aks nodepool add
. O exemplo a seguir cria um pool de nós denominado 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
Verifique o status 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 a seguir mostra que mynodepool foi criado com êxito com três nós. Quando o cluster do 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 do ARM64
O processador ARM64 fornece computação de baixa potência para as cargas de trabalho do Kubernetes. Para criar um pool de nós do ARM64, escolha uma Máquina Virtual da série Dpsv5, Dplsv5 ou Epsv5.
Limitações
- Não há suporte para pools de nós ARM64 em clusters habilitados para Defender com versão do Kubernetes menor que 1.29.0.
- Pools de nós habilitados para FIPS não são compatíveis com SKUs do ARM64.
- Pools de nós do Windows não são compatíveis com SKUs do ARM64.
Adicionar um pool de nós ARM64
Adicione um pool de nós do ARM64 ao cluster existente usando o
az aks nodepool add
.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $ARM_NODE_POOL_NAME \ --node-count 3 \ --node-vm-size Standard_D2pds_v5
Pools de nós do Azure Linux
O host de contêiner do Azure Linux para AKS é uma distribuição do Linux de software livre disponível como um host de contêiner do AKS. Ele fornece alta confiabilidade, segurança e consistência. Isso inclui apenas o conjunto mínimo de pacotes necessários para a execução de cargas de trabalho de contêiner, o que melhora 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 comando
az aks nodepool add
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 os nós do Azure Linux
Você pode migrar seus nós existentes do Ubuntu para o Azure Linux usando um dos seguintes métodos:
- Remova os pools de nós existentes e adicione novos pools de nós do Linux do Azure.
- Migração in-loco do SKU do sistema operacional.
Pools de nós com sub-redes exclusivas
Uma carga de trabalho pode exigir que os nós de cluster sejam divididos 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
Verifique se sua versão da CLI do Azure é 2.35.0
ou posterior.
Limitações
- Todas as sub-redes atribuídas aos pools de nós devem pertencer à mesma rede virtual.
- Os pods do sistema devem ter acesso a todos os nós e pods no clusters para fornecer funcionalidade crítica, como resolução DNS e túnel de logs de kubectl/exec/proxy de encaminhamento de porta.
- Se você expandir a VNET depois de criar o cluster, deverá atualizar o cluster antes de adicionar uma sub-rede fora do bloco CIDR original. Embora o AKS apresente erros na adição do pool de agentes, a extensão
aks-preview
da CLI do Azure (versão 0.5.66 e superior) já dá suporte à execução do comandoaz aks update
com apenas os argumentos-g <resourceGroup> -n <clusterName>
obrigatórios. Esse comando executará uma operação de atualização sem fazer nenhuma alteração, o que pode recuperar um cluster preso em um estado com falha. - Nos clusters com uma versão do Kubernetes inferior a 1.23.3, o kube-proxy usa o SNAT para o tráfego de novas sub-redes, o que poderá fazer com que a Política de Rede do Azure remova os pacotes.
- Os nós do Windows usarão o tráfego SNAT para as novas sub-redes até que a imagem do pool de nós seja refeita.
- Os balanceadores de carga internos são padrão para uma das sub-redes do pool de nós.
Adicione 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 comando
az aks nodepool add
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 o cluster do AKS, consulte Habilitar o FIPS (Federal Information Process Standard) para pools de nós do AKS (Serviço de Kubernetes do Azure).
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 runtime de contêiner para pools de nós do Windows Server 2019. A partir do Kubernetes 1.23, containerd
é o runtime de contêiner padrão e somente para Windows.
Importante
Ao usar containerd
com pools de nós do Windows Server 2019:
- O painel 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 usandocontainerd
é Standard_D4s_v3. Ao definir o parâmetro--node-vm-size
, verifique a lista de tamanhos de VM restritos. - Recomendamos usar taints ou rótulos com seus pools de nós do Windows Server 2019 que executam
containerd
e tolerâncias ou seletores de nós com suas implantações para garantir que as cargas de trabalho sejam agendadas 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 oaz aks nodepool add
.Observação
Se você não especificar o cabeçalho personalizado
WindowsContainerRuntime=containerd
, o pool de nós ainda usarácontainerd
como o runtime 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 comandoaz aks nodepool upgrade
.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
Atualizar todos os pools de nós do Windows Server existentes para containerd
Atualize todos os pools de nós do Docker para
containerd
usando o comandoaz 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 do sistema operacional Efêmero
Adicione um pool de nós que usa discos do sistema operacional efêmero a um cluster existente usando o comando
az aks nodepool add
com o sinalizador--node-osdisk-type
definido comoEphemeral
.Observação
- Você pode especificar discos do sistema operacional efêmero durante a criação do cluster usando o sinalizador
--node-osdisk-type
com o comandoaz aks create
. - Para criar pools de nós com discos de SO anexados à rede, especifique
--node-osdisk-type Managed
.
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
- Você pode especificar discos do sistema operacional efêmero durante a criação do cluster usando o sinalizador
Importante
Com o sistema operacional Efêmero, você pode implantar VMs e imagens de instância até o tamanho do cache da VM. A configuração de disco do sistema operacional do nó padrão no AKS usa 128 GB, o que significa que você precisa de um tamanho de VM com 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 SKU de VM Standard_DS3_v2 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 tenha em mente que o tamanho mínimo para imagens do AKS é de 30 GB.
Excluir um pool de nós
Se você não precisar mais de um pool de nós, pode excluí-lo e remover os nós de VM subjacentes.
Cuidado
Quando você exclui um pool de nós, o AKS não executa o esvaziamento e a drenagem, e não há opções de recuperação para perda de dados que possa ocorrer quando você exclui um pool de nós. Se não for possível agendar os pods em outros pools de nós, esses aplicativos ficarão indisponíveis. Não exclua um pool de nós quando os aplicativos em uso não tiverem backups de dados ou a capacidade de serem executados em outros pools de nós no cluster. Para minimizar a interrupção do reagendamento de pods em execução no momento no pool de nós que você deseja excluir, execute um isolamento e o esvaziamento em todos os nós no pool de nós, antes da exclusão.
Exclua um pool de nós usando o comando
az aks nodepool delete
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óximas etapas
Neste artigo, você aprendeu a criar vários pools de nós em um cluster do AKS. Para saber mais sobre como criar vários pools de nós, consulte Gerenciar vários pools de nós para um cluster no AKS (Serviço de Kubernetes do Azure).
Azure Kubernetes Service