Affecter des groupes de réservations de capacité aux pools de nœuds de Azure Kubernetes Service (AKS)

À mesure que vos demandes de charge de travail changent, vous pouvez associer des groupes de réservations de capacité existants à vos pools de nœuds Azure Kubernetes Service (AKS) pour garantir leur capacité allouée. Les groupes de réservations de capacité vous permettent de réserver la capacité de calcul dans une région Azure ou une zone de disponibilité pendant toute durée. Cette fonctionnalité est utile pour les charges de travail qui nécessitent une capacité garantie, comme celles avec des modèles de trafic prévisibles ou celles qui doivent répondre à des exigences de performances spécifiques.

Dans cet article, vous apprendrez à utiliser les groupes de réservation de capacité avec les pools de nœuds dans AKS.

Note

La suppression d’un pool de nœuds dissocie implicitement ce pool de nœuds de tout groupe de réservation de capacité associé avant que le pool ne soit supprimé. La suppression d’un cluster dissocie implicitement tous les pools de nœuds de ce cluster de leurs groupes de réservation de capacité associés.

Conditions préalables à l’utilisation des groupes de réservation de capacité avec les pools de nœuds AKS

  • Vous avez besoin d’Azure CLI version 2.56 ou ultérieure installée et configurée. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
  • Vous avez besoin d’un groupe de réservations de capacité existant avec au moins une réservation de capacité. Sinon, le pool de nœuds est ajouté au cluster avec un avertissement et aucun groupe de réservation de capacité n’est associé.
  • Vous devez créer une identité managée attribuée par l'utilisateur avec le rôle Contributor pour le groupe de ressources qui contient le groupe de réservations de capacité et l’attribuer à votre cluster AKS. Les identités managées affectées par le système ne fonctionnent pas pour cette fonctionnalité.

Important

Pour les groupes de réservations de capacité partagés ou inter-abonnements, l’utilisateur ou le principal de service exécutant la commande AKS doit avoir Microsoft.Compute/capacityReservationGroups/write l’autorisation sur le groupe de réservations de capacité lié. Les autorisations granulaires de consommateur du groupe de réservation de capacité partagée utilisées pour les machines virtuelles, telles que Microsoft.Compute/capacityReservationGroups/deploy/action, ne suffisent pas actuellement pour associer un pool de nœuds AKS à un groupe de réservation de capacité.

Les autorisations affectées à l’identité managée du cluster AKS ne remplacent pas cette vérification d’autorisation de l’appelant. L’identité managée du cluster a toujours besoin des autorisations requises sur le groupe de ressources qui contient le groupe de réservations de capacité, comme décrit dans cet article.

Créer une identité managée affectée par l’utilisateur et l’affecter à un cluster AKS

  1. Créez une identité managée affectée par l’utilisateur à l’aide de la commande az identity create.

    az identity create --name <identity-name> --resource-group <resource-group-name> --location <location>
    
  2. Obtenez l’ID de l’identité managée affectée par l’utilisateur à l’aide de la commande et définissez-la az identity show sur une variable d’environnement.

    IDENTITY_ID=$(az identity show --name <identity-name> --resource-group <resource-group-name> --query identity.id -o tsv)
    
  3. Attribuez le Contributor rôle à l’identité affectée par l’utilisateur en utilisant la commande az role assignment create.

    az role assignment create --assignee $IDENTITY_ID --role "Contributor" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
    

    La propagation de l’attribution de rôle peut prendre jusqu’à 60 minutes .

  4. Affectez l'identité gérée attribuée par l'utilisateur à un cluster AKS nouveau ou existant à l'aide du drapeau --assign-identity avec la commande az aks create ou az aks update.

    # Create a new AKS cluster with the user-assigned managed identity
    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --location <location> \
        --node-vm-size <vm-size> --node-count <node-count> \
        --assign-identity $IDENTITY_ID \
        --generate-ssh-keys
    
    # Update an existing AKS cluster to use the user-assigned managed identity
    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --location <location> \
        --node-vm-size <vm-size> \
        --node-count <node-count> \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID         
    

Obtenir l’ID d’un groupe de réservation de capacité existant

Obtenez l’ID d’un groupe de réservations de capacité existant à l’aide de la commande az capacity reservation group show et affectez-le à une variable d’environnement.

CRG_ID=$(az capacity reservation group show --capacity-reservation-group <crg-name> --resource-group <resource-group-name> --query id -o tsv)

Associer un groupe de réservations de capacité existant à un nouveau cluster

Associez un groupe de réservations de capacité existant au pool de nœuds système par défaut pendant la création du cluster en exécutant la commande az aks create avec les indicateurs --crg-id et --assign-identity.

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --node-vm-size <vm-size> \
    --node-count <node-count> \
    --assign-identity $IDENTITY_ID \
    --crg-id $CRG_ID \
    --generate-ssh-keys

Associer un groupe de réservation de capacité existant à un nouveau pool de nœuds

Associez un groupe de réservations de capacité existant à un nouveau pool de nœuds utilisateur à l’aide de la az aks nodepool add commande avec l’indicateur --crg-id .

az aks nodepool add --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --crg-id $CRG_ID

Pour associer un groupe de réservations de capacité existant à un nouveau pool de nœuds système, créez le pool de nœuds avec les indicateurs --crg-id et --mode System. Pour les clusters de production, utilisez un minimum de trois nœuds pour les pools de nœuds système.

az aks nodepool add \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --name <system-node-pool-name> \
    --mode System \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --crg-id $CRG_ID

Associer un groupe de réservations de capacité existant à un pool de nœuds existant (préversion)

Associez un groupe de réservation de capacité existant à un groupe de nœuds existant à l’aide de la commande az aks nodepool update avec l’indicateur --crg-id.

  • Pour les pools de nœuds zonaux, cette opération lance une mise à jour propagée du pool de nœuds cibles. Le processus de mise à jour implique une mise en cordon progressive et une vidange de tous les nœuds, suivies d’un redémarrage pour appliquer le changement.
  • Pour les pools de nœuds utilisateur non zonaux (régionaux) durant la phase de préversion, ramenez d’abord le pool de nœuds à zéro, puis appliquez le groupe de réservation de capacité.
  • Pour les pools de nœuds système non zonaux (régionaux), ne mettez pas à l’échelle le pool de nœuds système sur zéro. Au lieu de cela, créez un nouveau pool de nœuds système associé au groupe de réservations de capacité, vérifiez que le nouveau pool de nœuds est prêt, puis supprimez l’ancien pool de nœuds système. AKS nécessite au moins un pool de nœuds système à tout moment.

Prerequisites

  • Installez la aks-preview version 20.0.0b7 de l’extension Azure CLI ou ultérieure avant d’exécuter cette commande.

  • Vérifiez que le groupe de réservations de capacité dispose d’une capacité suffisante pour votre stratégie de mise à niveau du pool de nœuds. Quand maxSurge > 0, réservez une capacité supplémentaire pour la valeur de surtension maximale. Par exemple, un pool de 10 nœuds avec maxSurge défini sur 2 peut exécuter jusqu’à 12 nœuds lors d’une mise à niveau. Cette capacité supplémentaire n’est pas nécessaire pour les déploiements utilisant uniquement maxUnavailable ni pour les scénarios régionaux de mise à l’échelle à zéro.

    az aks nodepool update --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --crg-id $CRG_ID
    

    Si la commande échoue avec LinkedAuthorizationFailed et mentionne Microsoft.Compute/capacityReservationGroups/write, accordez cette permission à l’utilisateur connecté ou au principal de service qui exécute la commande sur le groupe de réservation de capacité cible.

Étapes suivantes : Gérer les pools de nœuds dans AKS

Pour en savoir plus sur la gestion des pools de nœuds dans AKS, consultez Gérer les pools de nœuds dans Azure Kubernetes Service (AKS). Pour savoir comment ajouter, mettre à jour ou supprimer des pools de nœuds système, consultez Utiliser des pools de nœuds système dans Azure Kubernetes Service (AKS).