Partager via


Utiliser des étiquettes dans un cluster Azure Kubernetes Service (AKS)

Si vous avez plusieurs pools de nœuds, vous pouvez ajouter une étiquette lors de la création d’un pool de nœuds. Les étiquettes Kubernetes gèrent les règles de planification pour les nœuds. Vous pouvez ajouter des étiquettes à un pool de nœuds à tout moment et les appliquer à tous les nœuds du pool.

Dans ce guide pratique, vous allez découvrir comment utiliser des étiquettes dans un cluster Azure Kubernetes Service (AKS).

Prérequis

La version 2.2.0 (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.

Créer un cluster AKS avec une étiquette

  1. Créez un cluster AKS avec une étiquette à l’aide de la commande az aks create et spécifiez le paramètre --node-labels pour définir vos étiquettes. Les intitulés doivent constituer une paire clé/valeur et avoir une syntaxe valide.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 2 \
        --nodepool-labels dept=IT costcenter=9000 \
        --generate-ssh-keys
    
  2. Vérifiez que les étiquettes ont été définies à l’aide de la commande kubectl get nodes --show-labels.

    kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"
    

Créer un pool de nœuds avec une étiquette

  1. Créez un pool de nœuds avec une étiquette à l’aide de la commande az aks nodepool add et spécifiez un nom pour le paramètre --name et des étiquettes pour le paramètre --labels. Les étiquettes doivent être une paire clé/valeur et avoir une syntaxe valide.

    L’exemple de commande suivant crée un pool de nœuds nommé labelnp avec les étiquettes dept=HR et costcenter=5000.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name labelnp \
        --node-count 1 \
        --labels dept=HR costcenter=5000 \
        --no-wait
    

    L’exemple de sortie suivant de la commande az aks nodepool list montre que le pool de nœuds labelnp crée (Creating) des nœuds avec les étiquettes (nodeLabels) spécifiées :

    [
      {
        ...
        "count": 1,
        ...
        "name": "labelnp",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeLabels":  {
          "costcenter": "5000",
          "dept": "HR"
        },
        ...
      },
     ...
    ]
    
  2. Vérifiez que les étiquettes ont été définies à l’aide de la commande kubectl get nodes --show-labels.

    kubectl get nodes --show-labels | grep -e "costcenter=5000" -e "dept=HR"
    

Mise à jour d’étiquettes sur des pools de nœuds existants

  1. Mettez à jour une étiquette sur un pool de nœuds existant à l’aide de la commande az aks nodepool update. La mise à jour d’étiquettes sur des pools de nœuds existants remplace les anciennes étiquettes par de nouvelles. Les intitulés doivent constituer une paire clé/valeur et avoir une syntaxe valide.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name labelnp \
        --labels dept=ACCT costcenter=6000 \
        --no-wait
    
  2. Vérifiez que les étiquettes ont été définies à l’aide de la commande kubectl get nodes --show-labels.

    kubectl get nodes --show-labels | grep -e "costcenter=6000" -e "dept=ACCT"
    

Étiquettes non disponibles

Étiquettes système réservées

Depuis la version d’AKS 2021-08-19, AKS a supprimé la possibilité d’apporter des modifications aux étiquettes réservées d’AKS. Toute tentative de modifier ces étiquettes entraîne l’affichage d’un message d’erreur.

Les étiquettes suivantes sont des étiquettes réservées d’AKS. Utilisation de nœud virtuel spécifie si ces étiquettes pourraient être une fonctionnalité système prise en charge sur des nœuds virtuels. Certaines propriétés que ces fonctionnalités système modifient ne sont pas disponibles sur les nœuds virtuels, car elles nécessitent une modification de l’hôte.

Étiquette Value Exemples/options Utilisation de nœud virtuel
kubernetes.azure.com/agentpool <Nom de pool d'agents> nodepool1 Identique
kubernetes.io/arch amd64 runtime.GOARCH N/A
kubernetes.io/os <OS Type> Linux/Windows Identique
node.kubernetes.io/instance-type <Taille de la machine virtuelle> Standard_NC6s_v3 Les machines
topology.kubernetes.io/region <Région Azure> westus2 Identique
topology.kubernetes.io/zone <Azure zone> 0 Identique
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 Identique
kubernetes.azure.com/mode <mode> Utilisateur ou système Utilisateur
kubernetes.azure.com/role agent Agent Identique
kubernetes.azure.com/scalesetpriority <Priorité de VMSS> Spot ou normale N/A
kubernetes.io/hostname <hostname> aks-nodepool-00000000-vmss000000 Identique
kubernetes.azure.com/storageprofile <Profil de stockage de disque de système d’exploitation> Adresses IP gérées N/A
kubernetes.azure.com/storagetier <Niveau de stockage de disque de système d’exploitation> Premium_LRS N/A
kubernetes.azure.com/instance-sku <Famille de références SKU> Standard_N Les machines
kubernetes.azure.com/node-image-version <VHD version> AKSUbuntu-1804-2020.03.05 Version du nœud virtuel
kubernetes.azure.com/subnet <nom de sous-réseau de pool de nœuds> subnetName Nom de sous-réseau de nœud virtuel
kubernetes.azure.com/vnet <nom de réseau virtuel de pool de nœuds> vnetName Réseau virtuel de nœud virtuel
kubernetes.azure.com/ppg <nom de pgg de pool de nœuds> ppgName N/A
kubernetes.azure.com/encrypted-set <nom d’ensemble chiffré de pool de nœuds> encrypted-set-name N/A
kubernetes.azure.com/accelerator <accélérateur> nvidia N/A
kubernetes.azure.com/fips_enabled <fips est-il activé ?> true N/A
kubernetes.azure.com/os-sku <os/sku> Créer ou mettre à jour une référence SKU de système d’exploitation Linux
  • Même est inclus dans des emplacements où les valeurs attendues pour les étiquettes ne diffèrent pas entre un pool de nœuds standard et un pool de nœuds virtuels. Comme les pods de nœuds virtuels n’exposent pas de machine virtuelle sous-jacente, les valeurs de référence SKU de machine virtuelle sont remplacées par la référence SKU Virtuelle.
  • Version du nœud virtuel fait référence à la version actuelle de la version du connecteur Kubelet-ACI virtuel.
  • Nom du sous-réseau de nœuds virtuels est le nom du sous-réseau dans lequel des pod de nœuds virtuels sont déployés dans Azure Container instance (ACI).
  • Réseau virtuel de nœuds virtuels est le nom du réseau virtuel qui contient le sous-réseau dans lequel des pods de nœuds virtuels sont déployés sur ACI.

Préfixes réservés

Les préfixes suivants sont des préfixes réservés d’AKS qui ne peuvent pas être utilisés avec un nœud :

  • kubernetes.azure.com/
  • kubernetes.io/

Pour plus d’informations sur les préfixes réservés, consultez l’article Well-Known Labels, Annotations and Taints (en anglais uniquement).

Étiquettes désapprouvées

La désapprobation des étiquettes suivantes est prévue avec la version de Kubernetes v 1.24. Vous devez modifier les références d’étiquette par le remplacement recommandé.

Étiquette Remplacement recommandé Gestionnaire
failure-domain.beta.kubernetes.io/region topology.kubernetes.io/region Kubernetes
failure-domain.beta.kubernetes.io/zone topology.kubernetes.io/zone Kubernetes
beta.kubernetes.io/arch kubernetes.io/arch Kubernetes
beta.kubernetes.io/instance-type node.kubernetes.io/instance-type Kubernetes
beta.kubernetes.io/os kubernetes.io/os Kubernetes
node-role.kubernetes.io/agent* kubernetes.azure.com/role=agent Azure Kubernetes Service
kubernetes.io/role* kubernetes.azure.com/role=agent Azure Kubernetes Service
Agentpool* kubernetes.azure.com/agentpool Azure Kubernetes Service
Storageprofile* kubernetes.azure.com/storageprofile Azure Kubernetes Service
Storagetier* kubernetes.azure.com/storagetier Azure Kubernetes Service
Accelerator* kubernetes.azure.com/accelerator Azure Kubernetes Service

*Récemment désapprouvé. Pour plus d’informations, consultez les notes de publication.

Étapes suivantes

En savoir plus sur les étiquettes Kubernetes dans la documentation sur les étiquettes Kubernetes.