Domande frequenti per i pool di nodi Windows Server nel servizio Azure Kubernetes

Nel servizio Azure Kubernetes è possibile creare un pool di nodi che esegue Windows Server come sistema operativo guest nei nodi. Questi nodi possono eseguire applicazioni del contenitore Windows native, ad esempio quelle basate su .NET Framework. Esistono differenze nel modo in cui Linux e Windows OS forniscono il supporto dei contenitori. Alcune funzionalità comuni di Kubernetes Linux e correlate ai pod non sono attualmente disponibili per i pool di nodi Windows.

Questo articolo definisce alcune delle domande frequenti e dei concetti relativi al sistema operativo per i nodi Windows Server nel servizio Azure Kubernetes.

Che tipo di dischi sono supportati per Windows?

Dischi di Azure e File di Azure sono i tipi di volume supportati e sono accessibili come volumi NTFS nel contenitore Windows Server.

Linux e Windows supportano macchine virtuali (VM) di seconda generazione?

Le macchine virtuali di seconda generazione sono supportate in Linux e Windows solo da WS2022. Per ulteriori informazioni, consultare Supporto per le macchine virtuali di seconda generazione in Azure.

In che modo è possibile applicare patch ai nodi di Windows?

Per ottenere le patch più recenti per i nodi Windows, è possibile sia aggiornare il pool di nodi sia aggiornare l'immagine del nodo. I servizi Windows Update non sono abilitati nei nodi del servizio Azure Kubernetes. Il servizio Azure Kubernetes rilascia nuove immagini del pool di nodi non appena sono disponibili le patch ed è responsabilità dell'utente aggiornare i pool di nodi per rimanere aggiornato sulle patch e sugli aggiornamenti rapidi. Questo processo di patch è valido anche per la versione di Kubernetes in uso. Le note sulla versione del servizio Azure Kubernetes indicano quando sono disponibili nuove versioni. Per altre informazioni sul processo di aggiornamento del pool nodi Windows Server, vedere Aggiornare un pool di nodi nel servizio Azure Kubernetes. Se si è interessati solo all'aggiornamento dell'immagine del nodo, vedere Aggiornamenti dell’immagine del nodo del servizio Azure Kubernetes.

Nota

L'immagine aggiornata di Windows Server verrà usata solo se è stato eseguito un aggiornamento del cluster (aggiornamento del piano di controllo) prima di aggiornare il pool di nodi.

Il mantenimento dell'indirizzo IP di origine client è supportato?

Al momento, la conservazione dell’IP di origine del client non è supportata con i nodi Windows.

È possibile modificare il numero massimo di pod per nodo?

Sì. Per le implicazioni dell'esecuzione di una modifica e delle opzioni disponibili, vedere Numero massimo di pod.

Per impostazione predefinita, qual è il timeout TCP nel sistema operativo Windows?

Per impostazione predefinita, il timeout TCP nel sistema operativo Windows è di 4 minuti. Questo valore non è configurabile. Quando un'applicazione usa un timeout più lungo, le connessioni TCP tra contenitori diversi nello stesso nodo si chiudono dopo quattro minuti.

Perché viene visualizzato un errore quando si tenta di creare un nuovo pool di agenti di Windows?

Se il cluster è stato creato prima di febbraio 2020 e non sono mai state eseguite operazioni di aggiornamento del cluster, il cluster usa ancora un'immagine Windows precedente. È possibile che sia stato visualizzato un errore simile al seguente:

"L'elenco seguente di immagini a cui viene fatto riferimento dal modello di distribuzione non è stato trovato: Server di pubblicazione: MicrosoftWindowsServer, Offerta: WindowsServer, Sku: 2019-datacenter-core-smalldisk-2004, Versione: più recente. Per istruzioni su come trovare immagini disponibili, vedere Trovare e usare immagini di macchine virtuali di Azure Marketplace con Azure PowerShell."

Per correggere l'errore:

  1. Aggiornare il piano di controllo del cluster per aggiornare l'offerta di immagine e il server di pubblicazione.
  2. Creare nuovi pool di agenti di Windows.
  3. Spostare i pod Windows dai pool di agenti di Windows esistenti in nuovi pool di agenti di Windows.
  4. Eliminare i pool di agenti di Windows precedenti.

Perché viene visualizzato un errore quando si tenta di distribuire pod di Windows?

Se in --max-pods si specifica un valore minore del numero di pod da creare, potrebbe essere visualizzato l'errore No available addresses.

Per correggerlo, usare il comando az aks nodepool add con un valore --max-pods sufficientemente elevato:

az aks nodepool add \
    --cluster-name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP \
    --name $NODEPOOL_NAME \
    --max-pods 3

Per altri dettagli, vedere la documentazione --max-pods.

Perché nel nodo della mia macchina virtuale è presente un utente inatteso denominato "sshd"?

Il servizio Azure Kubernetes aggiunge un utente denominato "sshd" durante l'installazione del servizio OpenSSH. Questo utente non è dannoso. È consigliabile che i clienti aggiornino gli avvisi per ignorare questo account utente imprevisto.

Ricerca per categorie: ruotare l'entità servizio per il pool di nodi Windows

I pool di nodi Windows non supportano la rotazione delle entità servizio. Per aggiornare l'entità servizio, creare un nuovo pool di nodi Windows ed eseguire la migrazione dei pod dal pool precedente a quello nuovo. Dopo la migrazione dei pod al nuovo pool, eliminare il pool di nodi meno recente.

Anziché le entità servizio, usare le identità gestite, che sono essenzialmente wrapper per le entità servizio. Per altre informazioni, vedere Usare le identità gestite nel servizio Azure Kubernetes.

Ricerca per categorie: modificare la password dell'amministratore per i nodi Windows Server nel cluster

Quando si crea il cluster del servizio Azure Kubernetes, occorre specificare i parametri --windows-admin-password e --windows-admin-username per impostare le credenziali di amministratore per tutti i nodi Windows Server nel cluster. Se alla creazione di un cluster mediante il portale di Azure o nell’impostare --vm-set-type VirtualMachineScaleSets e --network-plugin azure con l'interfaccia della riga di comando di Azure non sono state specificate le credenziali di amministratore, per impostazione predefinita il nome utente è azureuser e viene generata una password casuale.

Per modificare la password dell'amministratore, usare il comando az aks update:

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --windows-admin-password $NEW_PW

Importante

L'esecuzione dell'operazione az aks update aggiorna solo i pool di nodi Windows Server e causerà un riavvio. I pool di nodi Linux non sono interessati.

Quando si modifica --windows-admin-password, la nuova password deve avere almeno 14 caratteri e soddisfare i requisiti delle password di Windows Server.

Quanti pool di nodi è possibile creare?

Un cluster del servizio Azure Kubernetes con pool di nodi Windows non ha un limite di risorse del servizio Azure Kubernetes diverso rispetto al valore predefinito specificato per il servizio Servizio Azure Kubernetes. Per altre informazioni, vedere Quote, restrizioni relative alle dimensioni delle macchine virtuali e disponibilità dell'area in servizio Azure Kubernetes (servizio Azure Kubernetes).

Quali sono le regole di denominazione dei pool di nodi Windows?

Un pool di nodi Windows può avere un nome di sei caratteri.

I nodi Windows supportano tutte le funzionalità?

Kubenet non è attualmente supportato con i nodi Windows.

È possibile eseguire controller in ingresso nei nodi Windows?

Sì, un controller in ingresso che supporta i contenitori Windows Server può essere eseguito nei nodi Windows nel servizio Azure Kubernetes.

I contenitori di Windows Server possono usare gMSA?

Il supporto dell'account del servizio gestito dal gruppo è generalmente disponibile per Windows nel servizio Azure Kubernetes. Vedere Abilitare gli account del servizio gestito del gruppo (GMSA) per i nodi Windows Server nel cluster del servizio Azure Kubernetes

È possibile usare Monitoraggio di Azure per contenitori e contenitori con nodi Windows?

Si, puoi. Tuttavia, Monitoraggio di Azure è disponibile in anteprima pubblica per la raccolta di log (stdout, stderr) e metriche dai contenitori Windows. È anche possibile connettersi allo streaming live dei log stdout da un contenitore Windows.

Esistono limitazioni per il numero di servizi in un cluster con nodi Windows?

Un cluster con nodi Windows può avere circa 500 servizi (a volte meno) prima che si verifichi l'esaurimento delle porte. Questa limitazione si applica a un servizio Kubernetes con criteri di traffico esterno impostati su "Cluster".

Quando i criteri di traffico esterno in un Servizio sono configurati come Cluster, il traffico subisce un NAT di origine aggiuntivo nel nodo, che comporta anche la prenotazione di una porta dal pool di porte dinamiche TCPIP. Questo pool di porte è una risorsa limitata (circa 16.000 porte per impostazione predefinita) e molte connessioni attive a uno o più servizi possono causare un esaurimento dinamico del pool di porte con conseguente rimozione della connessione.

Se il servizio Kubernetes è configurato con criteri di traffico esterni impostati su "Locale", è improbabile che si verifichino problemi di esaurimento delle porte in 500 servizi.

È possibile usare il Vantaggio Azure Hybrid con i nodi Windows?

Sì. Vantaggio Azure Hybrid per Windows Server riduce i costi operativi consentendo di trasferire la licenza di Windows Server locale ai nodi Windows del servizio Azure Kubernetes.

Vantaggio Azure Hybrid può essere usato nell'intero cluster del servizio Azure Kubernetes o in singoli nodi. Per i singoli nodi, è necessario passare al gruppo di risorse del nodo e applicare direttamente ai nodi il Vantaggio Azure Hybrid. Per altre informazioni sull'applicazione del Vantaggio Azure Hybrid ai singoli nodi, vedere Vantaggio Azure Hybrid per Windows Server.

Per usare il Vantaggio Azure Hybrid in un nuovo cluster del servizio Azure Kubernetes, eseguire il comando az aks create e usare l'argomento --enable-ahub.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --load-balancer-sku Standard \
    --windows-admin-password 'Password1234$' \
    --windows-admin-username azure \
    --network-plugin azure
    --enable-ahub

Per usare il Vantaggio Azure Hybrid in un cluster del servizio Azure Kubernetes esistente, eseguire il comando az aks update e usare l'aggiornamento del cluster usando l'argomento --enable-ahub.

az aks update \
    --resource-group myResourceGroup
    --name myAKSCluster
    --enable-ahub

Per verificare se il Vantaggio Azure Hybrid è impostato nei nodi Windows del cluster, eseguire il comando az vmss show con gli argomenti --name e --resource-group per eseguire query sul set di scalabilità di macchine virtuali. Per identificare il gruppo di risorse in cui viene creato il set di scalabilità per il pool di nodi Windows, è possibile eseguire il comando az vmss list -o table.

az vmss show --name myScaleSet --resource-group MC_<resourceGroup>_<clusterName>_<region>

Se nei nodi Windows nel set di scalabilità è abilitato Vantaggio Azure Hybrid, l'output di az vmss show sarà simile al seguente:

""hardwareProfile": null,
    "licenseType": "Windows_Server",
    "networkProfile": {
      "healthProbe": null,
      "networkApiVersion": null,

Ricerca per categorie: modificare il fuso orario di un contenitore in esecuzione

Per modificare il fuso orario di un contenitore Windows Server in esecuzione, connettersi al contenitore in esecuzione con una sessione di PowerShell. Ad esempio:

kubectl exec -it CONTAINER-NAME -- powershell

Nel contenitore in esecuzione usare Set-TimeZone per impostare il fuso orario del contenitore in esecuzione. Ad esempio:

Set-TimeZone -Id "Russian Standard Time"

Per visualizzare il fuso orario corrente del contenitore in esecuzione o un elenco di fusi orari, usare Get-TimeZone.

È possibile mantenere l'affinità di sessione dalle connessioni client ai pod con i contenitori Windows?

Sebbene la gestione dell'affinità di sessione dalle connessioni client ai pod con contenitori Windows sia supportata nella versione del sistema operativo Windows Server 2022, l'affinità di sessione dall'IP client si ottiene limitando il pod desiderato per eseguire una singola istanza per nodo e configurando il servizio Kubernetes per indirizzare il traffico al pod nel nodo locale.

Usare la configurazione seguente:

  1. Usare un cluster del servizio Azure Kubernetes che esegue una versione minima 1.20.
  2. Vincolare il pod per consentire una sola istanza per nodo Windows. A tale scopo, è possibile usare anti-affinità nella configurazione della distribuzione.
  3. Nella configurazione del servizio Kubernetes impostare externalTrafficPolicy=Local. In questo modo, il servizio Kubernetes indirizza il traffico solo ai pod all'interno del nodo locale.
  4. Nella configurazione del servizio Kubernetes impostare sessionAffinity: ClientIP. In questo modo si garantisce che Azure Load Balancer venga configurato con affinità di sessione.

Passaggi successivi

Per iniziare a usare i contenitori di Windows Server nel servizio Azure Kubernetes, vedere Creare un pool di nodi che esegue Windows Server nel servizio Azure Kubernetes.