Condividi tramite


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

Quando si aggiorna la versione del sistema operativo di un carico di lavoro Windows in esecuzione nel servizio Azure Kubernetes, è necessario distribuire un nuovo pool di nodi per assicurarsi che le versioni di Windows corrispondano in ogni pool di nodi. Questo articolo descrive i passaggi per aggiornare la versione del sistema operativo per i carichi di lavoro Windows nel servizio Azure Kubernetes. Anche se questo esempio è incentrato sull'aggiornamento da Windows Server 2019 a Windows Server 2022, lo stesso procedimento può essere usato per eseguire l'aggiornamento da qualsiasi versione di Windows Server a un'altra.

Supporto della versione del sistema operativo Windows Server

Quando viene rilasciata una nuova versione del sistema operativo Windows Server, il servizio Azure Kubernetes si impegna a supportarlo e consiglia di eseguire l'aggiornamento alla versione più recente per usufruire delle correzioni, dei miglioramenti e delle 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 tale periodo, il servizio Azure Kubernetes rilascia una nuova versione che supporta una versione più recente del sistema operativo Windows Server a cui eseguire l'aggiornamento.

Nota

  • Windows Server 2019 verrà ritirato al raggiungimento della fine del servizio per Kubernetes versione 1.32. Per altre informazioni, vedere le Note sulla versione di AKS.
  • Windows Server 2022 verrà ritirato al raggiungimento della fine del servizio per Kubernetes versione 1.34. Per altre informazioni, vedere le Note sulla versione di AKS.

Limiti

Windows Server 2019 e Windows Server 2022 non possono coesistere nello stesso pool di nodi nel servizio Azure Kubernetes. È necessario creare un nuovo pool di nodi per ospitare la nuova versione del sistema operativo. È importante associare le autorizzazioni e l'accesso del pool di nodi precedente a quello nuovo.

Operazioni preliminari

  • 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.

Nota

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

Aggiungere un pool di nodi di Windows Server 2022 a un cluster esistente

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 esegue l'aggiornamento da Windows Server 2019 a Windows Server 2022, è necessario applicare il posizionamento in un nodo Windows e un nodo che esegue la versione più recente del sistema operativo. A tale scopo, un'opzione consiste nell'usare un'annotazione diversa:

          nodeSelector:
            "kubernetes.azure.com/os-sku": Windows2022
    
  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.

Nota

È 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.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. 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, il servizio Azure Kubernetes avvia il processo di terminazione dei pod esistenti e distribuisce nuovi pod nei nodi di Windows Server 2022.

  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>
    

Considerazioni sulla sicurezza e l'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.