Freigeben über


Aktivieren oder Deaktivieren der automatischen Knotenbereitstellung in Azure Kubernetes Service (AKS)

In diesem Artikel wird erläutert, wie Sie die automatische Bereitstellung von Knoten (Node Auto-Provisioning, NAP) in Azure Kubernetes Service (AKS) mit den Vorlagen Azure CLI oder Azure Resource Manager (ARM) aktivieren oder deaktivieren.

Wenn Sie einen NAP-fähigen AKS-Cluster mit einem benutzerdefinierten virtuellen Netzwerk (VNet) und Subnetzen erstellen möchten, lesen Sie die Informationen unter Erstellen eines NAP-Clusters (Node Auto-Provisioning, automatische Knotenbereitstellung) in einem benutzerdefinierten virtuellen Netzwerk.

Bevor Sie anfangen

Bevor Sie beginnen, lesen Sie die Übersicht über die automatische Bereitstellung von Knoten (Node Auto-Provisioning, NAP) in AKS-Artikel , in dem erläutert wird, wie NAP funktioniert, Voraussetzungen und Einschränkungen.

Automatische Knoten-Bereitstellung (Node Auto-Provisioning, NAP) auf einem AKS-Cluster aktivieren

In den folgenden Abschnitten wird erläutert, wie NAP für einen neuen oder vorhandenen AKS-Cluster aktiviert wird:

Hinweis

Sie können Metriken auf Steuerungsebene aktivieren, um die Protokolle und Vorgänge der automatischen Bereitstellung von Knoten mit dem Add-On für den verwalteten Azure Monitor-Dienst für Prometheus anzuzeigen.

Aktivieren von NAP für einen neuen Cluster

  • Aktivieren Sie die automatische Bereitstellung von Knoten für einen neuen Cluster mithilfe des az aks create-Befehls, und legen Sie dabei das Flag --node-provisioning-mode auf Auto fest. Der folgende Befehl legt außerdem den --network-plugin Wert auf azure, --network-plugin-mode auf overlayund --network-dataplane auf 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. Erstellen Sie eine Datei mit dem Namen nap.json, und fügen Sie die folgende ARM-Vorlagenkonfiguration hinzu, wobei das Feld properties.nodeProvisioningProfile.mode auf Auto festgelegt ist, was NAP ermöglicht. (Die Standardeinstellung ist 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. Aktivieren Sie die automatische Bereitstellung von Knoten auf einem neuen Cluster mithilfe des az deployment group create Befehls, wobei das --template-file Kennzeichen auf den Pfad der ARM-Vorlagendatei festgelegt ist.

    az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
    

Aktivieren von NAP auf einem vorhandenen Cluster

  • Aktivieren Sie die automatische Bereitstellung von Knoten für einen vorhandenen Cluster mithilfe des az aks update-Befehls, und legen Sie dabei das Flag --node-provisioning-mode auf Auto fest.

    az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
    

Deaktivieren der automatischen Bereitstellung von Knoten (Node Auto-Provisioning, NAP) in einem AKS-Cluster

Von Bedeutung

Sie können NAP nur für einen Cluster deaktivieren, wenn die folgenden Bedingungen erfüllt sind:

  • Es sind keine NAP-Knoten vorhanden. Sie können den kubectl get nodes -l karpenter.sh/nodepool Befehl verwenden, um nach vorhandenen NAP-verwalteten Knoten zu suchen.
  • Alle vorhandenen Karpenter NodePools haben ihr spec.limits.cpu Feld auf 0 festgelegt. Diese Aktion verhindert, dass neue Knoten erstellt werden, aber die derzeit ausgeführten Knoten werden nicht unterbrochen.
  1. Legen Sie das Feld spec.limits.cpu für alle vorhandenen Karpenter-NodePool-Elemente auf 0 fest. Beispiel:

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

    Von Bedeutung

    Wenn Sie nicht sicherstellen möchten, dass alle zuvor auf einem NAP-Knoten ausgeführten Pods vor dem Deaktivieren von NAP sicher zu einem Nicht-NAP-Knoten migriert werden, können Sie die Schritte 2 und 3 überspringen und stattdessen den kubectl delete node Befehl für jeden NAP-verwalteten Knoten verwenden. Das Überspringen der Schritte 2 und 3 wird jedoch nicht empfohlen, da einige Pods ausstehend sein können und Pod-Unterbrechungsbudgets (PDBs) nicht berücksichtigt werden

    Achten Sie beim Verwenden des kubectl delete node Befehls darauf, nur NAP-verwaltete Knoten zu löschen. Sie können NAP-verwaltete Knoten mithilfe des kubectl get nodes -l karpenter.sh/nodepool Befehls identifizieren.

  2. Fügen Sie den Taint karpenter.azure.com/disable:NoSchedule zu jedem Karpenter-NodePool-Element hinzu. Beispiel:

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

    Diese Aktion startet den Prozess der Migration der Workloads auf den von NAP verwalteten Knoten zu nicht von NAP verwalteten Knoten, wobei PDBs und Unterbrechungsgrenzwerte berücksichtigt werden. Pods migrieren zu nicht von der automatischen Bereitstellung von Knoten verwalteten Knoten, wenn sie passen. Wenn nicht genügend Kapazität mit fester Größe vorhanden ist, bleiben einige Knoten erhalten, die von NAP verwaltet werden.

  3. Skalieren Sie vorhandene ManagedClusterAgentPools mit fester Größe, oder erstellen Sie ein neues AgentPools-Element mit fester Größe, um die Last von den durch NAP verwalteten Knoten zu übernehmen. Wenn diese Knoten dem Cluster hinzugefügt werden, werden von NAP verwaltete Knoten ausgeglichen, und die Arbeit wird zu den Knoten mit fester Größe migriert.

  4. Löschen Sie alle NAP-verwalteten Knoten mithilfe des kubectl get nodes -l karpenter.sh/nodepool Befehls. Wenn noch NAP-verwaltete Knoten vorhanden sind, fehlt dem Cluster wahrscheinlich die Kapazität mit fester Größe. In diesem Fall sollten Sie weitere Knoten hinzufügen, damit die verbleibenden Workloads migriert werden können.

  1. Aktualisieren Sie den NAP-Modus auf Manual unter Verwendung des az aks update Azure CLI-Befehls, wobei der Schalter --node-provisioning-mode auf Manual gesetzt ist.

    az aks update \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP \
        --node-provisioning-mode Manual
    
  1. Aktualisieren Sie das properties.nodeProvisioningProfile.mode-Feld zu Manual in Ihrer ARM-Vorlage und stellen Sie es erneut bereit.

    {
      "$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ächste Schritte

Weitere Informationen zur automatischen Bereitstellung von Knoten in AKS finden Sie in den folgenden Artikeln: