Mettre à niveau la version du système d’exploitation pour vos charges de travail Windows Azure Kubernetes Service (AKS)
Quand vous mettez à niveau la version de système d’exploitation d’une charge de travail Windows en cours d’exécution sur Azure Kubernetes Service (AKS), vous devez déployer un nouveau pool de nœuds pour que les versions de Windows correspondent sur chaque pool de nœuds. Cet article décrit les étapes de mise à niveau de la version de système d’exploitation des charges de travail Windows sur AKS. Bien que cet exemple se concentre sur la mise à niveau de Windows Server 2019 vers Windows Server 2022, le même processus peut être suivi pour effectuer la mise à niveau de n’importe quelle version de Windows Server vers une autre.
Prise en charge de la version du système d’exploitation Windows Server
Lorsqu’une nouvelle version du système d’exploitation Windows Server est mise en production, AKS s’engage à la prendre en charge et vous recommande de procéder à une mise à niveau vers la dernière version pour tirer parti des correctifs, améliorations et nouvelles fonctionnalités. AKS offre un cycle de vie de support de cinq ans pour chaque version de Windows Server, à compter de Windows Server 2022. Pendant cette période, AKS publiera une nouvelle version qui prend en charge une version plus récente du système d’exploitation Windows Server vers laquelle vous pourrez procéder à la mise à niveau.
Remarque
- Windows Server 2019 sera mis hors service lorsque Kubernetes version 1.32 atteindra la fin de vie (EOL). Pour plus d’informations, consultez les notes de publication AKS.
- Windows Server 2022 sera mis hors service lorsque Kubernetes version 1.34 atteindra la fin de vie (EOL). Pour plus d’informations, consultez les notes de publication AKS.
Limites
Windows Server 2019 et Windows Server 2022 ne peuvent pas coexister dans le même pool de nœuds sur AKS. Vous devez créer un pool de nœuds pour héberger la nouvelle version de système d’exploitation. Il est important de faire correspondre les autorisations et l’accès du pool de nœuds précédents au nouveau.
Avant de commencer
- Mettez à jour l’instruction
FROM
dans votre Dockerfile vers la nouvelle version de système d’exploitation. - Passez en revue votre application et vérifiez que l’application conteneur fonctionne sur la nouvelle version de système d’exploitation.
- Déployez l’application conteneur vérifiée sur AKS dans un environnement de développement ou de test.
- Notez le nouveau nom d’image ou la nouvelle étiquette utilisés dans cet article.
Remarque
Pour savoir comment générer un Dockerfile pour les charges de travail Windows, consultez Dockerfile sur Windows et Optimiser les fichiers Dockerfile Windows.
Ajouter un pool de nœuds Windows Server 2022 à un cluster existant
- Ajouter un pool de nœuds Windows Server 2022 à un cluster existant.
Mettre à jour le fichier YAML
Le sélecteur de nœuds est l’option recommandée et la plus courante pour le placement des pods Windows sur les nœuds Windows.
Ajoutez le sélecteur de nœud à votre fichier YAML en ajoutant l’annotation suivante :
nodeSelector: "kubernetes.io/os": windows
L’annotation recherche un nœud Windows disponible et place le pod sur ce nœud (en suivant toutes les autres règles de planification). Quand vous passez de Windows Server 2019 à Windows Server 2022, vous devez appliquer le placement sur un nœud Windows et sur un nœud exécutant la dernière version de système d’exploitation. Pour ce faire, une option consiste à utiliser une autre annotation :
nodeSelector: "kubernetes.azure.com/os-sku": Windows2022
Une fois que vous avez mis à jour
nodeSelector
dans le fichier YAML, vous devez également mettre à jour l’image conteneur à utiliser. Vous pouvez obtenir ces informations à l’étape précédente où vous avez créé une version de l’application conteneurisée en changeant l’instructionFROM
dans votre Dockerfile.
Remarque
Vous devez utiliser le même fichier YAML que celui que vous avez utilisé pour déployer initialement l’application. Cela garantit qu’aucune autre configuration ne change en dehors de nodeSelector
et de l’image conteneur.
Appliquer le fichier YAML mis à jour à la charge de travail existante
Affichez les nœuds de votre cluster en utilisant la commande
kubectl get nodes
.kubectl get nodes -o wide
L’exemple de sortie suivant montre tous les nœuds du cluster, y compris le nouveau pool de nœuds que vous avez créé et les pools de nœuds existants :
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-agentpool-18877473-vmss000000 Ready agent 5h40m v1.23.8 10.240.0.4 <none> Ubuntu 18.04.6 LTS 5.4.0-1085-azure containerd://1.5.11+azure-2 akspoolws000000 Ready agent 3h15m v1.23.8 10.240.0.208 <none> Windows Server 2022 Datacenter 10.0.20348.825 containerd://1.6.6+azure akspoolws000001 Ready agent 3h17m v1.23.8 10.240.0.239 <none> Windows Server 2022 Datacenter 10.0.20348.825 containerd://1.6.6+azure akspoolws000002 Ready agent 3h17m v1.23.8 10.240.1.14 <none> Windows Server 2022 Datacenter 10.0.20348.825 containerd://1.6.6+azure akswspool000000 Ready agent 5h37m v1.23.8 10.240.0.115 <none> Windows Server 2019 Datacenter 10.0.17763.3165 containerd://1.6.6+azure akswspool000001 Ready agent 5h37m v1.23.8 10.240.0.146 <none> Windows Server 2019 Datacenter 10.0.17763.3165 containerd://1.6.6+azure akswspool000002 Ready agent 5h37m v1.23.8 10.240.0.177 <none> Windows Server 2019 Datacenter 10.0.17763.3165 containerd://1.6.6+azure
Appliquez le fichier YAML mis à jour à la charge de travail existante en utilisant la commande
kubectl apply
et spécifiez le nom du fichier YAML.kubectl apply -f <filename>
L’exemple de sortie suivant montre un état configuré pour le déploiement :
deployment.apps/sample configured service/sample unchanged
À ce stade, AKS démarre le processus de fin des pods existants et de déploiement de nouveaux pods sur les nœuds Windows Server 2022.
Vérifiez l’état du déploiement avec la commande
kubectl get pods
.kubectl get pods -o wide
L’exemple de sortie suivant montre les pods dans l’espace de noms
default
:NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sample-7794bfcc4c-k62cq 1/1 Running 0 2m49s 10.240.0.238 akspoolws000000 <none> <none> sample-7794bfcc4c-rswq9 1/1 Running 0 2m49s 10.240.1.10 akspoolws000001 <none> <none> sample-7794bfcc4c-sh78c 1/1 Running 0 2m49s 10.240.0.228 akspoolws000000 <none> <none>
Considérations relatives à la sécurité et l’authentification
Si vous utilisez des comptes de service administrés de groupe (gMSA), vous devez mettre à jour la configuration de l’identité managée du nouveau pool de nœuds. gMSA utilise un secret (compte d’utilisateur et mot de passe) pour que le nœud qui exécute le pod Windows puisse authentifier le conteneur sur Microsoft Entra ID. Pour accéder à ce secret sur Azure Key Vault, le nœud utilise une identité managée qui permet au nœud d’accéder à la ressource. Étant donné que les identités managées sont configurées par pool de nœuds et que le pod réside désormais sur un nouveau pool de nœuds, vous devez mettre à jour cette configuration. Pour plus d’informations, consultez Activer les comptes de services gérés de groupe (gMSA) pour vos nœuds Windows Server sur votre cluster Azure Kubernetes Service (AKS).
Le même principe s’applique aux identités managées utilisées pour tout autre pod ou pool de nœuds en cas d’accès à d’autres ressources Azure. Vous devez mettre à jour tout accès fourni par l’identité managée pour refléter le nouveau pool de nœuds. Pour afficher les activités de mise à jour et de connexion, consultez Comment afficher l’activité de l’identité managée.
Étapes suivantes
Dans cet article, vous avez appris à mettre à niveau la version de système d’exploitation des charges de travail Windows sur AKS. Pour en savoir plus sur les charges de travail Windows sur AKS, consultez Déployer une application conteneur Windows sur Azure Kubernetes Service (AKS).
Azure Kubernetes Service