Partager via


Tutoriel : mettre à niveau un cluster Azure Kubernetes Service (AKS)

Au cours du cycle de vie des applications et des clusters, vous pouvez vouloir effectuer une mise à niveau vers la dernière version disponible de Kubernetes. Vous pouvez mettre à niveau votre cluster Azure Kubernetes Service (AKS) à l'aide de l’interface de ligne de commande Azure (Azure CLI), d'Azure PowerShell ou du portail Azure.

Dans ce tutoriel, la partie sept sur sept, vous mettez à niveau un cluster AKS. Vous allez apprendre à effectuer les actions suivantes :

  • Identifier les versions Kubernetes actuelles et disponibles.
  • Mettre à niveau vos nœuds Kubernetes.
  • Valider une mise à niveau réussie.

Avant de commencer

Dans les didacticiels précédents, vous avez empaqueté une application dans une image conteneur, puis chargé l’image conteneur dans Azure Container Registry (ACR). Vous avez également créé un cluster AKS et déployé une application dans celui-ci. Si vous n’avez pas effectué ces étapes et voulez suivre cette procédure, commencez par Tutoriel 1 : préparer une application pour AKS.

Si vous utilisez Azure CLI, ce tutoriel nécessite Azure CLI version 2.34.1 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Si vous utilisez Azure PowerShell, ce tutoriel nécessite Azure PowerShell version 5.9.0 ou ultérieure. Exécutez Get-InstalledModule -Name Az pour trouver la version. Si vous avez besoin de procéder à une installation ou à une mise à niveau, consultez Installer Azure PowerShell.

Obtenir les versions de cluster disponibles

  • Avant d’effectuer la mise à niveau, recherchez les publications de Kubernetes disponibles pour votre cluster au moyen de la commande az aks get-upgrades.

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

    L’exemple de sortie suivant montre que la version actuelle est 1.28.9 et répertorie les versions disponibles sous upgrades :

      {
        "agentPoolProfiles": null,
        "controlPlaneProfile": {
          "kubernetesVersion": "1.28.9",
          ...
          "upgrades": [
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.4"
            },
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.2"
            }
          ]
        },
        ...
      }
    

Mettre à niveau un cluster AKS

Les nœuds AKS sont soigneusement coordonnés et purgés afin de limiter les perturbations potentielles pour les applications en cours d’exécution. Au cours de ce processus, AKS effectue les étapes suivantes :

  • Il ajoute un nouveau nœud de tampon (ou autant de nœuds que ceux configurés dans max-surge) au cluster qui exécute la version de Kubernetes spécifiée.
  • Il effectue l’isolation et le drainage de l’un des anciens nœuds afin de limiter la perturbation des applications en cours d’exécution. Si vous utilisez max surge, il isole et draine autant de nœuds que le nombre de nœuds de tampon spécifiés.
  • Lorsque l’ancien nœud est entièrement drainé, il est réinitialisé pour recevoir la nouvelle version et devient le nœud de mémoire tampon pour le nœud suivant à mettre à niveau.
  • Ce processus se répète jusqu’à ce que tous les nœuds du cluster soient mis à niveau.
  • À la fin du processus, le dernier nœud tampon est supprimé, ce qui a pour effet de maintenir le nombre de nœuds d’agent existants et l’équilibre de la zone.

Remarque

Si aucun patch n’est spécifié, le cluster est automatiquement mis à niveau vers le dernier patch GA de la version mineure spécifiée. Par exemple, la définition de --kubernetes-version sur 1.28 entraîne la mise à niveau du cluster vers 1.28.9.

Pour plus d’informations, consultez Mises à niveau des versions mineures de Kubernetes prises en charge dans AKS.

Vous pouvez mettre à niveau manuellement votre cluster ou configurer des mises à niveau automatiques de cluster. Nous vous recommandons de configurer des mises à niveau automatiques de cluster pour vous assurer que votre cluster exécute toujours la dernière version de Kubernetes.

Mettre à niveau manuellement le cluster

  • Mettez à niveau votre cluster à l’aide de la commande az aks upgrade.

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version KUBERNETES_VERSION
    
  • Vous serez invité à confirmer l’opération de mise à niveau et que vous souhaitez mettre à niveau le plan de contrôle et tous les pools de nœuds vers la version sélectionnée de Kubernetes :

     Are you sure you want to perform this operation? (y/N): y
    Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
    

    Remarque

    Vous ne pouvez mettre à niveau qu’une version mineure à la fois. Par exemple, vous pouvez effectuer une mise à niveau de la version 1.14.x vers la version 1.15.x, mais pas de la version 1.14.x directement vers la version 1.16.x. Pour effectuer une mise à niveau de 1.14.x vers 1.16.x, vous devez commencer par mettre à niveau la version 1.14.x vers la version 1.15.x, puis mettez à niveau la version 1.15.x vers la version 1.16.x.

    L’exemple de sortie suivant montre le résultat de la mise à niveau vers la version 1.29.2. Notez que la kubernetesVersion affiche à présent 1.29.2 :

    {
      ...
      "agentPoolProfiles": [
        {
          ...
          "count": 3,
          "currentOrchestratorVersion": "1.29.2",
          "maxPods": 110,
          "name": "nodepool1",
          "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202405.27.0",
          "orchestratorVersion": "1.29.2",
          "osType": "Linux",
          "upgradeSettings": {
            "drainTimeoutInMinutes": null,
            "maxSurge": "10%",
            "nodeSoakDurationInMinutes": null,
            "undrainableNodeBehavior": null
          },
          "vmSize": "Standard_DS2_v2",
          ...
        }
      ],
      ...
      "currentKubernetesVersion": "1.29.2",
      "dnsPrefix": "myAKSClust-myResourceGroup-19da35",
      "enableRbac": false,
      "fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io",
      "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
      "kubernetesVersion": "1.29.2",
      "location": "eastus",
      "name": "myAKSCluster",
      "type": "Microsoft.ContainerService/ManagedClusters"
      ...
    }
    

Configurer des mises à niveau automatiques de cluster

  • Définissez un canal de mise à niveau automatique sur votre cluster en utilisant la commande az aks update avec le paramètre --auto-upgrade-channel défini sur patch.

    az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel patch
    

Pour plus d’informations, consultez Mettre à niveau automatiquement un cluster Azure Kubernetes Service (AKS).

Mettre à niveau des images de nœud AKS

AKS fournit régulièrement de nouvelles images de nœud. Les images de nœud Linux sont mises à jour chaque semaine et les images de nœud Windows le sont chaque mois. Nous vous recommandons de mettre à niveau fréquemment vos images de nœud pour utiliser les dernières fonctionnalités et mises à jour de sécurité AKS. Pour plus d’informations, consultez Mettre à niveau des images de nœud Azure Kubernetes Service (AKS). Pour configurer les mises à niveau automatiques d’images de nœud, consultez Mettre à niveau automatiquement les images de système d’exploitation de nœud de cluster Azure Kubernetes Service (AKS).

Afficher les événements de mise à niveau

Remarque

Lorsque vous mettez votre cluster à niveau, les événements Kubernetes suivants peuvent se produire sur les nœuds :

  • Surge (Surtension) : création d’un nœud de surtension.
  • Drain(Vidage) : supprime les pods du nœud. Chaque pod dispose d’un délai de cinq minutes pour terminer l’expulsion.
  • Update (Mise à jour) : Réussite ou échec de la mise à jour d’un nœud.
  • Delete (Suppression) : supprimer un nœud de surtension.
  • Affichez les événements de mise à niveau dans les espaces de noms par défaut à l’aide de la commande kubectl get events

    kubectl get events --field-selector source=upgrader
    

    L’exemple de sortie suivant montre certains des événements ci-dessus listés pendant une mise à niveau :

    LAST SEEN   TYPE      REASON    OBJECT                                   MESSAGE
    ...
    5m          Normal    Drain     node/aks-nodepool1-96663640-vmss000000   Draining node: aks-nodepool1-96663640-vmss000000
    5m          Normal    Upgrade   node/aks-nodepool1-96663640-vmss000000   Deleting node aks-nodepool1-96663640-vmss000000 from API server
    4m          Normal    Upgrade   node/aks-nodepool1-96663640-vmss000000   Successfully reimaged node: aks-nodepool1-96663640-vmss000000
    4m          Normal    Upgrade   node/aks-nodepool1-96663640-vmss000000   Successfully upgraded node: aks-nodepool1-96663640-vmss000000
    4m          Normal    Drain     node/aks-nodepool1-96663640-vmss000000   Draining node: aks-nodepool1-96663640-vmss000000
    ...
    

Valider une mise à niveau

  • Vérifiez si la mise à niveau a réussi avec la commande az aks show.

    az aks show --resource-group myResourceGroup --name myAKSCluster --output table
    

    L’exemple de sortie suivant indique que le cluster AKS exécute KubernetesVersion 1.27.3 :

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.29.2               1.29.2                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

Supprimer le cluster

Comme ce tutoriel est la dernière partie de la série, vous pouvez supprimer votre cluster AKS pour éviter les frais Azure.

  • Supprimez le groupe de ressources, le service conteneur et toutes les ressources associées à l’aide de la commande az group delete.

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

Remarque

Lorsque vous supprimez le cluster, le principal de service Microsoft Entra utilisé par le cluster AKS n’est pas supprimé. Pour obtenir des instructions sur la façon de supprimer le principal de service, consultez Considérations et suppression du principal de service AKS. Si vous avez utilisé une identité managée, l’identité est managée par la plateforme et ne vous demande pas de provisionner ou de permuter des secrets.

Étapes suivantes

Dans ce tutoriel, vous avez mis à niveau Kubernetes dans un cluster AKS. Vous avez appris à :

  • Identifier les versions Kubernetes actuelles et disponibles.
  • Mettre à niveau vos nœuds Kubernetes.
  • Valider une mise à niveau réussie.

Pour plus d’informations sur AKS, consultez la section Vue d’ensemble d’AKS. Pour obtenir des conseils sur la création de solutions complètes avec AKS, consultez l’article Conseils pour les solutions AKS.