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 surpatch
.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.
Azure Kubernetes Service