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, 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.

Pour mettre à niveau un cluster AKS, vous avez besoin du rôle contributeur Azure Kubernetes Service ou des autorisations équivalentes.

Avant de procéder à la mise à niveau, passez en revue les notes de publication AKS pour connaître les changements cassants et les API déconseillées. Validez également les budgets de perturbation des pods (PDB) de votre charge de travail, le quota de calcul disponible et la capacité en adresses IP du sous-réseau pour les nœuds supplémentaires. Pour plus d’informations, consultez les options de mise à niveau et les recommandations pour les clusters AKS.

Obtenir les versions de cluster disponibles à l’aide de la Azure CLI

Avant de procéder à la mise à niveau, vérifiez quelles versions Kubernetes sont disponibles pour votre cluster à l’aide de la az aks get-upgrades commande.

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

L’exemple de sortie suivant montre la version actuelle d’un cluster et répertorie les versions plus récentes sous upgrades:

  {
    "agentPoolProfiles": null,
    "controlPlaneProfile": {
      "kubernetesVersion": "1.33.7",
      ...
      "upgrades": [
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.10"
        },
        {
          "isPreview": null,
          "kubernetesVersion": "1.34.9"
        }
      ]
    },
    ...
  }

Obtenir les versions de cluster disponibles à l’aide de Azure PowerShell

  1. Avant de procéder à la mise à niveau, vérifiez la version et la région actuelles de Kubernetes de votre cluster à l’aide de l’applet de Get-AzAksCluster commande.

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
      Select-Object -Property Name, CurrentKubernetesVersion, Location
    

    L’exemple de sortie suivant montre la version et l’emplacement actuels du cluster :

    Name              CurrentKubernetesVersion      Location
    ----              ------------------------      --------
    myAKSCluster      1.33.7                        westus2
    
  2. Répertoriez les versions kubernetes disponibles dans la région où réside votre cluster à l’aide de l’applet Get-AzAksVersion de commande.

    Get-AzAksVersion -Location westus2 | Where-Object OrchestratorVersion
    

    L’exemple de sortie suivant montre les versions régionales sous OrchestratorVersion:

    Default     IsPreview     OrchestratorType     OrchestratorVersion
    -------     ---------     ----------------     -------------------
                              Kubernetes               1.34.10
                              Kubernetes               1.34.9
    True                      Kubernetes               1.33.7
    ...
    

    Pour identifier les cibles de mise à niveau potentielles, comparez les versions plus récentes que la version actuelle de votre cluster avec les règles de mise à niveau de version Kubernetes. Cette applet de commande répertorie la disponibilité régionale et ne valide pas le chemin de mise à niveau d’un cluster spécifique.

Obtenir les versions de cluster disponibles à l’aide du portail Azure

  1. Connectez-vous au portail Azure.

  2. Accédez à votre ressource de cluster AKS.

  3. Dans le menu du service, sous Paramètres, sélectionnez Mises à niveau.

  4. Par version de Kubernetes, sélectionnez Mettre à niveau la version.

    Capture d’écran de l’option Mettre à niveau la version dans le portail Azure.

  5. Dans la page Mettre à niveau la version de Kubernetes , sélectionnez la liste déroulante Version de Kubernetes pour afficher les versions de Kubernetes disponibles pour la mise à niveau.

    Capture d’écran de l’écran de mise à niveau avec les versions de mise à niveau disponibles.

Si aucune mise à niveau n’est disponible, votre cluster peut déjà se trouver sur la dernière version disponible ou la version du cluster peut se trouver en dehors de la fenêtre de support. Si la version n’est pas prise en charge et qu’AKS n’offre pas de mise à niveau de récupération, créez un cluster avec une version Kubernetes prise en charge et migrez vos charges de travail. Pour plus d’informations, consultez les stratégies de prise en charge AKS pour les versions de Kubernetes.

Processus de mise à niveau du 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 simultanément autant de nœuds que le nombre de nœuds de tampon spécifié.
  • Lorsqu'il est entièrement drainé, l'ancien nœud est reconfiguré pour recevoir la nouvelle version et devient le nœud 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. Configurez les mises à niveau automatiques de cluster pour aider à maintenir votre cluster sur une version prise en charge de Kubernetes.

Mettre à niveau manuellement le cluster à l’aide du Azure CLI

Mettez à niveau votre cluster à l’aide de la az aks upgrade commande. Cet exemple met à niveau le cluster vers la version 1.34.10 :

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version 1.34.10

Remarque

Les clusters non LTS pris en charge doivent être mis à niveau séquentiellement par version mineure. Par exemple, pour effectuer une mise à niveau de la version 1.33.x vers la version 1.35.x, commencez par effectuer une mise à niveau vers la version 1.34.x. Un cluster LTS peut ignorer les versions mineures lors du passage à une version LTS supérieure proposée par AKS si la mise à niveau répond aux exigences et aux vérifications de validation des versions. Pour plus d’informations, consultez les règles de mise à niveau des versions de Kubernetes.

L’exemple de sortie suivant montre le résultat de la mise à niveau. La kubernetesVersion valeur correspond maintenant à la version spécifiée dans l’exemple de commande :

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

Mettre à niveau manuellement un cluster à l’aide de Azure PowerShell

Mettez à niveau votre cluster à l’aide de l’applet de commande Set-AzAksCluster. Cet exemple met à niveau le cluster vers la version 1.34.10 :

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -KubernetesVersion 1.34.10

Remarque

Les clusters non LTS pris en charge doivent être mis à niveau séquentiellement par version mineure. Par exemple, pour effectuer une mise à niveau de la version 1.33.x vers la version 1.35.x, commencez par effectuer une mise à niveau vers la version 1.34.x. Un cluster LTS peut ignorer les versions mineures lors du passage à une version LTS supérieure proposée par AKS si la mise à niveau répond aux exigences et aux vérifications de validation des versions. Pour plus d’informations, consultez les règles de mise à niveau des versions de Kubernetes.

L’exemple de sortie suivant montre le résultat de la mise à niveau. La KubernetesVersion valeur correspond maintenant à la version spécifiée dans l’exemple d’applet de commande :

...
ProvisioningState        : Succeeded
MaxAgentPools            : 100
KubernetesVersion        : 1.34.10
CurrentKubernetesVersion : 1.34.10
...
ResourceGroupName        : myResourceGroup
Name                     : myAKSCluster
Type                     : Microsoft.ContainerService/ManagedClusters
Location                 : westus2
Tags                     :

Mettre à niveau manuellement le cluster à l’aide du portail Azure

  1. Dans le portail Azure, naviguez vers la ressource de votre cluster AKS.

  2. Dans le menu du service, sous Paramètres, sélectionnez Mises à niveau.

  3. Par version de Kubernetes, sélectionnez Mettre à niveau la version.

    Capture d’écran de l’option Mettre à niveau la version dans le portail Azure.

  4. Dans la page Mettre à niveau la version de Kubernetes , sélectionnez la liste déroulante Version de Kubernetes pour afficher les versions de Kubernetes disponibles pour la mise à niveau.

    Capture d’écran de l’écran de mise à niveau avec les versions de mise à niveau disponibles.

  5. Sélectionnez la version de Kubernetes vers laquelle vous souhaitez effectuer la mise à niveau, puis sélectionnez Enregistrer.

La durée de la mise à niveau dépend de facteurs tels que le nombre de nœuds, les paramètres de surge, les contraintes de perturbation des charges de travail, le délai d’expiration du drain et la durée de stabilisation des nœuds. Le délai d’expiration du drainage par défaut est de 30 minutes par nœud et peut être configuré de cinq minutes à 24 heures. La durée de trempage du nœud peut ajouter de 0 à 30 minutes par nœud. Pour plus d’informations, consultez Personnaliser l’augmentation du pool de nœuds et les paramètres non disponibles.

Configurer des mises à niveau automatiques de cluster à l’aide de l’Azure CLI

Configurer des mises à niveau automatiques de cluster à l’aide de Azure PowerShell

Configurer des mises à niveau automatiques de cluster à l’aide du portail Azure

Les clusters automatiques AKS utilisent le stable canal et vous n’avez pas besoin de configurer un canal. Pour les clusters AKS Standard, sélectionnez un canal en fonction de votre stratégie de version. Les canaux stable et rapid font passer Kubernetes à des versions mineures ultérieures et aident à maintenir le cluster dans la plage de versions prises en charge. Le patch canal installe uniquement les correctifs pour la version mineure actuelle et n’avance pas le cluster vers une version mineure plus récente.

Sur un cluster AKS Standard, définissez le canal de mise à niveau automatique à l’aide de la az aks update commande. L’exemple suivant utilise le stable canal :

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

Sur un cluster AKS Standard, définissez le canal de mise à niveau automatique à l’aide du cmdlet Set-AzAksCluster. L’exemple suivant utilise le Stable canal :

Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -AutoUpgradeChannel Stable
  1. Dans le portail Azure, naviguez vers la ressource de votre cluster AKS.

  2. Dans le menu du service, sous Paramètres, sélectionnez Mises à niveau.

  3. Par version de Kubernetes, sélectionnez Mettre à niveau la version.

    Capture d’écran de l’option Mettre à niveau la version dans le portail Azure.

  4. Pour un cluster AKS Standard, sur la page Mettre à niveau la version de Kubernetes, sélectionnez la liste déroulante Mise à niveau automatique, sélectionnez Activée avec la version stable, puis sélectionnez Enregistrer.

    Capture d’écran de la page Mettre à niveau la version de Kubernetes montrant les options de canal de mise à niveau automatique.

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

Mise à niveau des images de nœud

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 Mise à niveau des images des nœuds dans 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. Par défaut, AKS accorde 30 minutes pour drainer un nœud. Vous pouvez configurer le délai d’expiration du drainage de cinq minutes à 24 heures.
  • Update (Mise à jour) : Réussite ou échec de la mise à jour d’un nœud.
  • Delete (Suppression) : supprimer un nœud de surtension.

Utilisez la kubectl get commande avec un sélecteur de champ pour afficher les événements de mise à niveau AKS dans l’espace de noms par défaut.

kubectl get events --field-selector source=upgrader

L’exemple de sortie suivant montre certains des événements précédents répertoriés lors d’une mise à niveau :

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

Valider une mise à niveau à l’aide de la Azure CLI

Vérifiez que la mise à niveau a réussi à l’aide de la az aks show commande.

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

L’exemple de sortie suivant montre que le cluster AKS exécute la version de Kubernetes cible :

Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
myAKSCluster  westus2      myResourceGroup  1.34.10              1.34.10                   Succeeded            myaksclust-myresourcegroup-12ab34-cd56e7fg.hcp.westus2.azmk8s.io

Valider une mise à niveau à l’aide de Azure PowerShell

Vérifiez que la mise à niveau a réussi à l’aide de l’applet de commande Get-AzAksCluster.

Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster |
  Select-Object -Property Name, Location, KubernetesVersion, ProvisioningState

L’exemple de sortie suivant montre que le cluster AKS exécute la version de Kubernetes cible :

Name             Location     KubernetesVersion     ProvisioningState
----             --------     -----------------     -----------------
myAKSCluster     westus2       1.34.10               Succeeded

Valider une mise à niveau à l’aide du portail Azure

  1. Dans le portail Azure, naviguez vers la ressource de votre cluster AKS.
  2. Dans la page Vue d’ensemble , sous Essentials, vérifiez la version de Kubernetes pour confirmer que la mise à niveau a réussi.

Supprimer le cluster à l’aide du Azure CLI

Supprimer le cluster à l’aide de Azure PowerShell

Supprimer le cluster à l’aide du portail Azure

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 de conteneur et toutes les ressources associées à l’aide de la az group delete commande.

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

Supprimez le groupe de ressources, le service de conteneur ainsi que toutes les ressources associées à l’aide de l’applet de commande Remove-AzResourceGroup.

Remove-AzResourceGroup -Name myResourceGroup
  1. Dans le portail Azure, naviguez vers la ressource de votre cluster AKS.
  2. Dans la page Vue d’ensemble, sélectionnez Supprimer.
  3. Dans la page de confirmation Supprimer le cluster, sélectionnez Supprimer.

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.