Creare pool di nodi per un cluster nel servizio Azure Kubernetes
Nel servizio Azure Kubernetes i nodi della stessa configurazione vengono raggruppati in pool di nodi. Questi pool di nodi contengono le macchine virtuali sottostanti che eseguono le applicazioni. Quando si crea un cluster del servizio Azure Kubernetes, si definisce il numero iniziale di nodi e le relative dimensioni (SKU), che crea un pool di nodi di sistema.
Per supportare applicazioni con esigenze di calcolo o archiviazione diverse, è possibile creare pool di nodi utente. I pool di nodi di sistema vengono usati principalmente per l'hosting di pod di sistema critici, tra cui CoreDNS e konnectivity
. I pool di nodi utente servono allo scopo principale di ospitare i pod dell'applicazione. Ad esempio, usare più pool di nodi utente per fornire GPU per applicazioni a elevato utilizzo di calcolo o per l'accesso a risorse di archiviazione SSD ad alte prestazioni. Tuttavia, se si vuole avere un solo pool nel cluster del servizio Azure Kubernetes, è possibile pianificare i pod dell'applicazione nei pool di nodi di sistema.
Nota
Questa funzionalità consente un maggiore controllo sulla creazione e la gestione di più pool di nodi e richiede comandi separati per operazioni CRUD (create/update/delete). In precedenza, le operazioni del cluster tramite az aks create
o az aks update
usavano l'API managedCluster ed erano le uniche opzioni per modificare il piano di controllo e un singolo pool di nodi. Questa funzionalità espone un set di operazioni separato per i pool di agenti tramite l'API agentPool e richiede l'uso az aks nodepool
del set di comandi per eseguire operazioni in un singolo pool di nodi.
Questo articolo illustra come creare uno o più pool di nodi in un cluster del servizio Azure Kubernetes.
Operazioni preliminari
- È necessario che sia installata e configurata l'interfaccia della riga di comando di Azure 2.2.0 o versione successiva. Eseguire
az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. - Esaminare le opzioni di archiviazione per le applicazioni nel servizio Azure Kubernetes per pianificare la configurazione di archiviazione.
Limiti
Quando si creano cluster del servizio Azure Kubernetes che supportano pool di nodi multipli, si applicano le limitazioni seguenti:
- Vedere Quote, limitazioni delle dimensioni delle macchine virtuali e disponibilità delle aree nel servizio Azure Kubernetes (AKS).
- È possibile eliminare il pool di nodi di sistema se nel cluster del servizio Azure Kubernetes è presente un altro pool di nodi di sistema. In caso contrario, non è possibile eliminare il pool di nodi di sistema.
- I pool di sistema devono contenere almeno un nodo e i pool di nodi utente possono contenere zero o più nodi.
- Il cluster del servizio Azure Kubernetes deve usare il servizio di bilanciamento del carico dello SKU Standard per usare più pool di nodi. Questa funzionalità non è supportata con i servizi di bilanciamento del carico dello SKU Basic.
- Il cluster del servizio Azure Kubernetes deve usare i set di scalabilità di macchine virtuali per i nodi.
- Il nome di un pool di nodi può contenere solo caratteri alfanumerici minuscoli e deve iniziare con una lettera minuscola.
- Per i pool di nodi Linux, la lunghezza deve essere compresa tra 1 e 12 caratteri.
- Per i pool di nodi Windows, la lunghezza deve essere compresa tra 1 e 6 caratteri.
- Tutti i pool di nodi devono trovarsi nella stessa rete virtuale.
- Quando si creano più pool di nodi in fase di creazione del cluster, le versioni di Kubernetes per i pool di nodi devono corrispondere al set di versione per il piano di controllo.
Creare un cluster del servizio Azure Kubernetes
Importante
Se si esegue un singolo pool di nodi di sistema per il cluster del servizio Azure Kubernetes in un ambiente di produzione, è consigliabile usare almeno tre nodi per il pool di nodi. Se un nodo si arresta, si perdono le risorse del piano di controllo e la ridondanza viene compromessa. È possibile ridurre questo rischio avendo più nodi del piano di controllo.
Creare un gruppo di risorse di Azure usando il comando
az group create
.az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Creare un cluster del servizio Azure Kubernetes con un pool a nodo singolo usando il comando
az aks create
.az aks create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --vm-set-type VirtualMachineScaleSets \ --node-count 2 \ --location $LOCATION \ --load-balancer-sku standard \ --generate-ssh-keys
La creazione del cluster richiede alcuni minuti.
Quando il cluster è pronto, ottenere le credenziali del cluster usando il comando
az aks get-credentials
.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Aggiungere un pool di nodi
Il cluster creato nel passaggio precedente ha un singolo pool di nodi. In questa sezione viene aggiunto un secondo pool di nodi al cluster.
Creare un nuovo pool di nodi usando il comando
az aks nodepool add
. L'esempio seguente crea un pool di nodi denominato mynodepool che esegue tre nodi:az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 3
Controllare lo stato dei pool di nodi usando il comando
az aks node pool list
e specificare il gruppo di risorse e il nome del cluster.az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
L'output di esempio seguente mostra che mynodepool è stato creato correttamente con tre nodi. Quando il cluster del servizio Azure Kubernetes è stato creato nel passaggio precedente, è stato creato un nodepool1 predefinito con un numero di nodi pari a2.
[ { ... "count": 3, ... "name": "mynodepool", "orchestratorVersion": "1.15.7", ... "vmSize": "Standard_DS2_v2", ... }, { ... "count": 2, ... "name": "nodepool1", "orchestratorVersion": "1.15.7", ... "vmSize": "Standard_DS2_v2", ... } ]
Pool di nodi ARM64
Il processore ARM64 offre un calcolo a bassa potenza per i carichi di lavoro Kubernetes. Per creare un pool di nodi ARM64, è necessario scegliere una macchina virtuale Dpsv5, Dplsv5 o Epsv5 .
Limiti
- I pool di nodi ARM64 non sono supportati nei cluster abilitati per Defender con versione di Kubernetes inferiore alla 1.29.0.
- I pool di nodi abilitati per FIPS non sono supportati con GLI SKU ARM64.
- I pool di nodi Windows non sono supportati con SKU ARM64.
Aggiungere un pool di nodi ARM64
Aggiungere un pool di nodi ARM64 nel cluster esistente usando
az aks nodepool add
.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $ARM_NODE_POOL_NAME \ --node-count 3 \ --node-vm-size Standard_D2pds_v5
Pool di nodi Linux di Azure
L'host contenitore Linux di Azure per il servizio Azure Kubernetes è una distribuzione Linux open source disponibile come host contenitore del servizio Azure Kubernetes. Offre affidabilità, sicurezza e coerenza elevate. Include solo il set minimo di pacchetti necessari per l'esecuzione dei carichi di lavoro dei contenitori, che migliorano i tempi di avvio e le prestazioni complessive.
Aggiungere un pool di nodi Linux di Azure
Aggiungere un pool di nodi Linux di Azure nel cluster esistente usando il
az aks nodepool add
comando e specificare--os-sku AzureLinux
.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $AZ_LINUX_NODE_POOL_NAME \ --os-sku AzureLinux
Eseguire la migrazione di nodi Ubuntu ai nodi Linux di Azure
È possibile eseguire la migrazione dei nodi Ubuntu esistenti in Linux di Azure usando uno dei metodi seguenti:
- Rimuovere i pool di nodi esistenti e aggiungere nuovi pool di nodi Linux di Azure.
- Migrazione dello SKU del sistema operativo sul posto.
Pool di nodi con subnet univoche
Un carico di lavoro può richiedere la suddivisione dei nodi del cluster in pool separati per l'isolamento logico. Le subnet separate dedicate a ogni pool di nodi nel cluster possono supportare questo isolamento, che può soddisfare i requisiti, ad esempio la presenza di spazio di indirizzi di rete virtuale non contiguo da suddividere tra i pool di nodi.
Nota
Assicurarsi di usare la versione 2.35.0
dell'interfaccia della riga di comando di Azure o versioni successive.
Limiti
- Tutte le subnet assegnate ai pool di nodi devono appartenere alla stessa rete virtuale.
- I pod di sistema devono avere accesso a tutti i nodi e i pod nel cluster per fornire funzionalità critiche, ad esempio la risoluzione DNS e il tunneling del proxy kubectl logs/exec/port-forward.
- Se si espande la rete virtuale dopo aver creato il cluster, è necessario aggiornare il cluster prima di aggiungere una subnet all'esterno del blocco CIDR originale. Mentre gli errori del servizio Azure Kubernetes nel pool di agenti aggiungono, l'
aks-preview
estensione dell'interfaccia della riga di comando di Azure (versione 0.5.66 e successive) supporta ora l'esecuzioneaz aks update
del comando con solo gli argomenti-g <resourceGroup> -n <clusterName>
necessari. Questo comando esegue un'operazione di aggiornamento senza apportare modifiche, che possono ripristinare un cluster bloccato in uno stato di errore. - Nei cluster con versione kubernetes precedente alla 1.23.3, il traffico SNAT kube-proxy da nuove subnet può causare l'eliminazione dei pacchetti da Criteri di rete di Azure.
- Il traffico SNAT dei nodi di Windows verso le nuove subnet fino a quando il pool di nodi non viene ricreato l'immagine.
- Per impostazione predefinita, i servizi di bilanciamento del carico interni sono una delle subnet del pool di nodi.
Aggiungere un pool di nodi con una subnet univoca
Aggiungere un pool di nodi con una subnet univoca nel cluster esistente usando il
az aks nodepool add
comando e specificare--vnet-subnet-id
.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 3 \ --vnet-subnet-id $SUBNET_RESOURCE_ID
Pool di nodi abilitati per FIPS
Per altre informazioni sull'abilitazione di Federal Information Process Standard (FIPS) per il cluster del servizio Azure Kubernetes, vedere Abilitare FIPS (Federal Information Process Standard) per i pool di nodi del servizio Azure Kubernetes.
Pool di nodi di Windows Server con containerd
A partire da Kubernetes versione 1.20 e successive, è possibile specificare containerd
come runtime del contenitore per i pool di nodi di Windows Server 2019. A partire da Kubernetes 1.23, containerd
è il runtime del contenitore predefinito e solo per Windows.
Importante
Quando si usa containerd
con i pool di nodi di Windows Server 2019:
- Sia il piano di controllo che i pool di nodi di Windows Server 2019 devono usare Kubernetes versione 1.20 o successiva.
- Quando si crea o si aggiorna un pool di nodi per eseguire contenitori di Windows Server, il valore predefinito per
--node-vm-size
è Standard_D2s_v3, ovvero le dimensioni minime consigliate per i pool di nodi di Windows Server 2019 prima di Kubernetes versione 1.20. Le dimensioni minime consigliate per i pool di nodi di Windows Server 2019 che usanocontainerd
sono Standard_D4s_v3. Quando si imposta il parametro--node-vm-size
, controllare l'elenco delle dimensioni delle macchine virtuali con restrizioni. - È consigliabile usare taints o etichette con i pool di nodi di Windows Server 2019 in esecuzione
containerd
e tolleranze o selettori di nodi con le distribuzioni per garantire che i carichi di lavoro siano pianificati correttamente.
Aggiungere un pool di nodi di Windows Server con containerd
Aggiungere un pool di nodi di Windows Server con
containerd
nel cluster esistente usando .az aks nodepool add
Nota
Se non si specifica l'
WindowsContainerRuntime=containerd
intestazione personalizzata, il pool di nodi usacontainerd
comunque come runtime del contenitore per impostazione predefinita.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --os-type Windows \ --name $CONTAINER_D_NODE_POOL_NAME \ --node-vm-size Standard_D4s_v3 \ --kubernetes-version 1.20.5 \ --aks-custom-headers WindowsContainerRuntime=containerd \ --node-count 1
Aggiornare un pool di nodi Windows Server specifico a containerd
Aggiornare un pool di nodi specifico da Docker a
containerd
usando ilaz aks nodepool upgrade
comando .az aks nodepool upgrade \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $CONTAINER_D_NODE_POOL_NAME \ --kubernetes-version 1.20.7 \ --aks-custom-headers WindowsContainerRuntime=containerd
Aggiornare tutti i pool di nodi di Windows Server esistenti a containerd
Aggiornare tutti i pool di nodi da Docker a
containerd
usando ilaz aks nodepool upgrade
comando .az aks nodepool upgrade \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --kubernetes-version 1.20.7 \ --aks-custom-headers WindowsContainerRuntime=containerd
Pool di nodi con dischi temporanei del sistema operativo
Aggiungere un pool di nodi che usa dischi del sistema operativo temporanei a un cluster esistente usando il comando
az aks nodepool add
con il flag--node-osdisk-type
impostato suEphemeral
.Nota
- È possibile specificare dischi temporanei del sistema operativo durante la creazione del cluster usando il flag
--node-osdisk-type
con il comandoaz aks create
. - Per creare pool di nodi con dischi del sistema operativo collegati alla rete, specificare
--node-osdisk-type Managed
.
az aks nodepool add --name $EPHEMERAL_NODE_POOL_NAME --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME -s Standard_DS3_v2 --node-osdisk-type Ephemeral
- È possibile specificare dischi temporanei del sistema operativo durante la creazione del cluster usando il flag
Importante
Con il sistema operativo temporaneo, è possibile distribuire macchine virtuali e immagini di istanza fino alle dimensioni della cache della macchina virtuale. La configurazione predefinita del disco del sistema operativo del nodo nel servizio Azure Kubernetes usa 128 GB, il che significa che sono necessarie dimensioni di macchina virtuale con una cache superiore a 128 GB. Il Standard_DS2_v2 predefinito ha una cache di 86 GB, che non è sufficientemente grande. Lo SKU della macchina virtuale Standard_DS3_v2 ha una dimensione della cache di 172 GB, che è sufficientemente grande. È anche possibile ridurre le dimensioni predefinite del disco del sistema operativo usando --node-osdisk-size
, ma tenere presente che le dimensioni minime per le immagini del servizio Azure Kubernetes sono di 30 GB.
Eliminare un pool di nodi
Se non è più necessario un pool di nodi, è possibile eliminarlo e rimuovere i nodi della macchina virtuale sottostanti.
Attenzione
Quando si elimina un pool di nodi, il servizio Azure Kubernetes non esegue operazioni di blocco e svuotamento e non sono disponibili opzioni di ripristino per la perdita di dati che possono verificarsi quando si elimina un pool di nodi. Se i pod non possono essere pianificati in altri pool di nodi, tali applicazioni diventano non disponibili. Assicurarsi di non eliminare un pool di nodi quando le applicazioni in uso non hanno backup dei dati o la possibilità di essere eseguiti in altri pool di nodi nel cluster. Per ridurre al minimo l'interruzione dei pod di riprogrammazione attualmente in esecuzione nel pool di nodi da eliminare, eseguire un blocco e svuotare in tutti i nodi del pool di nodi prima di eliminarli.
Eliminare un pool di nodi usando il comando
az aks nodepool delete
e specificare il nome del pool di nodi.az aks nodepool delete --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --no-wait
L'eliminazione dei nodi e del pool di nodi richiede alcuni minuti.
Passaggi successivi
In questo articolo si è appreso come creare più pool di nodi in un cluster del servizio Azure Kubernetes. Per informazioni su come gestire più pool di nodi, vedere Gestire più pool di nodi per un cluster nel servizio Azure Kubernetes .
Azure Kubernetes Service