Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica como habilitar ou desabilitar o NAP (provisionamento automático de nós) no AKS (Serviço de Kubernetes do Azure) usando os modelos da CLI do Azure ou do ARM (Azure Resource Manager).
Se você quiser criar um cluster AKS habilitado para NAP com uma rede virtual personalizada (VNet) e sub-redes, consulte Criar um cluster de NAP (provisionamento automático de nós) em uma rede virtual personalizada.
Antes de começar
Antes de começar, examine a visão geral do NAP (provisionamento automático de nós) no artigo do AKS , que detalha como o NAP funciona, os pré-requisitos e as limitações.
Habilitar o provisionamento automático de nós (NAP) em um cluster AKS
As seções a seguir explicam como habilitar o NAP em um cluster novo ou existente do AKS:
Observação
Você pode habilitar métricas do plano de controle para ver os logs e as operações do provisionamento automático de nós com o complemento Serviço Gerenciado do Azure Monitor para Prometheus.
Habilitar o NAP em um novo cluster
Habilite o provisionamento automático de nós em um novo cluster usando o comando
az aks createcom o sinalizador--node-provisioning-modedefinido comoAuto. O comando a seguir também define--network-plugincomoazure,--network-plugin-modecomooverlaye--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 nomeado
nap.jsone adicione a seguinte configuração de modelo do ARM com oproperties.nodeProvisioningProfile.modecampo definido comoAuto, o 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 novo cluster usando o comando
az deployment group createcom o sinalizador--template-filedefinido como o caminho do arquivo de modelo do ARM.az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
Habilitar o NAP em um cluster existente
Habilite o provisionamento automático de nós em um cluster existente usando o comando
az aks updatecom o sinalizador--node-provisioning-modedefinido comoAuto.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
Desabilitar o provisionamento automático de nós (NAP) em um cluster do AKS
Importante
Você só poderá desabilitar o NAP em um cluster se as seguintes condições forem atendidas:
- Não há 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 existentes
NodePoolstê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.cpucomo0para cadaNodePoolKarpenter existente. Por exemplo:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: limits: cpu: 0Importante
Se você não quiser garantir que cada pod executado anteriormente em um nó NAP seja migrado com segurança para um nó não NAP antes de desabilitar o NAP, ignore as etapas 2 e 3 e, em vez disso, use o
kubectl delete nodecomando para cada nó gerenciado por NAP. No entanto, não recomendamos pular estas etapas, pois isso pode deixar alguns pods pendentes e não respeitar os Orçamentos de Disrupção de Pod (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 o taint
karpenter.azure.com/disable:NoSchedulea cadaNodePooldo Karpenter. Por exemplo:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: template: spec: ... taints: - key: karpenter.azure.com/disable effect: NoScheduleEssa 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 os PDBs e os limites de interrupção. Os pods migram para nós não NAP se puderem se ajustar. Se não houver capacidade de tamanho fixo suficiente, alguns nós gerenciados pelo NAP permanecerão.
Escale verticalmente as
ManagedClusterAgentPoolsde tamanho fixo existentes ou crieAgentPoolsde tamanho fixo para absorver a carga dos nós gerenciados pelo NAP. À medida que esses nós são adicionados ao cluster, os nós gerenciados pelo NAP são esvaziados, e o trabalho é migrado aos nós de tamanho fixo.Exclua todos os nós gerenciados por NAP usando o
kubectl get nodes -l karpenter.sh/nodepoolcomando. Se nodos gerenciados por NAP ainda existirem, o cluster provavelmente não tem 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 da CLI do Azureaz aks updatecom o sinalizador--node-provisioning-modedefinido 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 reimplante-o.{ "$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óximas etapas
Para obter mais informações sobre o provisionamento automático de nós no AKS, consulte os seguintes artigos:
- Usar provisionamento automático de nós em uma rede virtual personalizada
- Configurar o sistema de rede para o provisionamento automático de nós no AKS
- Configurar 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 o provisionamento automático de nós no AKS