Créer des pools de nœuds pour un cluster dans Azure Kubernetes Service (AKS)

Dans Azure Kubernetes Service (AKS), les nœuds d’une même configuration sont regroupés dans des pools de nœuds. Ces pools de nœuds contiennent les machines virtuelles sous-jacentes qui exécutent vos applications. Lorsque vous créez un cluster AKS; vous définissez le nombre initial de nœuds et leur taille (référence SKU), opération qui crée un pool de nœuds système.

Pour prendre en charge les applications ayant des exigences de calcul ou de stockage différentes, vous pouvez créer des pools de nœuds utilisateur. Les pools de nœuds système sont principalement utilisés afin d’héberger des pods système critiques tels que CoreDNS et konnectivity. Les pools de nœuds utilisateur sont principalement utilisés pour héberger vos pods d'application. Par exemple, utilisez des pools de nœuds utilisateur supplémentaires afin de fournir des GPU pour des applications nécessitant beaucoup de ressources de calcul ou l’accès à un stockage SSD hautes performances. Cependant, si vous souhaitez n'avoir qu’un pool dans votre cluster AKS, vous pouvez planifier des pods d’application sur des pools de nœuds système.

Remarque

Cette fonctionnalité donne plus de contrôle sur la création et la gestion de plusieurs pools de nœuds, et nécessite des commandes distinctes pour les opérations de création/mise à jour/suppression (CRUD). Auparavant, les opérations de cluster effectuées via az aks create ou az aks update utilisaient l’API managedCluster. Il s’agissait des seules options possibles pour modifier le plan de contrôle et un pool de nœuds unique. Cette fonctionnalité expose une opération distincte définie pour les pools d’agents via l’API agentPool. Elle requiert l’utilisation du jeu de commandes az aks nodepool pour exécuter des opérations sur un pool de nœuds individuel.

Cet article vous montre comment créer un ou plusieurs pools de nœuds dans un cluster AKS.

Avant de commencer

Limites

Les limitations suivantes s’appliquent lorsque vous créez des clusters AKS prenant en charge plusieurs pools de nœuds :

  • Voir Quotas, restrictions de taille de machine virtuelle et disponibilité des régions dans Azure Kubernetes Service (AKS).
  • Vous pouvez supprimer des pools de nœuds système si un autre pool de nœuds système peut prendre sa place dans le cluster AKS. Sinon, la suppression du pool de nœuds système est impossible.
  • Les pools de système doivent contenir au moins un nœud, et les pools de nœuds de l’utilisateur peuvent contenir zéro ou plusieurs nœuds.
  • Le cluster AKS doit utiliser les équilibreurs de charge avec la référence SKU Standard pour utiliser plusieurs pools de nœuds. La fonctionnalité n’est pas prise en charge pour les équilibreurs de charge avec la référence SKU de base.
  • Le cluster AKS doit utiliser des Virtual Machine Scale Sets pour les nœuds.
  • Le nom d’un pool de nœuds ne peut contenir que des caractères alphanumériques minuscules et doit commencer par une lettre minuscule.
    • Pour les pools de nœuds Linux, la longueur doit être comprise entre 1 et 12 caractères.
    • Pour les pools de nœuds Windows, la longueur doit être comprise entre 1 et 6 caractères.
  • Tous les pools de nœuds doivent résider dans le même réseau virtuel.
  • Quand vous créez plusieurs pools de nœuds au moment de la création du cluster, les versions de Kubernetes des pools de nœuds doivent correspondre à la version définie pour le plan de contrôle.

Créer un cluster AKS

Important

Si vous exécutez un pool de nœuds système unique pour votre cluster AKS dans un environnement de production, nous vous recommandons d’utiliser au moins trois nœuds pour le pool de nœuds. Si un nœud tombe en panne, vous perdez les ressources du plan de contrôle, puis la redondance est compromise. Vous pouvez réduire ce risque en ayant plus de nœuds de plan de contrôle.

  1. Créez un groupe de ressources Azure à l’aide de la commande az group create.

    az group create --name myResourceGroup --location eastus
    
  2. Créez un cluster AKS avec un pool de nœuds unique à l’aide de la commande az aks create.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --generate-ssh-keys \
        --load-balancer-sku standard
    

    La création du cluster ne prend que quelques minutes.

  3. Lorsque le cluster est prêt, obtenez les informations d’identification du cluster à l’aide de la commande az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Ajouter un pool de nœuds

Le cluster créé à l’étape précédente dispose d’un pool de nœuds unique. Dans cette section, nous ajoutons un deuxième pool de nœuds au cluster.

  1. Créez un nouveau pool de nœuds à l’aide de la commande az aks nodepool add. L’exemple suivant crée un pool de nœuds nommé mynodepool qui exécute trois nœuds :

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 3
    
  2. Vérifiez l’état de vos pools de nœuds avec la commande az aks node pool list, puis spécifiez votre groupe de ressources et le nom du cluster.

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster
    

    L’exemple de sortie suivant montre que mynodepool a été créé avec succès avec trois nœuds. Lorsque le cluster AKS a été créé à l'étape précédente, un pool nodepool1 par défaut a été généré avec 2 nœuds.

    [
      {
        ...
        "count": 3,
        ...
        "name": "mynodepool",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

Pools de nœuds ARM64

Le processeur ARM64 fournit un calcul à faible puissance pour vos charges de travail Kubernetes. Pour créer un pool de nœuds ARM64, vous devez choisir une machine virtuelle de série Dpsv5, Dplsv5 ou Epsv5.

Limites

  • Les pools de nœuds ARM64 ne sont pas pris en charge sur les clusters avec Defender.
  • Les pools de nœuds compatibles FIPS ne sont pas pris en charge avec les références SKU ARM64.

Ajouter un pool de nœuds ARM64

  • Ajoutez un pool de nœuds ARM64 à votre cluster existant à l’aide de la commande az aks nodepool add.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name armpool \
        --node-count 3 \
        --node-vm-size Standard_D2pds_v5
    

Pour les pools de nœuds Azure Linux

L’hôte de conteneur Azure Linux pour AKS est une distribution Linux open source disponible en tant qu’hôte de conteneur AKS. Elle offre une fiabilité, une sécurité et une cohérence élevées. Ceci inclut seulement l’ensemble minimal de packages nécessaires à l’exécution des charges de travail de conteneur, ce qui améliore les temps de démarrage et les performances générales.

Ajouter un pool de nœuds Azure Linux

  • Ajoutez un pool de nœuds Azure Linux à votre cluster existant en utilisant la commande az aks nodepool add, puis spécifiez --os-sku AzureLinux.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name azlinuxpool \
        --os-sku AzureLinux
    

Migrer des nœuds Ubuntu vers des nœuds Azure Linux

Vous pouvez migrer vos nœuds Ubuntu existants vers Azure Linux en utilisant l’une des méthodes suivantes :

Pools de nœuds avec des sous-réseaux uniques

Une charge de travail peut nécessiter le fractionnement de nœuds de cluster en pools distincts à des fins d’isolation logique. Des sous-réseaux distincts dédiés à chaque pool de nœuds dans le cluster peuvent aider à prendre en charge cette isolation. Cela permet de répondre à des exigences comme la présence d’un espace d’adressage de réseau virtuel non contigu à fractionner entre les pools de nœuds.

Remarque

Veillez à utiliser Azure CLI version 2.35.0 ou ultérieure.

Limites

  • Tous les sous-réseaux attribués aux pools de nœuds doivent appartenir au même réseau virtuel.
  • Les pods système doivent avoir accès à tous les nœuds et pods du cluster pour fournir les fonctionnalités critiques telles que la résolution DNS et le proxy de tunneling kubectl logs/exec/port-forward.
  • Si vous développez votre VNET après la création du cluster, vous devez mettre à jour votre cluster avant d’ajouter un sous-réseau en dehors du bloc CIDR d’origine. Alors qu’AKS donne une erreur quand le pool d’agents est ajouté, l’extension Azure CLI aks-preview (version 0.5.66 et supérieures) prend désormais en charge l’exécution de la commande az aks update avec seulement les argument -g <resourceGroup> -n <clusterName> obligatoires. Cette commande va effectuer une opération de mise à jour sans apporter de modifications, ce qui peut permettre de récupérer un cluster bloqué dans un état d’échec.
  • Dans les clusters dont la version Kubernetes est inférieure à 1.23.3, kube-proxy fait une traduction SNAT du trafic provenant des nouveaux sous-réseaux, ce qui peut entraîner la suppression des paquets par la stratégie réseau Azure.
  • Les nœuds Windows acheminent par SNAT le trafic vers les nouveaux sous-réseaux jusqu'à ce que le pool de nœuds soit réimagé.
  • Les équilibreurs de charge internes correspondent par défaut à l’un des sous-réseaux du pool de nœuds.

Ajouter un pool de nœuds avec un sous-réseau unique

  • Ajoutez un pool de nœuds avec un sous-réseau unique à votre cluster existant à l’aide de la commande az aks nodepool add, puis spécifiez le paramètre --vnet-subnet-id.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 3 \
        --vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>
    

Pools de nœuds compatibles FIPS

Pour plus d’informations sur l’activation de la norme FIPS (Federal Information Process Standard) pour votre cluster AKS, consultez Activer la norme FIPS (Federal Information Process Standard) pour les pools de nœuds Azure Kubernetes Service (AKS).

Pools de nœuds Windows Server avec containerd

Depuis Kubernetes 1.20 et versions ultérieures, vous pouvez spécifier containerd comme runtime de conteneur pour des pools de nœuds Windows Server 2019. À compter de Kubernetes 1.23, containerd est le runtime de conteneur par défaut et le seul possible pour Windows.

Important

Lors de l’utilisation containerd de avec des pools de nœuds Windows Server 2019 :

  • Le plan de contrôle et les pools de nœuds Windows Server 2019 doivent utiliser Kubernetes version 1.20 ou ultérieure.
  • Quand vous créez ou mettez à jour un pool de nœuds pour exécuter des conteneurs Windows Server, la valeur par défaut de --node-vm-size est Standard_D2s_v3, qui est la taille minimale recommandée pour les pools de nœuds Windows Server 2019 antérieurs à Kubernetes version 1.20. La taille minimale recommandée pour des pools de nœuds Windows Server 2019 utilisant containerd est Standard_D4s_v3. Quand vous définissez le paramètre --node-vm-size, consultez la liste des tailles VM limitées.
  • Nous vous recommandons d’utiliser des teintes ou des étiquettes avec vos pools de nœuds Windows Server 2019 exécutant containerd, et des tolérances ou des sélecteurs de nœud avec vos déploiements, pour garantir que vos charges de travail sont correctement planifiées.

Ajouter un pool de nœuds Windows Server avec containerd

  • Ajoutez un pool de nœuds Windows Server avec containerd dans votre cluster existant via az aks nodepool add.

    Remarque

    Si vous ne spécifiez pas l’en-tête personnalisé WindowsContainerRuntime=containerd, le pool de nœuds utilise encore containerd comme runtime de conteneur par défaut.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --os-type Windows \
        --name npwcd \
        --node-vm-size Standard_D4s_v3 \
        --kubernetes-version 1.20.5 \
        --aks-custom-headers WindowsContainerRuntime=containerd \
        --node-count 1
    

Mettre à niveau un pool de nœuds Windows Server existant spécifique vers containerd

  • Mettez à niveau un pool de nœuds spécifique de Docker vers containerdà l’aide de la commande az aks nodepool upgrade.

    az aks nodepool upgrade \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name npwd \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Mettre à niveau tous les pools de nœuds Windows Server existants vers containerd

  • Mettez à niveau tous les pools de nœuds de Docker vers containerd à l’aide de la commande az aks nodepool upgrade.

    az aks nodepool upgrade \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Supprimer un pool de nœuds

Si vous n’avez plus besoin d’un pool de nœuds, vous pouvez le supprimer, puis supprimer les nœuds des machines virtuelles sous-jacentes.

Attention

Lorsque vous supprimez un pool de nœuds, AKS n’effectue pas d’isolement ou de drainage, et il n’existe aucune option de récupération pour la perte de données pouvant se produire lorsque vous supprimez un pool de nœuds. Si des pods ne peuvent pas être planifiés sur d’autres pools de nœuds, ces applications ne sont plus disponibles. Veillez à ne pas supprimer un pool de nœuds lorsque des applications en cours d’utilisation n’ont pas de sauvegardes de données ou la possibilité de s’exécuter sur d’autres pools de nœuds dans votre cluster. Pour réduire l’interruption de la replanification des pods en cours d’exécution sur le pool de nœuds à supprimer, effectuez un isolement et un drainage sur tous les nœuds du pool de nœuds avant de procéder à la suppression.

  • Supprimez un pool de nœuds à l’aide de la commande az aks nodepool delete, puis spécifiez le nom du pool de nœuds.

    az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name mynodepool --no-wait
    

    La suppression des nœuds et du pool de nœuds prend quelques minutes.

Étapes suivantes

Dans cet article, vous avez appris à créer plusieurs pools de nœuds dans un cluster AKS. Si vous souhaitez en savoir plus sur la gestion de plusieurs pools de nœuds, veuillez consulter la rubrique Gérer plusieurs pools de nœuds pour un cluster dans Azure Kubernetes Service (AKS).