Uppgradera operativsystemets version för dina Windows-arbetsbelastningar i Azure Kubernetes Service (AKS)

När du uppgraderar operativsystemets version av en Windows-arbetsbelastning som körs i Azure Kubernetes Service (AKS) måste du distribuera en ny nodpool för att säkerställa att Windows-versionerna matchar på varje nodpool. I den här artikeln beskrivs stegen för att uppgradera operativsystemets version för Windows-arbetsbelastningar i AKS. Även om det här exemplet fokuserar på uppgraderingen från Windows Server 2019 till Windows Server 2022, kan samma process följas för att uppgradera från valfri Windows Server-version till en annan.

Stöd för Windows Server OS-version

När en ny version av Windows Server-operativsystemet släpps har AKS åtagit sig att stödja det och rekommenderar att du uppgraderar till den senaste versionen för att dra nytta av korrigeringar, förbättringar och nya funktioner. AKS tillhandahåller en femårig supportlivscykel för varje Windows Server-version, från och med Windows Server 2022. Under den här perioden släpper AKS en ny version som stöder en nyare version av Windows Server OS som du kan uppgradera till.

Kommentar

  • Windows Server 2019 dras tillbaka när Kubernetes version 1.32 når slutet av livslängden (EOL). Mer information finns i viktig information om AKS.
  • Windows Server 2022 dras tillbaka när Kubernetes version 1.34 når sin livslängd (EOL). Mer information finns i viktig information om AKS.

Begränsningar

Windows Server 2019 och Windows Server 2022 kan inte samexistera i samma nodpool i AKS. Du måste skapa en ny nodpool som värd för den nya operativsystemversionen. Det är viktigt att du matchar behörigheterna och åtkomsten för den tidigare nodpoolen till den nya.

Innan du börjar

  • Uppdatera -instruktionen FROM i Dockerfile till den nya os-versionen.
  • Kontrollera ditt program och kontrollera att containerappen fungerar på den nya operativsystemversionen.
  • Distribuera den verifierade containerappen i AKS till en utvecklings- eller testmiljö.
  • Anteckna det nya avbildningsnamnet eller taggen för användning i den här artikeln.

Kommentar

Information om hur du skapar en Dockerfile för Windows-arbetsbelastningar finns i Dockerfile i Windows och Optimera Windows Dockerfiles.

Lägga till en Windows Server 2022-nodpool i ett befintligt kluster

Uppdatera YAML-filen

Node Selector är det vanligaste och rekommenderade alternativet för placering av Windows-poddar på Windows-noder.

  1. Lägg till Node Selector i YAML-filen genom att lägga till följande kommentar:

          nodeSelector:
            "kubernetes.io/os": windows
    

    Anteckningen hittar alla tillgängliga Windows-noder och placerar podden på noden (efter alla andra schemaläggningsregler). När du uppgraderar från Windows Server 2019 till Windows Server 2022 måste du tillämpa placeringen på en Windows-nod och en nod som kör den senaste operativsystemversionen. För att åstadkomma detta är ett alternativ att använda en annan anteckning:

          nodeSelector:
            "kubernetes.azure.com/os-sku": Windows2022
    
  2. När du har uppdaterat nodeSelector i YAML-filen måste du också uppdatera den containeravbildning som du vill använda. Du kan hämta den här informationen från föregående steg där du skapade en ny version av det containerbaserade programmet genom att ändra -instruktionen FROM på din Dockerfile.

Kommentar

Du bör använda samma YAML-fil som du använde för att först distribuera programmet. Detta säkerställer att inga andra konfigurationsändringar förutom containeravbildningen nodeSelector och .

Tillämpa den uppdaterade YAML-filen på den befintliga arbetsbelastningen

  1. Visa noderna i klustret med hjälp av kubectl get nodes kommandot .

    kubectl get nodes -o wide
    

    Följande exempelutdata visar alla noder i klustret, inklusive den nya nodpoolen som du skapade och de befintliga nodpoolerna:

    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. Använd den uppdaterade YAML-filen på den befintliga arbetsbelastningen kubectl apply med kommandot och ange namnet på YAML-filen.

    kubectl apply -f <filename>
    

    Följande exempelutdata visar en konfigurerad status för distributionen:

    deployment.apps/sample configured
    service/sample unchanged
    

    Nu startar AKS processen med att avsluta befintliga poddar och distribuera nya poddar till Windows Server 2022-noderna.

  3. Kontrollera statusen för distributionen med hjälp av kubectl get pods kommandot .

    kubectl get pods -o wide
    

    Följande exempelutdata visar poddarna i default namnområdet:

    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>
    

Säkerhets- och autentiseringsöverväganden

Om du använder grupphanterade tjänstkonton (gMSA) måste du uppdatera konfigurationen för hanterad identitet för den nya nodpoolen. gMSA använder en hemlighet (användarkonto och lösenord) så att noden som kör Windows-podden kan autentisera containern mot Microsoft Entra-ID. För att komma åt den hemligheten i Azure Key Vault använder noden en hanterad identitet som gör att noden kan komma åt resursen. Eftersom hanterade identiteter har konfigurerats per nodpool och podden nu finns i en ny nodpool måste du uppdatera den konfigurationen. Mer information finns i Aktivera grupphanterade tjänstkonton (GMSA) för dina Windows Server-noder i ditt AkS-kluster (Azure Kubernetes Service).

Samma princip gäller för hanterade identiteter för andra poddar eller nodpooler vid åtkomst till andra Azure-resurser. Du måste uppdatera all åtkomst som hanterad identitet tillhandahåller för att återspegla den nya nodpoolen. Information om hur du visar uppdaterings- och inloggningsaktiviteter finns i Visa aktivitet för hanterad identitet.

Nästa steg

I den här artikeln har du lärt dig hur du uppgraderar operativsystemets version för Windows-arbetsbelastningar i AKS. Mer information om Windows-arbetsbelastningar i AKS finns i Distribuera ett Windows-containerprogram på Azure Kubernetes Service (AKS).