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

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.

  1. 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
    
  2. 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’instruction FROM 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

  1. 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
    
  2. 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.

  3. 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).