Aggiornare la versione del sistema operativo per i carichi di lavoro Windows del servizio Azure Kubernetes

Quando si aggiorna la versione del sistema operativo di un carico di lavoro Windows in esecuzione in Servizio Azure Kubernetes (AKS), usare uno dei metodi di migrazione seguenti:

  • Migrazione sul posto: aggiornare lo SKU del sistema operativo in un pool di nodi esistente per eseguire la migrazione da Windows Server 2022 a Windows Server 2025.
  • Migrazione manuale: creare un nuovo pool di nodi con la versione del sistema operativo Windows Server desiderata, spostare i carichi di lavoro nel nuovo pool di nodi ed eliminare il pool di nodi precedente.

Quando viene rilasciata una nuova versione del sistema operativo Windows Server, AKS si impegna a supportarla. È consigliabile eseguire l'aggiornamento alla versione più recente per sfruttare le correzioni, i miglioramenti e le nuove funzionalità. Il servizio Azure Kubernetes offre un ciclo di vita del supporto di cinque anni per ogni versione di Windows Server, a partire da Windows Server 2022. Durante questo periodo, AKS rilascia una nuova versione che supporta una versione più recente del sistema operativo Windows Server per l'aggiornamento. Al termine del ciclo di vita di cinque anni, è necessario eseguire la migrazione dei carichi di lavoro alle versioni supportate più recenti per garantire la compatibilità, gli aggiornamenti della sicurezza e il supporto continuo del servizio Azure Kubernetes.

Importante

A partire dal 30 giugno 2028, Servizio Azure Kubernetes (AKS) non supporta più pool di nodi Windows Server 2022. Windows Server 2022 non è supportato in Kubernetes versione 1.37 e successive. A partire dal 30 giugno 2029, AKS rimuoverà tutte le immagini dei nodi esistenti per Windows Server 2022, il che significa che le operazioni di ridimensionamento avranno esito negativo. Per altre informazioni sul ritiro, vedere il problema sul ritiro di GitHub e l'annuncio di ritiro degli aggiornamenti di Azure. Per rimanere aggiornati sugli annunci e gli aggiornamenti, vedere le note sulla versione di AKS.

Le limitazioni seguenti si applicano alla migrazione della versione del sistema operativo Windows Server:

  • L'aggiornamento del pool di nodi per eseguire la migrazione da una versione Windows Server a un'altra è supportato solo per la migrazione da Windows Server 2022 a Windows Server 2025 usando l'estensione aks-preview interfaccia della riga di comando di Azure versione 22.0.0b6 o successiva. Per tutte le altre migrazioni delle versioni del sistema operativo Windows Server, creare un nuovo pool di nodi.
  • Versioni di Windows Server diverse non possono coesistere nello stesso pool di nodi nel servizio Azure Kubernetes. Se si crea un nuovo pool di nodi per ospitare la nuova versione del sistema operativo, assicurarsi di associare le autorizzazioni e l'accesso del pool di nodi precedente a quello nuovo.
  • Windows Server 2025 è supportato a partire dalla versione 1.32.0 di Kubernetes.

Prerequisites

  • Aggiornare l'istruzione FROM nel Dockerfile alla nuova versione del sistema operativo.
  • Controllare l'applicazione e verificare che l'app contenitore funzioni nella nuova versione del sistema operativo.
  • Distribuire l'app contenitore verificata nel servizio Azure Kubernetes in un ambiente di sviluppo o test.
  • Prendere nota del nuovo nome o tag dell'immagine da usare in questo articolo.
  • Per la migrazione sul posto da Windows Server 2022 a Windows Server 2025, installare o aggiornare l'estensione aks-preview interfaccia della riga di comando di Azure alla versione 22.0.0b6 o successiva.

Note

Per informazioni su come creare un Dockerfile per i carichi di lavoro di Windows, vedere Dockerfile in Windows e Ottimizzare i Dockerfile di Windows.

Importante

Le funzionalità in anteprima di AKS sono disponibili in modalità self-service, su base volontaria. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono coperte solo parzialmente dall'assistenza clienti nei limiti del possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Installare l'estensione aks-preview interfaccia della riga di comando di Azure

  • Per installare l'estensione aks-preview, eseguire il comando seguente:

Migrazione sul posto da Windows Server 2022 a Windows Server 2025

È possibile eseguire la migrazione di un pool di nodi di Windows Server 2022 esistente a Windows Server 2025 aggiornando lo SKU del sistema operativo nel pool di nodi esistente con il az aks nodepool update comando . Questo percorso di migrazione usa l'estensione aks-preview interfaccia della riga di comando di Azure versione 22.0.0b6 o successiva. Il cluster deve eseguire Kubernetes versione 1.32 a 1.36 in cui sono supportate entrambe le versioni del sistema operativo.

Considerazioni sulla migrazione sul posto

Considerare i dettagli seguenti prima di eseguire la migrazione di un pool di nodi Windows Server 2022 a Windows Server 2025:

  • Windows Server 2025 usa immagini abilitate per FIPS per impostazione predefinita. Se il pool di nodi Windows Server 2022 non usa già un'immagine abilitata per FIPS, includere --enable-fips-image quando si esegue il comando di aggiornamento.
  • Il comando update attiva una ricreazione automatica dell'immagine del pool di nodi esistente.
  • Windows Server 2025 usa macchine virtuali di seconda generazione per impostazione predefinita. Non è necessario disporre di un pool di nodi Windows Server 2022 di seconda generazione già esistente per eseguire la migrazione sul posto. Sono supportati pool di nodi Windows Server 2022 containerd standard.
  • Se la dimensione della VM esistente supporta Generazione 2, AKS può selezionare un'immagine di Generazione 2 di Windows Server 2025 durante la migrazione. Questa selezione di immagini predefinite potrebbe influire sulla compatibilità delle immagini per alcune configurazioni.

Nella tabella seguente vengono descritte le configurazioni di origine che supportano la migrazione sul posto con il comando update. Per le configurazioni non supportate, usare invece la migrazione manuale .

Configurazione esistente Support Result
Immagine standard di Windows Server 2022 containerd Generazione 1 con dimensione della macchina virtuale solo Generazione 1 Sì Esegue la migrazione a Windows Server 2025 Generazione 1.
Immagine standard di Windows Server 2022 containerd Generazione 1 con dimensione VM compatibile con Generazione 2 Sì Esegue la migrazione a Windows Server 2025 Generazione 2.
Immagine standard di Windows Server 2022 containerd Generazione 2 con dimensione della VM compatibile con Generazione 2 Sì Esegue la migrazione a Windows Server 2025 Generazione 2.

Aggiornare il pool di nodi di Windows Server 2022 esistente a Windows Server 2025

  1. Aggiorna lo SKU del sistema operativo del pool di nodi su Windows2025 usando il comando az aks nodepool update.

    az aks nodepool update \
        --resource-group <resource-group-name> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --os-sku Windows2025 \
        --enable-fips-image
    
  2. Verificare che un nodo nel pool di nodi aggiornato usi lo SKU del Windows2025 sistema operativo e un'immagine Windows Server 2025 usando il kubectl describe node comando .

    kubectl describe node <node-name>
    

    Il seguente output di esempio condensato mostra l'etichetta SKU del Windows2025 sistema operativo e l'immagine del sistema operativo Windows Server 2025:

    Labels:
      kubernetes.azure.com/os-sku=Windows2025
      kubernetes.io/os=windows
    ...
    System Info:
      OS Image:                   Windows Server 2025 Datacenter
      Container Runtime Version:  containerd://2.0.4+azure
    

Migrazione manuale a un nuovo pool di nodi

La migrazione manuale usa un nuovo pool di nodi invece di aggiornare il pool di nodi esistente. Utilizzare la migrazione manuale per le migrazioni di versione del sistema operativo di Windows Server che non supportano l'aggiornamento sul posto oppure quando la configurazione di origine non supporta l'aggiornamento sul posto. Per eseguire manualmente la migrazione, creare un nuovo pool di nodi con la versione del sistema operativo Windows Server desiderata e spostare i carichi di lavoro nel nuovo pool di nodi.

Aggiungere un nuovo pool di nodi a un cluster esistente

Aggiungere un pool di nodi con la versione del sistema operativo desiderata al cluster esistente:

I pool di nodi di Windows Server 2025 richiedono un'immagine con FIPS abilitato. Quando si aggiunge un pool di nodi Windows Server 2025, includere --enable-fips-image (interfaccia della riga di comando di Azure) o -EnableFIPS (Azure PowerShell).

Aggiornare il file YAML

Il selettore di nodo è l'opzione più comune e consigliata per il posizionamento dei pod Windows nei nodi Windows.

  1. Aggiungere il selettore di nodo al file YAML aggiungendo l'annotazione seguente:

          nodeSelector:
            "kubernetes.io/os": windows
    

    L'annotazione trova qualsiasi nodo Windows disponibile e inserisce il pod in tale nodo (seguendo tutte le altre regole di pianificazione). Quando si aggiorna la versione del sistema operativo, è necessario imporre il posizionamento su un nodo Windows e su un nodo che esegue la versione più aggiornata del sistema operativo. A tale scopo, un'opzione consiste nell'usare un'annotazione diversa. Aggiornare <OSSKU> in modo che corrisponda all'ossku della versione desiderata del sistema operativo Windows, ad esempio Windows2025.

          nodeSelector:
            "kubernetes.azure.com/os-sku": <OSSKU>
    
  2. Dopo aver aggiornato nodeSelector nel file YAML, è necessario aggiornare anche l'immagine del contenitore da usare. È possibile ottenere queste informazioni dal passaggio precedente in cui è stata creata una nuova versione dell'applicazione in contenitori modificando l'istruzione FROM nel Dockerfile.

    Note

    È consigliabile usare lo stesso file YAML usato per distribuire inizialmente l'applicazione. In questo modo non vengono apportate altre modifiche di configurazione oltre a quella dell'immagine nodeSelector e del contenitore.

Applicare il file YAML aggiornato al carico di lavoro esistente

  1. Visualizzare i nodi nel cluster usando il comando kubectl get nodes.

    kubectl get nodes -o wide
    

    L'output di esempio seguente mostra tutti i nodi del cluster, inclusi il nuovo pool di nodi creato e i pool di nodi esistenti:

    NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
    aks-agentpool-18877473-vmss000000   Ready    agent   5h40m   v1.33.12   10.240.0.4     <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure  containerd://1.7.33-1
    akspoolws000000                     Ready    agent   3h15m   v1.33.12   10.240.0.208   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000001                     Ready    agent   3h17m   v1.33.12   10.240.0.239   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000002                     Ready    agent   3h17m   v1.33.12   10.240.1.14    <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akswspool000000                     Ready    agent   5h37m   v1.33.12   10.240.0.115   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    akswspool000001                     Ready    agent   5h37m   v1.33.12   10.240.0.146   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    akswspool000002                     Ready    agent   5h37m   v1.33.12   10.240.0.177   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    
  2. Applicare il file YAML aggiornato al carico di lavoro esistente usando il comando kubectl apply e specificare il nome del file YAML.

    kubectl apply -f <filename>
    

    L'output di esempio seguente mostra uno stato configurato per la distribuzione:

    deployment.apps/sample configured
    service/sample unchanged
    

    A questo punto, AKS avvia il processo di terminazione dei pod esistenti e la distribuzione di nuovi pod nei nodi con l'annotazione nodeSelector.

  3. Controllare lo stato della distribuzione usando il comando kubectl get pods.

    kubectl get pods -o wide
    

    L'output di esempio seguente mostra i pod nello spazio dei nomi 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>
    

Aggiornare la configurazione di sicurezza e autenticazione

Se si usano account del servizio gestito di gruppo, è necessario aggiornare la configurazione dell'identità gestita per il nuovo pool di nodi. GMSA usa un segreto (account utente e password) in modo che il nodo che esegue il pod di Windows possa autenticare il contenitore con l'ID Microsoft Entra. Per accedere a tale segreto in Azure Key Vault, il nodo usa un'identità gestita che consente al nodo di accedere alla risorsa. Poiché le identità gestite sono configurate per ogni pool di nodi e il pod si trova ora in un nuovo pool di nodi, è necessario aggiornare tale configurazione. Per altre informazioni, vedere Abilitare gli account del servizio gestito del gruppo (GMSA) per i nodi di Windows Server nel cluster del servizio Azure Kubernetes.

Lo stesso principio si applica alle identità gestite per qualsiasi altro pod o pool di nodi durante l'accesso ad altre risorse di Azure. È necessario aggiornare qualsiasi accesso fornito da Identità gestita per riflettere il nuovo pool di nodi. Per visualizzare le attività di aggiornamento e accesso, vedere Come visualizzare l'attività identità gestita.

Passaggi successivi

In questo articolo si è appreso come aggiornare la versione del sistema operativo per i carichi di lavoro Windows nel servizio Azure Kubernetes. Per altre informazioni sui carichi di lavoro di Windows nel servizio Azure Kubernetes, vedere Distribuire un'applicazione contenitore Windows nel servizio Azure Kubernetes.