Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo explica como habilitar ou desabilitar o provisionamento automático de nó (NAP) no Serviço Kubernetes do Azure (AKS) usando os modelos CLI do Azure ou Azure Resource Manager (ARM).
Se quiser criar um cluster AKS habilitado para NAP com uma rede virtual personalizada (VNet) e subredes, consulte Criar um cluster NAP (provisionamento automático) de nó em uma rede virtual personalizada.
Antes de começar
Antes de começar, revise o artigo Visão geral do provisionamento automático de nó (NAP) no AKS , que detalha como a NAP funciona, pré-requisitos e limitações.
Habilitar o provisionamento automático de nós (NAP) num cluster AKS
As seções a seguir explicam como habilitar a NAP em um cluster AKS novo ou existente:
Observação
Você pode habilitar as métricas do plano de controle para ver os logs e as operações do provisionamento automático do nó com o complemento Azure Monitor managed service for Prometheus.
Habilitar NAP em um novo cluster
Ative o provisionamento automático de nó num novo cluster usando o
az aks createcomando, com o--node-provisioning-modeflag definido comoAuto. O comando a seguir também define--network-plugincomoazure,--network-plugin-modecomooverlay, e--network-dataplanecomocilium.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Auto \ --network-plugin azure \ --network-plugin-mode overlay \ --network-dataplane cilium \ --generate-ssh-keys
Crie um arquivo chamado
nap.jsone adicione a seguinte configuração de modelo ARM com o campoproperties.nodeProvisioningProfile.modedefinido comoAuto, que habilita o NAP. (A configuração padrão éManual.){ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": {}, "parameters": {}, "resources": [ { "type": "Microsoft.ContainerService/managedClusters", "apiVersion": "2025-05-01", "sku": { "name": "Base", "tier": "Standard" }, "name": "napcluster", "location": "uksouth", "identity": { "type": "SystemAssigned" }, "properties": { "networkProfile": { "networkPlugin": "azure", "networkPluginMode": "overlay", "networkPolicy": "cilium", "networkDataplane":"cilium", "loadBalancerSku": "Standard" }, "dnsPrefix": "napcluster", "agentPoolProfiles": [ { "name": "agentpool", "count": 3, "vmSize": "standard_d2s_v3", "osType": "Linux", "mode": "System" } ], "nodeProvisioningProfile": { "mode": "Auto" } } } ] }Habilite o provisionamento automático de nós em um cluster novo usando o
az deployment group createcomando com o--template-fileflag definido para o caminho do ficheiro do modelo ARM.az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
Habilitar NAP em um cluster existente
Ativa o provisionamento automático de nó num cluster existente, utilizando o
az aks updatecomando com o indicador--node-provisioning-modedefinido comoAuto.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
Desativar o aprovisionamento automático de nós (NAP) num cluster AKS
Importante
Você só pode desabilitar a NAP em um cluster se as seguintes condições forem atendidas:
- Não existem nós NAP existentes. Você pode usar o
kubectl get nodes -l karpenter.sh/nodepoolcomando para verificar se há nós gerenciados por NAP existentes. - Todos os Karpenter
NodePoolsexistentes têm seuspec.limits.cpucampo definido como0. Essa ação impede que novos nós sejam criados, mas não interrompe os nós em execução no momento.
Defina o campo
spec.limits.cpupara0para cada Karpenter existenteNodePool. Por exemplo:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: limits: cpu: 0Importante
Se você não quiser garantir que todos os pods executados anteriormente em um nó NAP sejam migrados com segurança para um nó não-NAP antes de desabilitar o NAP, você pode ignorar as etapas 2 e 3 e, em vez disso, usar o
kubectl delete nodecomando para cada nó gerenciado por NAP. No entanto, não recomendamos pular essas etapas, pois isso pode deixar alguns pods pendentes e não respeita os Orçamentos de Interrupção de Pods (PDBs).Ao usar o
kubectl delete nodecomando, tenha cuidado para excluir apenas nós gerenciados por NAP. Você pode identificar nós gerenciados por NAP usando okubectl get nodes -l karpenter.sh/nodepoolcomando.Adicione a
karpenter.azure.com/disable:NoSchedulemancha a cada KarpenterNodePool. Por exemplo:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: template: spec: ... taints: - key: karpenter.azure.com/disable effect: NoScheduleEsta ação inicia o processo de migração das cargas de trabalho nos nós gerenciados pelo NAP para nós não-NAP, respeitando PDBs e limites de interrupção. Os pods migram para nós não-NAP, se puderem se encaixar. Se não houver capacidade de tamanho fixo suficiente, alguns nós geridos por NAP permanecerão.
Ampliar o tamanho fixo existente
ManagedClusterAgentPoolsou criar um novo tamanho fixoAgentPoolspara absorver a carga dos nós geridos pela NAP. À medida que esses nós são adicionados ao cluster, os nós geridos pela NAP são liberados, e o trabalho é transferido para os nós de tamanho fixo.Exclua todos os nós gerenciados pela NAP usando o
kubectl get nodes -l karpenter.sh/nodepoolcomando. Se os nós gerenciados pela NAP ainda existirem, o cluster provavelmente não terá capacidade de tamanho fixo. Nesse caso, você deve adicionar mais nós para que as cargas de trabalho restantes possam ser migradas.
Atualize o modo NAP para
Manualusando o comando do Azure CLIaz aks updatecom a flag--node-provisioning-modedefinida comoManual.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Manual
Atualize o campo
properties.nodeProvisioningProfile.modeparaManualno seu modelo ARM e volte a implementá-lo.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": {}, "parameters": {}, "resources": [ { "type": "Microsoft.ContainerService/managedClusters", "apiVersion": "2025-05-01", "sku": { "name": "Base", "tier": "Standard" }, "name": "napcluster", "location": "uksouth", "identity": { "type": "SystemAssigned" }, "properties": { "networkProfile": { "networkPlugin": "azure", "networkPluginMode": "overlay", "networkPolicy": "cilium", "networkDataplane":"cilium", "loadBalancerSku": "Standard" }, "dnsPrefix": "napcluster", "agentPoolProfiles": [ { "name": "agentpool", "count": 3, "vmSize": "standard_d2s_v3", "osType": "Linux", "mode": "System" } ], "nodeProvisioningProfile": { "mode": "Manual" } } } ] }
Próximos passos
Para obter mais informações sobre o provisionamento automático de nós no AKS, consulte os seguintes artigos:
- Utilizar o provisionamento automático de nós numa rede virtual personalizada
- Configurar rede de rede para o provisionamento automático de nós no AKS
- Configuração de pools de nós para provisionamento automático de nós no AKS
- Configurar políticas de interrupção para provisionamento automático de nós no AKS
- Atualizar imagens de nós para auto-provisionamento de nós no AKS