Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du aktiverar eller inaktiverar automatisk etablering av noder (NAP) i Azure Kubernetes Service (AKS) med hjälp av arm-mallarna (Azure CLI eller Azure Resource Manager).
Om du vill skapa ett NAP-aktiverat AKS-kluster med ett anpassat virtuellt nätverk (VNet) och undernät läser du Skapa ett NAP-kluster (node auto-provisioning) i ett anpassat virtuellt nätverk.
Innan du börjar
Innan du börjar kan du läsa artikeln Översikt över automatisk etablering av noder (NAP) i AKS , som beskriver hur NAP fungerar, krav och begränsningar.
Aktivera automatisk etablering av noder (NAP) i ett AKS-kluster
I följande avsnitt förklaras hur du aktiverar NAP i ett nytt eller befintligt AKS-kluster:
Anmärkning
Du kan aktivera kontrollplansmått för att se loggar och åtgärder från automatisk nodetilldelning med den hanterade Azure Monitor-tjänsten för Prometheus-tillägget.
Aktivera NAP i ett nytt kluster
Aktivera automatisk nodetablering i ett nytt kluster med kommandot
az aks createmed--node-provisioning-modeflaggan inställd påAuto. Följande kommando anger--network-pluginockså tillazure,--network-plugin-modetilloverlayoch--network-dataplanetillcilium.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
Skapa en fil med namnet
nap.jsonoch lägg till följande ARM-mallkonfiguration medproperties.nodeProvisioningProfile.modefältet inställt påAuto, vilket aktiverar NAP. (Standardinställningen ärManual.){ "$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" } } } ] }Aktivera automatisk noddistribution i ett nytt kluster med kommandot
az deployment group createmed--template-file-flaggan inställd på sökvägen till ARM-mallfilen.az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
Aktivera NAP i ett befintligt kluster
Aktivera automatisk nodetablering i ett befintligt kluster med kommandot
az aks updatemed--node-provisioning-modeflaggan inställd påAuto.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
Inaktivera automatisk etablering av noder (NAP) i ett AKS-kluster
Viktigt!
Du kan bara inaktivera NAP på ett kluster om följande villkor uppfylls:
- Det finns inga befintliga NAP-noder. Du kan använda
kubectl get nodes -l karpenter.sh/nodepoolkommandot för att söka efter befintliga NAP-hanterade noder. - Alla befintliga Karpenter
NodePoolshar derasspec.limits.cpu-fält inställt på0. Den här åtgärden förhindrar att nya noder skapas, men stör inte noder som körs för närvarande.
Ange fältet
spec.limits.cputill0för varje befintlig KarpenterNodePool. Till exempel:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: limits: cpu: 0Viktigt!
Om du inte vill se till att alla poddar som tidigare körs på en NAP-nod migreras på ett säkert sätt till en nod som inte är NAP innan du inaktiverar NAP kan du hoppa över steg 2 och 3 och i stället använda
kubectl delete nodekommandot för varje NAP-hanterad nod. Vi rekommenderar dock inte att du hoppar över de här stegen eftersom det kan göra att vissa podar ska förbli väntande och inte respekterar Pod Disruption Budgets (PDB).När du använder
kubectl delete nodekommandot bör du bara ta bort NAP-hanterade noder. Du kan identifiera NAP-hanterade noder med hjälp avkubectl get nodes -l karpenter.sh/nodepoolkommandot .Lägg till den
karpenter.azure.com/disable:NoScheduletainten till varje KarpenterNodePool. Till exempel:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: template: spec: ... taints: - key: karpenter.azure.com/disable effect: NoScheduleDen här åtgärden startar processen att migrera arbetslaster på de NAP-hanterade noderna till icke-NAP-noder och respekterar PDB:er samt avbrottsgränser. Poddar migreras till icke-NAP-noder om de får plats. Om det inte finns tillräckligt med fast storlekkapacitet finns vissa NAP-hanterade noder kvar.
Skala upp befintliga med fast storlek
ManagedClusterAgentPoolseller skapa nya med fast storlekAgentPoolsför att hantera belastningen från NAP-hanterade noder. När dessa noder läggs till i klustret töms nodens NAP-hanterade noder och arbetet migreras till noderna med fast storlek.Ta bort alla NAP-hanterade noder med kommandot
kubectl get nodes -l karpenter.sh/nodepool. Om NAP-hanterade noder fortfarande finns saknar klustret troligen kapacitet med fast storlek. I det här fallet bör du lägga till fler noder så att de återstående arbetsbelastningarna kan migreras.
Uppdatera NAP-läget till
Manualmed kommandotaz aks updateAzure CLI med flaggan--node-provisioning-modeinställd påManual.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Manual
Uppdatera fältet
properties.nodeProvisioningProfile.modetillManuali ARM-mallen och distribuera om det.{ "$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" } } } ] }
Migrera från självhanterad Karpenter med öppen källkod till hanterad automatisk nodetablering (NAP)
Om Karpenter installerades från Helm-chartet för öppen källkod kan du fortfarande aktivera NAP på ditt kluster. Dessa steg förutsätter att Karpenter Helm-diagrammet är installerat.
Viktigt!
Kontrollera att du kör latest-versionen av Karpenter innan du påbörjar migreringen. NAP kör alltid den senaste versionen.
Viktigt!
Var noga med att inte ta bort Karpenter CRD när du utför den här migreringsprocessen. Om CRD:erna tas bort leder det till att de underliggande NodeClaims också tas bort, vilket kan störa dina arbetslaster.
Ta bort
managed-by=Helmetiketterna och anteckningarna för att se till att Karpenter CRD:erna inte avinstalleras i steg 2.kubectl get crds -l app.kubernetes.io/managed-by=Helm -o name | grep karpenter.azure.com | xargs -I{} kubectl patch {} --type=json -p ' [ {"op":"remove","path":"/metadata/annotations/meta.helm.sh~1release-name"}, {"op":"remove","path":"/metadata/annotations/meta.helm.sh~1release-namespace"}, {"op":"remove","path":"/metadata/labels/app.kubernetes.io~1managed-by"} ]'Avinstallera Helm-diagrammet för att ta bort de distributions-, tjänst-, roller- och andra resurser som används av open-source Karpenter. I det här läget reagerar Karpenter inte längre på skalningshändelser, men befintliga noder fortsätter att fungera.
helm uninstall karpenter -n kube-system # If you installed Karpenter into a different namespace than kube-system, specify that here instead of kube-systemAktivera NAP i klustret:
az aks update --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --node-provisioning-mode Auto --node-provisioning-default-pools NoneDet här kommandot inaktiverar standardnodpoolerna eftersom du har befintliga NodePools och vill fortsätta använda dem. Om du vill aktivera standardpooler för automatisk etablering av noder kan du utelämna
--node-provisioning-default-pools Nonefrån kommandotaz aks update.Kontrollera att migreringen är klar: När
az aks updatefrån steg 3 har slutförts utförs migreringen. Du kan också bekräfta att migreringen görs genom att kontrollera anteckningarna på Karpenter CRD:erna. Du bör se:meta.helm.sh/release-name: aks-managed-karpenter-overlay-base meta.helm.sh/release-namespace: kube-systemNu är NAP aktiverat och automatisk skalning bör återupptas.
Automatisk nodövervakning och -provisionering
Hämta Karpenter-loggar och -status
Du kan hämta loggar och statusuppdateringar från Karpenter för att diagnostisera och felsöka NAP-relaterade händelser. AKS hanterar automatisk etablering av noder åt dig och kör den i det hanterade kontrollplanet. Du kan aktivera kontrollplansloggar för att se Karpenter-loggar och -åtgärder från automatisk nodetablering. Mer information om kontrollplansloggar finns i dokumentationen om AKS-kontrollplansloggar
Konfigurera en regel för resursloggar för att skicka automatiska nodetableringsloggar till Log Analytics med hjälp av instructions här. Kontrollera att du markerar kryssrutan för
node-auto-provisioningnär du väljer alternativ för Loggar.Välj avsnittet Logg i klustret.
Ange följande exempelfråga i Log Analytics:
AKSControlPlane | where Category == "karpenter-events"Visa händelser för automatisk etablering av noder i CLI:
kubectl get events --field-selector source=karpenter-events
Mått för automatisk tilldelning av noder
Du kan aktivera kontrollplanmetrik (förhandsversion) för att se specifika Karpenter-metriker och åtgärder från automatisk nodetablering med Azure Monitor hanterad tjänst för Prometheus-tilläggsmodul.
Nästa steg
Mer information om automatisk nodetablering i AKS finns i följande artiklar:
- Använda automatisk nodetablering i ett anpassat virtuellt nätverk
- Konfigurera nätverk för automatisk nodetablering i AKS
- Konfigurera nodpooler för automatisk tilldelning av noder i AKS
- Konfigurera störningsprinciper för automatisk nodtilldelning i AKS
- Uppgradera nodbilder för automatisk etablering av noder i AKS