Criar pools de nós para um cluster no Serviço Kubernetes do Azure (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 pools de nós do sistema servem ao objetivo principal de 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, use mais pools de nós de usuário para fornecer GPUs para aplicativos de computação intensiva ou acesso a armazenamento SSD de alto desempenho. No entanto, se você deseja ter apenas um pool em seu cluster AKS, você pode agendar pods de aplicativos em pools de nós do sistema.
Nota
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. Esse recurso expõe um conjunto de operações separado para pools de agentes por meio da API agentPool e requer o az aks nodepool
uso do conjunto de comandos 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 AKS.
Antes de começar
- Você precisa da CLI do Azure versão 2.2.0 ou posterior instalada e configurada. Executar
az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - Analise as opções de armazenamento para aplicativos no Serviço Kubernetes do Azure para planejar sua configuração de armazenamento.
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.
Criar um cluster do AKS
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ó cair, você perderá os recursos do plano de controle e a redundância será comprometida. Você pode reduzir esse risco tendo mais nós de plano de controle.
Crie um grupo de recursos do Azure usando o
az group create
comando.az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Crie um cluster AKS com um único pool de nós usando o
az aks create
comando.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.
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 conjunto 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
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
Verifique o status dos pools de nós usando o
az aks node pool list
comando 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 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 ARM64
O processador ARM64 fornece computação de baixo consumo para suas cargas de trabalho do Kubernetes. Para criar um pool de nós ARM64, você precisa escolher uma máquina virtual da série Dpsv5, Dplsv5 ou Epsv5 .
Limitações
- Os pools de nós ARM64 não são suportados em clusters habilitados para Defender com a versão do Kubernetes inferior à 1.29.0.
- Os pools de nós habilitados para FIPS não são suportados com SKUs ARM64.
- Os pools de nós do Windows não são suportados com SKUs ARM64.
Adicionar um conjunto de nós ARM64
Adicione um pool de nós 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 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:
- Remova pools de nós existentes e adicione novos pools de nós do Azure Linux.
- Migração de SKU do SO in-loco.
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.
Nota
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 os erros do AKS no pool de agentes são adicionados, a
aks-preview
extensão da CLI do Azure (versão 0.5.66 e superior) agora oferece suporte à execução deaz aks update
comandos apenas com 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 menor que 1.23.3, o tráfego de SNATs kube-proxy de novas sub-redes, o que pode fazer com que a Política de Rede do Azure solte os pacotes.
- O tráfego SNAT dos nós do Windows 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 conjunto 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 usar 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 da versão 1.20 do Kubernetes. O tamanho mínimo recomendado para pools de nós do Windows Server 2019 usandocontainerd
é 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 seus pools de nós do Windows Server 2019 em execução
containerd
e tolerações ou seletores de nós com suas implantações para garantir que suas 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 ao
containerd
cluster existente usando oaz aks nodepool add
.Nota
Se você não especificar o
WindowsContainerRuntime=containerd
cabeçalho personalizado, o pool de nós ainda será usadocontainerd
como o tempo 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
usar oaz aks nodepool upgrade
comando.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 pools de nós existentes do Windows Server para containerd
Atualize todos os pools de nós do Docker para
containerd
usar oaz aks nodepool upgrade
comando.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 usa discos do sistema operacional efêmero a um cluster existente usando o
az aks nodepool add
comando com o--node-osdisk-type
sinalizador definido comoEphemeral
.Nota
- Você pode especificar discos efêmeros do sistema operacional durante a criação do cluster usando o
--node-osdisk-type
sinalizador com oaz aks create
comando. - Se quiser criar pools de nós com discos de sistema operacional conectados à rede, você pode fazer isso especificando
--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 efêmeros do sistema operacional durante a criação do cluster usando o
Importante
Com o Ephemeral OS, você pode implantar VMs e imagens de instância até o tamanho do cache de 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.
Excluir 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 você exclui um pool de nós, o AKS não executa cordão e drenagem, e não há opções de recuperação para perda de dados que pode ocorrer quando você exclui um pool de nós. Se os pods não puderem ser agendados em outros pools de nós, esses aplicativos ficarão 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).
Azure Kubernetes Service