Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come abilitare o disabilitare il provisioning automatico dei nodi nel servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure o i modelli di Azure Resource Manager (ARM).
Per creare un cluster del servizio Azure Kubernetes (AKS) abilitato per il provisioning automatico dei nodi (NAP) con una rete virtuale personalizzata (VNet) e subnet, vedere Creare un cluster di provisioning automatico dei nodi (NAP) in una rete virtuale personalizzata.
Prima di iniziare
Prima di iniziare, rivedere l'articolo Panoramica del provisioning automatico dei nodi (NAP) in servizio Azure Kubernetes (AKS), che illustra come funziona il provisioning automatico dei nodi (NAP), i prerequisiti e le limitazioni.
Abilitare il provisioning automatico dei nodi (NAP) in un cluster di servizio Azure Kubernetes
Le sezioni seguenti illustrano come abilitare NAP su un nuovo o esistente cluster AKS:
Annotazioni
È possibile abilitare le metriche del piano di controllo per visualizzare i log e le operazioni dal ridimensionamento automatico del nodo con il componente aggiuntivo del servizio gestito per Prometheus di Monitoraggio di Azure.
Abilitare NAP su un nuovo cluster
Abilitare il provisioning automatico dei nodi (NAP) in un nuovo cluster usando il comando
az aks createcon il flag--node-provisioning-modeimpostato suAuto. Il comando seguente imposta anche--network-pluginsuazure,--network-plugin-modesuoverlaye--network-dataplanesucilium.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
Creare un file denominato
nap.jsone aggiungere la seguente configurazione del modello ARM con il campoproperties.nodeProvisioningProfile.modeimpostato suAuto, che abilita NAP. L'impostazione predefinita è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" } } } ] }Abilitare il provisioning automatico dei nodi (NAP) in un nuovo cluster utilizzando il comando
az deployment group createcon il flag--template-fileimpostato sul percorso del file del modello di Resource Manager.az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
Abilitare il provisioning automatico dei nodi (NAP) in un cluster esistente
Abilitare il provisioning automatico del nodo in un cluster esistente usando il
az aks updatecomando e impostare il flag--node-provisioning-modeaAuto.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
Disabilitare il provisioning automatico dei nodi (NAP) in un cluster del servizio Azure Kubernetes
Importante
È possibile disabilitare NAP in un cluster solo se vengono soddisfatte le condizioni seguenti.
- Non sono presenti nodi NAP. È possibile usare il comando
kubectl get nodes -l karpenter.sh/nodepoolper verificare la presenza di nodi gestiti da NAP esistenti. - Tutti i karpenter
NodePoolsesistenti hanno il campospec.limits.cpuimpostato su0. Questa azione impedisce la creazione di nuovi nodi, ma non interrompe i nodi attualmente in esecuzione.
Impostare il
spec.limits.cpucampo su0per ogni karpenterNodePoolesistente. Per esempio:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: limits: cpu: 0Importante
Se non si vuole assicurarsi che ogni pod in esecuzione in precedenza in un nodo NAP venga migrato in modo sicuro a un nodo non-NAP prima di disabilitare NAP, è possibile ignorare i passaggi 2 e 3 e usare invece il comando
kubectl delete nodeper ogni nodo gestito da NAP. Tuttavia, non è consigliabile ignorare questi passaggi, perché ciò potrebbe lasciare alcuni pod in sospeso e non rispettare i budget di interruzione dei pod (PDB).Quando si utilizza il comando
kubectl delete node, fare attenzione a eliminare solo i nodi gestiti da NAP. È possibile identificare i nodi gestiti da NAP usando il comandokubectl get nodes -l karpenter.sh/nodepool.Aggiungere il
karpenter.azure.com/disable:NoScheduletaint a ogni KarpenterNodePool. Per esempio:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: template: spec: ... taints: - key: karpenter.azure.com/disable effect: NoScheduleQuesta azione avvia il processo di migrazione dei carichi di lavoro dai nodi gestiti da NAP a nodi non-NAP, rispettando i PDB e i limiti di interruzione. I pod vengono migrati a nodi non NAP, se adatti. Se la capacità a dimensione fissa non è sufficiente, alcuni nodi gestiti da NAP rimangono.
Aumentare le dimensioni
ManagedClusterAgentPoolsfisse esistenti o creare nuove dimensioniAgentPoolsfisse per gestire il carico dai nodi gestiti da NAP. Man mano che questi nodi vengono aggiunti al cluster, i nodi gestiti da Nap vengono svuotati e il lavoro viene migrato ai nodi a dimensione fissa.Eliminare tutti i nodi gestiti da NAP usando il comando
kubectl get nodes -l karpenter.sh/nodepool. Se i nodi gestiti da NAP (Protezione accesso alla rete) sono ancora presenti, il cluster probabilmente non dispone di capacità a dimensionamento fisso. In questo caso, è necessario aggiungere altri nodi in modo che sia possibile eseguire la migrazione dei carichi di lavoro rimanenti.
Aggiornare la modalità NAP a
Manualusando il comando di interfaccia della riga di comando di Azureaz aks updatecon il flag--node-provisioning-modeimpostato suManual.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Manual
Aggiornare il
properties.nodeProvisioningProfile.modecampo nel modello ARM aManuale ripubblicarlo.{ "$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" } } } ] }
Passaggi successivi
Per altre informazioni sul provisioning automatico dei nodi in AKS (Azure Kubernetes Service), vedere gli articoli seguenti:
- Usare il provisioning automatico dei nodi in una rete virtuale personalizzata
- Configurare la rete per il provisioning automatico dei nodi su AKS
- Configurare i pool di nodi per il provisioning automatico dei nodi su AKS
- Configurare i criteri di interruzione per il provisioning automatico dei nodi su AKS
- Aggiornare le immagini dei nodi per il node auto-provisioning su AKS