Partager via


Gérer des pools de nœuds système 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. Les pools de nœuds contiennent les machines virtuelles sous-jacentes qui exécutent vos applications. Les pools de nœuds système et les pools de nœuds utilisateur sont deux modes de pool de nœuds différents pour vos clusters AKS. Les pools de nœuds système sont principalement utilisés pour héberger des pods système critiques, tels que CoreDNS et metrics-server. Les pools de nœuds utilisateur sont principalement utilisés pour héberger vos pods d'application. Cela étant, les pods d’application peuvent être planifiés sur des pools de nœuds système si vous souhaitez n'avoir qu’un pool dans votre cluster AKS. Chaque cluster AKS doit contenir au moins un pool de nœuds système avec au moins deux nœuds.

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.

Cet article montre comment gérer les pools de nœuds système dans AKS. Pour des informations sur l’utilisation de plusieurs pools de nœuds, voir Utiliser plusieurs pools de nœuds.

Avant de commencer

La version 2.3.1 (ou ultérieure) d’Azure CLI doit être installée et configurée. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Limites

Les limitations suivantes s’appliquent lorsque vous créez et gérez les clusters AKS prenant en charge les pools de nœuds système.

  • Consultez Quotas, restrictions sur la taille de machine virtuelle et disponibilité des régions dans AKS.
  • Pour définir un mode de pool de nœuds, vous devez utiliser l’API version 2020-03-01 ou ultérieure. Les clusters créés sur des versions d’API antérieures à 2020-03-01 contiennent uniquement des pools de nœuds utilisateur, mais ils peuvent être migrés pour contenir des pools de nœuds système en suivant les étapes de mise à jour du mode de pool.
  • 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 un et six caractères.
  • Le mode d’un pool de nœuds est une propriété obligatoire qui doit être définie explicitement si vous utilisez des modèles ARM ou des appels d’API directs.

Pools de nœuds système et utilisateur

Pour un pool de nœuds système, AKS attribue automatiquement l’étiquette kubernetes.azure.com/mode: system à ses nœuds. C’est pourquoi AKS préfère planifier des pods du système sur les pools de nœuds qui portent cette étiquette. Cette étiquette ne vous empêche pas de planifier des pods d’application sur des pools de nœuds système. Cependant, nous vous recommandons d'isoler les pods système critiques de vos pods d'application pour empêcher les pods d'application mal configurés ou malveillants de supprimer accidentellement des pods système.

Vous pouvez appliquer ce comportement en créant un pool de nœuds système dédié. Utilisez la teinte CriticalAddonsOnly=true:NoSchedule pour empêcher la planification de pods d’application sur les pools de nœuds système.

Les pools de nœuds système présentent les restrictions suivantes :

  • Les pools de nœuds système doivent prendre en charge au moins 30 pods, comme décrit par la formule des valeurs minimale et maximale pour les pods.
  • Le paramètre osType des pools de nœuds système doit être Linux.
  • Le paramètre osType des pools de nœuds utilisateur peut être Linux ou Windows.
  • Les pools de nœuds système doivent contenir au moins deux nœuds, et les pools de nœuds utilisateur peuvent contenir zéro, un ou plusieurs nœuds.
  • Les pools de nœuds système nécessitent une référence SKU de machine virtuelle d’au moins 4 processeurs virtuels et de 4 Go de mémoire.
  • Les VMs de la série B ne sont pas prises en charge pour les pools de nœuds système.
  • Un minimum de trois nœuds à 8 processeurs virtuels ou deux nœuds à au moins 16 processeurs virtuels est recommandé (par exemple, Standard_DS4_v2), en particulier pour les clusters de grande taille (plusieurs réplicas de pod CoreDNS, 3 à 4 modules complémentaires, etc.).
  • Les pools de nœuds Spot nécessitent des pools de nœuds utilisateur.
  • L’ajout d’un autre pool de nœuds système ou la modification du pool de nœuds système ne déplace pas automatiquement les pods. Les pods système peuvent continuer à s’exécuter sur le même pool de nœuds, même si vous le transformez en pool de nœuds utilisateur. Si vous supprimez ou réduisez la taille d’un pool de nœuds exécutant des pods système qui correspondaient à un pool de nœuds système, ces pods système sont redéployés avec la planification préférée vers le nouveau pool de nœuds système.

Vous pouvez effectuer les opérations suivantes avec des pools de nœuds :

  • Créer un pool de nœuds système dédié (préférer la planification de pods système aux pools de nœuds de mode:system)
  • Modifiez un pool de nœuds système en pool de nœuds utilisateur, à condition de disposer d’un autre pool de nœuds système pour prendre sa place dans le cluster AKS.
  • Modifiez un pool de nœuds utilisateur en pool de nœuds système.
  • Supprimez des pools de nœuds utilisateur.
  • Vous pouvez supprimer un pool de nœuds système à condition de disposer d’un autre pool de nœuds système pour prendre sa place dans le cluster AKS.
  • Un cluster AKS peut avoir plusieurs pools de nœuds système et nécessite au moins un pool de nœuds système.
  • Si vous souhaitez modifier différents paramètres immuables sur des pools de nœuds existants, vous pouvez créer de nouveaux pools de nœuds pour les remplacer. Un exemple consiste à ajouter un nouveau pool de nœuds avec un nouveau paramètre maxPods et à supprimer l’ancien pool de nœuds.
  • Utiliser l’affinité de nœud pour exiger ou préférer les nœuds pouvant être planifiés en fonction des étiquettes de nœud. Vous pouvez définir key sur kubernetes.azure.com, operator sur In et values sur user ou system dans votre code YAML et appliquer cette définition avec kubectl apply -f yourYAML.yaml.

Créer un cluster AKS avec un pool de nœuds système

Lorsque vous créez un cluster AKS, le pool de nœuds initial est défini par défaut sur un mode de type system. Lorsque vous créez des pools de nœuds avec az aks nodepool add, ces pools de nœuds sont des pools de nœuds utilisateur, sauf si vous spécifiez explicitement le paramètre mode.

L’exemple suivant crée un groupe de ressources nommé myResourceGroup dans la région USA Est.

az group create --name myResourceGroup --location eastus

Utilisez la commande az aks create pour créer un cluster AKS. L’exemple suivant crée un cluster nommé myAKSCluster avec un pool système dédié contenant deux nœuds. Pour vos charges de travail de production, assurez-vous d’utiliser des pools de nœuds système avec au moins trois nœuds. Cette opération peut prendre plusieurs minutes.

# Create a new AKS cluster with a single system pool
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys

Ajouter un pool de nœuds système dédié à un cluster AKS existant

Vous pouvez ajouter un ou plusieurs pools de nœuds système à des clusters AKS existants. Il est recommandé de planifier vos pods d’application sur des pools de nœuds utilisateur et de dédier des pools de nœuds système uniquement aux pods système qui sont cruciaux. Cela empêche les modules d’applications malveillantes de supprimer accidentellement des modules système. Appliquez ce comportement avec la teinte CriticalAddonsOnly=true:NoSchedule pour vos pools de nœuds système.

La commande suivante ajoute un pool de nœuds dédié en mode de type système avec trois nœuds, par défaut.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name systempool \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --mode System

Afficher les détails de votre pool de nœuds

Vous pouvez vérifier les détails de votre pool de nœuds à l’aide de la commande suivante.

az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name systempool

Un mode de type Système est défini pour les pools de nœuds système, et un mode de type Utilisateur est défini pour les pools de nœuds utilisateur. Dans le cas d’un pool système, vérifiez que la teinte est définie sur CriticalAddonsOnly=true:NoSchedule, ce qui empêchera les pods d’application d’être planifiées sur ce pool de nœuds.

{
  "agentPoolType": "VirtualMachineScaleSets",
  "availabilityZones": null,
  "count": 3,
  "enableAutoScaling": null,
  "enableNodePublicIp": false,
  "id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
  "maxCount": null,
  "maxPods": 110,
  "minCount": null,
  "mode": "System",
  "name": "systempool",
  "nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
  "nodeLabels": {},
  "nodeTaints": [
    "CriticalAddonsOnly=true:NoSchedule"
  ],
  "orchestratorVersion": "1.16.10",
  "osDiskSizeGb": 128,
  "osType": "Linux",
  "provisioningState": "Succeeded",
  "proximityPlacementGroupId": null,
  "resourceGroup": "myResourceGroup",
  "scaleSetEvictionPolicy": null,
  "scaleSetPriority": null,
  "spotMaxPrice": null,
  "tags": null,
  "type": "Microsoft.ContainerService/managedClusters/agentPools",
  "upgradeSettings": {
    "maxSurge": null
  },
  "vmSize": "Standard_DS2_v2",
  "vnetSubnetId": null
}

Mettre à jour les pools de nœuds utilisateur et système existants dans un cluster

Notes

Pour définir un mode de pool de nœuds système, vous devez utiliser l’API version 2020-03-01 ou ultérieure. Les clusters créés sur des versions d’API antérieures à 2020-03-01 contiennent uniquement des pools de nœuds utilisateur. Pour bénéficier des fonctionnalités des pools de nœuds système et de leurs avantages sur des clusters plus anciens, mettez à jour le mode des pools de nœuds existants en utilisant les commandes suivantes dans la dernière version d’Azure CLI.

Vous pouvez modifier les modes pour les pools de nœuds système et utilisateur. Vous pouvez modifier un pool de nœuds système en pool de nœuds utilisateur seulement si un autre pool de nœuds système existe déjà sur le cluster AKS.

Cette commande modifie un pool de nœuds système en pool de nœuds utilisateur.

az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode user

Cette commande modifie un pool de nœuds utilisateur en pool de nœuds système.

az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode system

Supprimer un pool de nœuds système

Notes

Pour utiliser des pools de nœuds système sur des clusters AKS avant l’API version 2020-03-02, ajoutez un nouveau pool de nœuds système, puis supprimez le pool de nœuds par défaut d’origine.

Vous devez disposer d’au moins deux pools de nœuds système sur votre cluster AKS pour pouvoir en supprimer un.

az aks nodepool delete --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool

Nettoyer les ressources

Pour supprimer le cluster, utilisez la commande az group delete pour supprimer le groupe de ressources AKS :

az group delete --name myResourceGroup --yes --no-wait

Étapes suivantes

Dans cet article, vous avez appris comment créer et gérer des pools de nœuds système dans un cluster AKS. Pour plus d’informations sur le démarrage et l’arrêt des pools de nœuds AKS, voir Démarrer et arrêter des pools de nœuds AKS.