Questa pagina spiega come ottimizzare le risorse del cluster per garantire una capacità di pianificazione sufficiente per i pod configurando il numero massimo di pod per nodo nei cluster standard su Google Kubernetes Engine (GKE). Questa pagina ti aiuta a capire in che modo la relazione tra pod, dimensioni dei blocchi CIDR e numero di nodi influisce sulla modalità con cui GKE pianifica i pod e alloca gli indirizzi IP all'interno del cluster. Questa pagina include anche dettagli sulle limitazioni e sui valori predefiniti per il numero massimo di pod per nodo.
Questa pagina è utile per operatori, architetti cloud, sviluppatori e ingegneri di rete che eseguono il provisioning e la configurazione delle risorse cloud, il deployment di app e servizi e la gestione della rete per i deployment cloud. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui viene fatto riferimento nei Google Cloud contenuti, consulta Ruoli e attività comuni degli utenti GKE.
Prima di leggere questa pagina, scopri quando utilizzare GKE Standard anziché i cluster Autopilot e il modello di rete Kubernetes.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Per utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Limitazioni
- Puoi configurare il numero massimo di pod per nodo solo nei cluster nativi di VPC.
- La creazione di nodi è limitata dal numero di indirizzi disponibili nell'intervallo di indirizzi dei pod. Consulta la tabella di pianificazione dell'intervallo di indirizzi IP per le dimensioni predefinite, minime e massime dell'intervallo di indirizzi dei pod. Puoi anche aggiungere altri indirizzi IP dei pod utilizzando il CIDR multi-pod non contiguo.
Ogni cluster deve creare pod kube-system, come kube-proxy, nello spazio dei nomi
kube-system. Quando riduci il numero massimo di pod per nodo, ricorda di tenere conto sia dei pod dei workload sia dei pod di sistema. Per elencare i pod di sistema nel cluster, esegui il comando seguente:kubectl get pods --namespace kube-system
Configurare il numero massimo di pod per nodo
Puoi configurare il numero massimo di pod per nodo in un cluster standard durante la creazione di un cluster o di un pool di nodi. Non puoi modificare questa impostazione dopo aver creato il cluster o pool di nodi. Per i cluster Autopilot, il numero massimo di nodi è preconfigurato e non modificabile.
Puoi impostare le dimensioni dell'intervallo di indirizzi dei pod durante la creazione di un cluster utilizzando gcloud CLI o la Google Cloud console.
gcloud
Per impostare il numero massimo predefinito di pod per nodo utilizzando gcloud CLI, esegui il comando seguente:
gcloud container clusters create CLUSTER_NAME \
--enable-ip-alias \
--cluster-ipv4-cidr=10.0.0.0/21 \
--services-ipv4-cidr=10.4.0.0/19 \
--create-subnetwork=name='SUBNET_NAME',range=10.5.32.0/27 \
--default-max-pods-per-node=MAXIMUM_PODS \
--location=COMPUTE_LOCATION
Sostituisci quanto segue:
CLUSTER_NAME: il nome del nuovo cluster.SUBNET_NAME: il nome della nuova subnet per il cluster.MAXIMUM_PODS: il numero massimo predefinito di pod per nodo per il cluster, configurabile fino a256. Se omesso, Kubernetes assegna il valore predefinito110.COMPUTE_LOCATION: la località di Compute Engine per il nuovo cluster.
Console
Nella Google Cloud console, vai alla pagina Crea un cluster Kubernetes.
Configura il nuovo cluster.
Nel riquadro di navigazione, in Cluster, fai clic su Networking.
Assicurati che la casella di controllo Abilita routing del traffico VPC nativo (mediante IP alias) sia selezionata.
Nel riquadro di navigazione, in Pool di nodi, fai clic su Networking.
Imposta il campo Numero massimo di pod per nodo su
110. GKE utilizza questo valore per regolare le dimensioni dell'intervallo di indirizzi IP assegnato ai nodi.Fai clic su Crea.
Quando configuri il numero massimo di pod per nodo per il cluster, Kubernetes utilizza questo valore per allocare un intervallo CIDR per i nodi. Puoi calcolare il numero massimo di nodi nel cluster in base all'intervallo di indirizzi IP secondari del cluster per i pod e all'intervallo CIDR allocato per il nodo.
Ad esempio, se imposti il numero massimo predefinito di pod su 110 e l'intervallo di indirizzi IP secondari per i pod su /21, Kubernetes assegna un intervallo CIDR /24 ai nodi del cluster. L'assegnazione dell'intervallo CIDR consente un massimo di
2(24-21) = 23 = 8 nodi nel cluster.
Allo stesso modo, se imposti il numero massimo predefinito di pod su 8 e l'intervallo di indirizzi IP secondari del cluster per i pod su /21, Kubernetes assegna un intervallo CIDR /28 ai nodi. L'assegnazione dell'intervallo CIDR consente un massimo di
2(28-21) = 27 = 128 nodi nel cluster.
Configurare il numero massimo di pod in un nuovo pool di nodi per un cluster esistente
Puoi anche specificare il numero massimo di pod per nodo durante la creazione di un node pool in un cluster standard esistente. La creazione di un nuovo pool di nodi consente di ottimizzare l'allocazione degli indirizzi IP, anche nei cluster esistenti in cui non è configurato un numero massimo predefinito di pod per nodo a livello di cluster.
L'impostazione del numero massimo di pod a livello di pool di nodi sostituisce il numero massimo predefinito a livello di cluster. Se non configuri un numero massimo di pod per nodo durante la creazione del pool di nodi, viene applicato il numero massimo a livello di cluster.
gcloud
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--max-pods-per-node=MAXIMUM_PODS
Sostituisci quanto segue:
POOL_NAME: il nome del nuovo pool di nodi.CLUSTER_NAME: il nome del cluster in cui vuoi creare il pool di nodi.MAXIMUM_PODS: il numero massimo di pod nel node pool.
Console
Vai alla pagina Google Kubernetes Engine nella Google Cloud console.
Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.
Fai clic sulla scheda Nodi.
Fai clic su add Crea node pool gestito dall'utente.
Nel riquadro di navigazione, fai clic su Networking.
Nel campo Numero massimo di pod per nodo, inserisci un valore. GKE utilizza questo valore per regolare le dimensioni dell'intervallo di indirizzi IP assegnato ai nodi.
Intervalli secondari dei pod e numero massimo di pod per nodo
Quando configuri il numero massimo di pod per nodo, influisci indirettamente sulle dimensioni richieste dell'intervallo secondario dei pod. GKE richiede un blocco CIDR minimo di /24 per pool di nodi. Se tenti di specificare un intervallo secondario dei pod inferiore a /24 durante la creazione di un pool di nodi, viene generato il seguente errore:
Pod secondary range 'Pod' must have a CIDR block of at least /24
Se hai bisogno di un intervallo inferiore a /24 per l'intero cluster, puoi specificarlo a livello di cluster utilizzando l'argomento --cluster-ipv4-cidr con Google Cloud CLI. Per ulteriori informazioni, consulta Creare un cluster con un intervallo CIDR specifico. Puoi anche utilizzare il CIDR multi-pod non contiguo per aggiungere altri intervalli di indirizzi IP dei pod al cluster.
Ogni cluster deve creare pod kube-system, come kube-proxy, nello spazio dei nomi kube-system. Quando configuri il numero massimo di pod per nodo, ricorda di tenere conto sia dei pod dei workload sia dei pod di sistema.
Informazioni sul numero massimo predefinito di pod per nodo
Per impostazione predefinita, GKE consente fino a 110 pod per nodo nei cluster standard, ma i cluster standard possono essere configurati per consentire fino a 256 pod per nodo. I cluster Autopilot, in base alla densità prevista dei pod dei workload, scelgono il numero massimo di pod per nodo da un intervallo compreso tra 8 e 256. Kubernetes assegna a ogni nodo un intervallo di indirizzi IP, un blocco CIDR, in modo che ogni pod possa avere un indirizzo IP univoco. Le dimensioni del blocco CIDR corrispondono al numero massimo di pod per nodo.
Intervalli CIDR dei pod nei cluster standard
Con il numero massimo predefinito di 110 pod per nodo per i cluster standard, Kubernetes assegna un blocco CIDR /24 (256 indirizzi) a ciascuno dei nodi. Avendo più del doppio degli indirizzi IP disponibili rispetto al numero massimo di pod che possono essere creati su un nodo, Kubernetes può ridurre il riutilizzo degli indirizzi IP man mano che i pod vengono aggiunti e rimossi da un nodo.
Sebbene 256 pod per nodo sia un limite rigido, puoi ridurre il numero di pod su un nodo. Le dimensioni del blocco CIDR assegnato a un nodo dipendono dal valore massimo di pod per nodo. Il blocco contiene sempre almeno il doppio degli indirizzi rispetto al numero massimo di pod per nodo.
La tabella seguente elenca le dimensioni del blocco CIDR e il numero corrispondente di indirizzi IP disponibili che Kubernetes assegna ai nodi in base al numero massimo di pod per nodo:
| Numero massimo di pod per nodo | Intervallo CIDR per nodo | Numero di indirizzi IP |
|---|---|---|
| 8 | /28 | 16 |
| 9 – 16 | /27 | 32 |
| 17 – 32 | /26 | 64 |
| 33 – 64 | /25 | 128 |
| 65 – 128 | /24 | 256 |
| 129 - 256 | /23 | 512 |
Considerazioni sulle dimensioni del cluster per l'intervallo di indirizzi IP secondari per i pod
Quando crei un cluster, le dimensioni dell'intervallo di indirizzi IP secondari per i pod sono immutabili. Devi pianificare attentamente le dimensioni di questo intervallo per soddisfare le esigenze dei workload attuali e future. Uno spazio di indirizzi IP insufficiente per i pod può causare errori di pianificazione e impedire la scalabilità del cluster.
Se non sei sicuro delle dimensioni richieste, ti consigliamo di iniziare con un intervallo più ampio, ad esempio /21, che è il valore predefinito per i cluster creati con Google Cloud CLI. Un intervallo più ampio fornisce indirizzi IP sufficienti per un cluster di dimensioni moderate e ti offre flessibilità per la crescita futura. Se esaurisci gli indirizzi IP dei pod, puoi utilizzare
il CIDR multi-pod non contiguo per
aggiungere altri intervalli di indirizzi IP dei pod.
Tuttavia, se lavori in un ambiente con uno spazio di indirizzi IP limitato, potresti dover utilizzare un intervallo più piccolo. In questi casi, puoi ridurre il numero massimo di pod per nodo. La riduzione del numero massimo di pod per nodo consente a ogni nodo di avere un intervallo CIDR dei pod più piccolo, il che a sua volta consente di inserire più nodi in un intervallo secondario dei pod più piccolo per l'intero cluster. La configurazione è un compromesso tra la densità dei pod per nodo e il numero totale di nodi nel cluster.
Per calcolare il numero massimo di pod che il cluster può supportare, fornisci i valori di input per il numero di pod per nodo e gli intervalli CIDR. GKE utilizza questi input per determinare le dimensioni degli intervalli di indirizzi per nodi e pod.
Valori specificati dall'utente
Questi sono i valori che fornisci durante la creazione di un cluster o di pool di nodi.
Q: il numero massimo di pod per nodo.- Per i cluster Autopilot,
Qè fisso (attualmente 32). - Per i cluster standard, puoi configurare
Q.
- Per i cluster Autopilot,
DS: la lunghezza del prefisso della subnet dei pod. Ad esempio, per un intervallo CIDR di/17, la lunghezza del prefisso è17.S: la lunghezza del prefisso della subnet principale. Ad esempio, per un intervallo CIDR di/24, la lunghezza del prefisso è24.
Valori calcolati
GKE calcola i seguenti valori in base agli input.
M: le dimensioni della maschera di rete per l'intervallo dei pod di ogni nodo.none M = 31 - ⌈log₂(Q)⌉Utilizza la funzione ceiling (⌈ ⌉) per arrotondare all'intero più vicino.HM: il numero di bit host per la maschera di rete dell'intervallo dei pod del nodo.none HM = 32 - MHD: il numero di bit host per la maschera di rete della subnet dei pod CIDR selezionata.none HD = 32 - DSMN: il numero massimo di nodi che possono essere supportati dalla subnet dei pod.none MN = 2^(HD - HM)MP: il numero massimo di pod che possono essere supportati dalla subnet dei pod.none MP = MN * QN: il numero di indirizzi IP utilizzabili nell'intervallo principale.none N = 2^(32-S) - 4
Note importanti:
- Tutti gli indirizzi IP nell'intervallo secondario sono utilizzabili per i pod.
- Questi calcoli forniscono i massimi teorici. Le prestazioni reali possono essere influenzate da altri fattori.
Esempio:
Supponiamo che tu stia creando un cluster GKE Autopilot con le seguenti caratteristiche:
- Un CIDR della subnet dei pod di
/17(DS= 17). - Un massimo di 32 pod per nodo (
Q= 32).
Calcola il numero massimo di pod:
M = 31 - ⌈log₂(32)⌉ = 26HM = 32 - 26 = 6HD = 32 - 17 = 15MN = 2(15 - 6) = 512MP = 512 * 32 = 16,384
Questo cluster può supportare un massimo di 512 nodi e 16.384 pod.
Ridurre il numero massimo di pod
La riduzione del numero massimo di pod per nodo consente al cluster di avere più nodi, poiché ogni nodo richiede una parte più piccola dello spazio di indirizzi IP totale. In alternativa, puoi supportare lo stesso numero di nodi nel cluster specificando uno spazio di indirizzi IP più piccolo per i pod al momento della creazione del cluster.
La riduzione del numero massimo di pod per nodo consente anche di creare cluster più piccoli che richiedono meno indirizzi IP. Ad esempio, con otto pod per nodo, a ogni nodo viene concesso un CIDR /28. Questi intervalli di indirizzi IP, oltre alle subnet e agli intervalli secondari che definisci, determinano il numero di indirizzi IP necessari per creare correttamente un cluster.
Puoi configurare il numero massimo di pod per nodo al momento della creazione del cluster e al momento della creazione del node pool.
Passaggi successivi
- Scopri come creare cluster nativi di VPC.
- Scopri come aggiungere altri indirizzi IP dei pod ai cluster.
- Scopri le strategie di gestione degli indirizzi IP durante la migrazione a GKE.
- Scopri di più sugli insight sull'utilizzo degli indirizzi IP di GKE.