Partager via


Activer ou désactiver l’approvisionnement automatique de nœud (NAP) dans Azure Kubernetes Service (AKS)

Cet article explique comment activer ou désactiver l’approvisionnement automatique de nœud dans Azure Kubernetes Service (AKS) à l’aide des modèles Azure CLI ou Azure Resource Manager (ARM).

Si vous souhaitez créer un cluster AKS compatible NAP avec un réseau virtuel personnalisé (VNet) et des sous-réseaux, consultez Créer un cluster d’approvisionnement automatique de nœud (NAP) dans un réseau virtuel personnalisé.

Avant de commencer

Avant de commencer, consultez la vue d’ensemble de l’approvisionnement automatique de nœud (NAP) dans l’article AKS , qui détaille le fonctionnement de NAP, les prérequis et les limitations.

Activer l’approvisionnement automatique de nœud (NAP) sur un cluster AKS

Les sections suivantes expliquent comment activer NAP sur un cluster AKS nouveau ou existant :

Activer NAP sur un nouveau cluster

  • Activez l'approvisionnement automatique de nœuds sur un nouveau cluster à l'aide de la commande az aks create avec le paramètre --node-provisioning-mode défini sur Auto. La commande suivante définit également --network-plugin à azure, --network-plugin-mode à overlay, et --network-dataplane à 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. Créez un fichier nommé nap.json et ajoutez la configuration de modèle ARM suivante, en définissant le champ properties.nodeProvisioningProfile.mode sur Auto, ce qui active NAP. (Le paramètre par défaut est 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. Activez l'auto-approvisionnement de nœud sur un nouveau cluster en utilisant la commande az deployment group create avec l’indicateur --template-file défini sur le chemin du fichier de modèle ARM.

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

Activer NAP sur un cluster existant

  • Activez l'autoprovisionnement de nœuds sur un cluster existant à l'aide de la commande az aks update avec l'indicateur --node-provisioning-mode défini sur Auto.

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

Désactiver l’approvisionnement automatique de nœud (NAP) sur un cluster AKS

Important

Vous pouvez uniquement désactiver NAP sur un cluster si les conditions suivantes sont remplies :

  • Il n’existe aucun nœud NAP existant. Vous pouvez utiliser la kubectl get nodes -l karpenter.sh/nodepool commande pour rechercher les nœuds gérés par NAP existants.
  • Tous les Karpenter NodePools existants ont leur champ spec.limits.cpu défini sur 0. Cette action empêche la création de nouveaux nœuds, mais n’interrompt pas les nœuds en cours d’exécution.
  1. Définissez le spec.limits.cpu champ sur 0 pour chaque Karpenter NodePoolexistant. Par exemple:

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

    Important

    Si vous ne souhaitez pas vous assurer que chaque pod en cours d’exécution sur un nœud NAP est migré en toute sécurité vers un nœud non NAP avant de désactiver NAP, vous pouvez ignorer les étapes 2 et 3 et utiliser plutôt la kubectl delete node commande pour chaque nœud géré par NAP. Toutefois, nous ne recommandons pas ignorer ces étapes, car cela pourrait laisser certains pods en attente et ne respecterait pas les budgets de perturbation des pods (PDB).

    Lorsque vous utilisez la kubectl delete node commande, veillez à supprimer uniquement les nœuds gérés par NAP. Vous pouvez identifier les nœuds gérés par NAP à l’aide de la kubectl get nodes -l karpenter.sh/nodepool commande.

  2. Ajoutez la teinte karpenter.azure.com/disable:NoSchedule à chaque Karpenter NodePool. Par exemple:

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

    Cette action démarre le processus de migration des charges de travail sur les nœuds gérés par NAP vers des nœuds non NAP, en respectant les limites de PDB et d’interruption. Les pods migrent vers des nœuds non NAP s'ils peuvent s'adapter. S'il n'y a pas suffisamment de capacité à taille fixe, certains nœuds gérés par NAP persistent.

  3. Effectuez une mise à l'échelle de taille fixe existanteManagedClusterAgentPools ou créez une nouvelle taille fixe AgentPools pour supporter la charge des nœuds gérés par NAP. À mesure que ces nœuds sont ajoutés au cluster, les nœuds gérés par NAP sont vidés et le travail est migré vers les nœuds de taille fixe.

  4. Supprimez tous les nœuds gérés par NAP à l’aide de la kubectl get nodes -l karpenter.sh/nodepool commande. Si des nœuds gérés par NAP existent toujours, le cluster manque probablement de capacité de taille fixe. Dans ce cas, vous devez ajouter d’autres nœuds afin que les charges de travail restantes puissent être migrées.

  1. Mettez à jour le mode NAP à Manual à l’aide de la commande Azure CLI az aks update avec le drapeau --node-provisioning-mode défini sur Manual.

    az aks update \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP \
        --node-provisioning-mode Manual
    
  1. Mettez à jour le champ properties.nodeProvisioningProfile.mode en Manual dans votre modèle ARM et redéployez-le.

    {
      "$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"
            }
          }
        }
      ]
    }
    

Étapes suivantes

Pour plus d’informations sur le provisionnement automatique de nœuds dans AKS, consultez les articles suivants :