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
- 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.
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
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'istruzioneFROM
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
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
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.
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.
Azure Kubernetes Service