Dela via


Aktivera eller inaktivera automatisk nodetablering (NAP) i Azure Kubernetes Service (AKS)

Den här artikeln beskriver hur du aktiverar eller inaktiverar automatisk etablering av noder (NAP) i Azure Kubernetes Service (AKS) med hjälp av Azure CLI- eller Azure Resource Manager-mallarna (ARM).

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 nodetablering med Azure Monitors hanterade tjänst för Prometheus-tillägget.

Aktivera NAP i ett nytt kluster

  • Aktivera automatisk nodetablering i ett nytt kluster med kommandot az aks create med --node-provisioning-mode flaggan inställd på Auto. Följande kommando anger --network-plugin också till azure, --network-plugin-mode till overlayoch --network-dataplane till cilium.

    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
    
  1. Skapa en fil med namnet nap.json och lägg till följande ARM-mallkonfiguration med properties.nodeProvisioningProfile.mode fältet inställt på Auto, vilket aktiverar NAP. (Standardinställningen är 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"
            }
          }
        }
      ]
    }
    
  2. Aktivera automatisk noddistribution i ett nytt kluster med kommandot az deployment group create med --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 update med --node-provisioning-mode flaggan 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/nodepool kommandot för att söka efter befintliga NAP-hanterade noder.
  • Alla befintliga Karpenter NodePools har deras spec.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.
  1. Ange fältet spec.limits.cpu till 0 för varje befintlig Karpenter NodePool. Till exempel:

    apiVersion: karpenter.sh/v1
    kind: NodePool
    metadata:
      name: default
    spec:
      limits:
        cpu: 0
    

    Viktigt!

    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 node kommandot 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 node kommandot bör du bara ta bort NAP-hanterade noder. Du kan identifiera NAP-hanterade noder med hjälp av kubectl get nodes -l karpenter.sh/nodepool kommandot .

  2. Lägg till den karpenter.azure.com/disable:NoSchedule tainten till varje Karpenter NodePool. Till exempel:

    apiVersion: karpenter.sh/v1
    kind: NodePool
    metadata:
      name: default
    spec:
      template:
        spec:
          ...
          taints:
            - key: karpenter.azure.com/disable
              effect: NoSchedule
    

    Den 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.

  3. Skala upp befintliga med fast storlek ManagedClusterAgentPools eller skapa nya med fast storlek AgentPools fö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.

  4. 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.

  1. Uppdatera NAP-läget till Manual med hjälp av az aks update Azure CLI-kommandot och ha --node-provisioning-mode-flagga inställd på Manual.

    az aks update \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP \
        --node-provisioning-mode Manual
    
  1. Uppdatera fältet properties.nodeProvisioningProfile.mode till Manual i 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"
            }
          }
        }
      ]
    }
    

Nästa steg

Mer information om automatisk nodetablering i AKS finns i följande artiklar: