Aktualisieren der Betriebssystemversion für Ihre Azure Kubernetes Service (AKS)-Windows-Workloads

Beim Upgrade der Betriebssystemversion einer ausgeführten Windows-Workload in Azure Kubernetes Service (AKS) müssen Sie einen neuen Knotenpool bereitstellen, um sicherzustellen, dass die Windows-Versionen in jedem Knotenpool übereinstimmen. In diesem Artikel werden die Schritte zum Aktualisieren der Betriebssystemversion für Windows-Workloads auf AKS beschrieben. Zwar bezieht sich dieses Beispiel auf das Upgrade von Windows Server 2019 auf Windows Server 2022, derselben Prozess kann jedoch angewendet werden, um von jeder Windows Server-Version auf eine andere zu aktualisieren.

Unterstützung der Windows Server-Betriebssystemversion

Wenn eine neue Version des Windows Server-Betriebssystems veröffentlicht wird, verpflichtet sich AKS, diese zu unterstützen, und empfiehlt, ein Upgrade auf die neueste Version durchzuführen, um die Fixes, Verbesserungen und neue Funktionen nutzen zu können. AKS bietet ab Windows Server 2022 einen fünfjährigen Supportlebenszyklus für jede Windows Server-Version. In diesem Zeitraum veröffentlicht AKS eine neue Version, die eine neuere Version des Windows Server-Betriebssystems unterstützt, auf die Sie aktualisieren können.

Hinweis

  • Windows Server 2019 wird eingestellt, nachdem Kubernetes, Version 1.32, das Ende seiner Lebensdauer (EOL) erreicht hat. Weitere Informationen finden Sie in den AKS-Versionshinweisen.
  • Windows Server 2022 wird eingestellt, nachdem Kubernetes, Version 1.34, das Ende seiner Lebensdauer (EOL) erreicht hat. Weitere Informationen finden Sie in den AKS-Versionshinweisen.

Begrenzungen

Windows Server 2019 und Windows Server 2022 können nicht gemeinsam in demselben Knotenpool in AKS vorhanden sein. Sie müssen einen neuen Knotenpool erstellen, um die neue Betriebssystemversion zu hosten. Es ist wichtig, dass Sie die Berechtigungen und den Zugriff des vorherigen Knotenpools auf den neuen Pool abstimmen.

Voraussetzungen

  • Aktualisieren Sie die FROM-Anweisung in Ihrem Dockerfile auf die neue Betriebssystemversion.
  • Überprüfen Sie für Ihre Anwendung, ob die Container-App unter der neuen Betriebssystemversion funktioniert.
  • Stellen Sie die überprüfte Container-App in AKS in einer Entwicklungs- oder Testumgebung bereit.
  • Notieren Sie sich den neuen Imagenamen oder das Tag für die Verwendung in diesem Artikel.

Hinweis

Weitere Informationen zum Erstellen eines Dockerfile für Windows-Workloads finden Sie unter Dockerfile unter Windows und Optimieren von Windows-Dockerfile-Dateien.

Hinzufügen eines Windows Server 2022-Knotenpools zu einem vorhandenen Cluster

Aktualisieren der YAML-Datei

Die Knotenauswahl ist die am häufigsten verwendete und empfohlene Option für die Platzierung von Windows-Pods auf Windows-Knoten.

  1. Fügen Sie Ihrer YAML-Datei den Knotenselektor hinzu, indem Sie die folgende Anmerkung hinzufügen:

          nodeSelector:
            "kubernetes.io/os": windows
    

    Die Anmerkung findet alle verfügbaren Windows-Knoten und platziert den Pod auf diesem Knoten (gemäß allen anderen Planungsregeln). Beim Upgrade von Windows Server 2019 auf Windows Server 2022 müssen Sie die Platzierung auf einem Windows-Knoten und auf einem Knoten erzwingen, der die neueste Betriebssystemversion ausführt. Um dies zu erreichen, besteht eine Option in der Verwendung einer anderen Anmerkung:

          nodeSelector:
            "kubernetes.azure.com/os-sku": Windows2022
    
  2. Nachdem Sie den nodeSelector in der YAML-Datei aktualisiert haben, müssen Sie auch das zu verwendende Containerimage aktualisieren. Sie können diese Informationen aus dem vorherigen Schritt abrufen, in dem Sie eine neue Version der containerisierten Anwendung erstellt haben. Ändern Sie dazu die FROM-Anweisung in Ihrer Dockerfile-Datei.

Hinweis

Sie sollten dieselbe YAML-Datei verwenden, die Sie für die anfängliche Bereitstellung der Anwendung verwendet haben. Dadurch wird sichergestellt, dass sich außer dem Containerimage und nodeSelector keine weiteren Konfigurationsänderungen ändern.

Anwenden der aktualisierten YAML-Datei auf die vorhandene Workload

  1. Zeigen Sie die Knoten in Ihrem Cluster mit dem Befehl kubectl get nodes an.

    kubectl get nodes -o wide
    

    Die folgende Beispielausgabe zeigt alle Knoten im Cluster, einschließlich des neuen Knotenpools, den Sie erstellt haben, und den vorhandenen Knotenpools:

    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. Wenden Sie die aktualisierte YAML-Datei mithilfe des Befehls kubectl apply auf die vorhandene Workload an, und geben Sie den Namen der YAML-Datei an.

    kubectl apply -f <filename>
    

    Die folgende Beispielausgabe zeigt einen konfigurierten Status für die Bereitstellung:

    deployment.apps/sample configured
    service/sample unchanged
    

    An diesem Punkt startet AKS den Vorgang, die vorhandenen Pods zu beenden und neue Pods auf den Windows Server 2022-Knoten bereitzustellen.

  3. Überprüfen Sie mit dem Befehl kubectl get pods den Status der Bereitstellung.

    kubectl get pods -o wide
    

    Die folgende Beispielausgabe zeigt die Pods im default-Namespace:

    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>
    

Überlegungen zu Sicherheit und Authentifizierung

Wenn Sie gruppenverwaltete Dienstkonten (gMSAs, Group Managed Service Accounts) nutzen, müssen Sie die Konfiguration für verwaltete Identitäten für den neuen Knotenpool aktualisieren. gMSA verwendet ein Geheimnis (Benutzerkonto und Kennwort), damit der Knoten, auf dem der Windows-Pod ausgeführt wird, den Container für Microsoft Entra ID authentifizieren kann. Um auf dieses Geheimnis in Azure Key Vault zuzugreifen, verwendet der Knoten eine verwaltete Identität, mit der der Knoten auf die Ressource zugreifen kann. Da verwaltete Identitäten pro Knotenpool konfiguriert werden und sich der Pod jetzt in einem neuen Knotenpool befindet, müssen Sie diese Konfiguration aktualisieren. Weitere Informationen finden Sie unter Aktivieren von gruppenverwalteten Dienstkonten (GMSAs) für Ihre Windows Server-Knoten auf Ihrem AKS-Cluster (Azure Kubernetes Service).

Dasselbe Prinzip gilt für verwaltete Identitäten, die für einen anderen Pod oder Knotenpool beim Zugriff auf andere Azure-Ressourcen verwendet werden. Sie müssen alle Zugriffsrechte, die verwaltete Identität Identity bereitstellt, aktualisieren, um den neuen Knotenpool zu berücksichtigen. Informationen zum Anzeigen von Update- und Anmeldeaktivitäten finden Sie unter Anzeigen von Update- und Anmeldeaktivitäten für verwaltete Identitäten.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie die Betriebssystemversion für Windows-Workloads auf AKS aktualisiert wird. Weitere Informationen zu Windows-Workloads in AKS finden Sie unter Bereitstellen einer Windows-Containeranwendung auf Azure Kubernetes Service (AKS).