Configura il numero massimo di pod per nodo

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à di pianificazione dei pod e di allocazione degli indirizzi IP all'interno del cluster GKE. 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 del networking per i loro deployment cloud. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui viene fatto riferimento nei contenuti di Google Cloud, consulta Ruoli utente e attività comuni di GKE.

Prima di leggere questa pagina, scopri quando utilizzare GKE Standard anziché Autopilot e il modello di networking Kubernetes.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi 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 comando gcloud components update. 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 VPC nativi.
  • 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 pod. Puoi anche aggiungere altri indirizzi IP dei pod utilizzando il CIDR multi-pod non contiguo.
  • Ogni cluster deve creare pod kube-system, ad esempio kube-proxy, nello spazio dei nomi kube-system. Quando riduci il numero massimo di pod per nodo, ricorda di tenere conto sia dei pod del carico di lavoro sia dei pod di sistema. Per elencare i pod di sistema nel cluster, esegui questo comando:

    kubectl get pods --namespace kube-system
    

Configura 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 il pool di nodi. Per i cluster Autopilot, il numero massimo di nodi è preconfigurato e immutabile.

Tuttavia, se esaurisci gli indirizzi IP dei pod, puoi creare intervalli di indirizzi IP dei pod aggiuntivi utilizzando il CIDR multi-pod non contiguo.

Puoi impostare le dimensioni dell'intervallo di indirizzi dei pod durante la creazione di un cluster utilizzando gcloud CLI o la console Google Cloud .

gcloud

Per impostare il numero massimo predefinito di pod per nodo utilizzando gcloud CLI, esegui il seguente comando:

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 tuo cluster.
  • MAXIMUM_PODS: il numero massimo predefinito di pod per nodo per il cluster, che può essere configurato fino a 256. Se omesso, Kubernetes assegna il valore predefinito 110.
  • COMPUTE_LOCATION: la posizione di Compute Engine per il nuovo cluster.

Console

  1. Nella console Google Cloud , vai alla pagina Crea un cluster Kubernetes.

    Vai a Crea un cluster Kubernetes

  2. Configura il nuovo cluster.

  3. Nel riquadro di navigazione, in Cluster, fai clic su Networking.

  4. Assicurati che la casella di controllo Abilita routing del traffico VPC nativo (mediante IP alias) sia selezionata.

  5. Nel riquadro di navigazione, in Pool di nodi, fai clic su Nodi.

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

  7. 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 sul cluster.

Allo stesso modo, se imposti il numero massimo predefinito di pod su 8 e l'intervallo di indirizzi IP secondari per i pod del cluster 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 sul cluster.

Configura 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 valore 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 valore 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 pool di nodi.

Console

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Nel riquadro di navigazione, fai clic su Nodi.

  5. In Networking, inserisci un valore nel campo Numero massimo di pod per nodo. 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. Il tentativo di specificare un intervallo secondario Pod più piccolo di /24 durante la creazione di unpool di nodil genera il seguente errore:

Pod secondary range 'Pod' must have a CIDR block of at least /24

Se hai bisogno di un intervallo più piccolo di /24 per l'intero cluster, puoi specificarlo a livello di cluster utilizzando l'argomento --cluster-ipv4-cidr con Google Cloud CLI. Per saperne di più, consulta Creazione di un cluster con un intervallo CIDR specifico. Puoi anche utilizzare il CIDR multi-pod discontiguo per aggiungere altri intervalli di indirizzi IP del 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 del carico di lavoro 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 sui cluster standard, ma questi possono essere configurati per consentire fino a 256 pod per nodo. I cluster Autopilot, in base alla densità dei pod del workload prevista, 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 massimo predefinito di 110 pod per nodo per i cluster Standard, Kubernetes assegna un blocco CIDR /24 (256 indirizzi) a ciascuno dei nodi. Avendo a disposizione più del doppio degli indirizzi IP 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 sul dimensionamento del cluster per l'intervallo di indirizzi IP secondario 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 tue esigenze attuali e future relative ai carichi di lavoro. Uno spazio di indirizzi IP insufficiente per i pod può causare errori di pianificazione e impedire lo scaling del cluster.

Se non hai la certezza 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 un numero sufficiente di indirizzi IP 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 pod più piccolo, il che a sua volta consente a più nodi di rientrare in un intervallo secondario 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 supportati dal cluster, devi fornire 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 i nodi e i pod.

Valori specificati dall'utente

Questi sono i valori che fornisci quando crei un cluster o 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.
  • DS: La lunghezza del prefisso della subnet del 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 ai tuoi input.

  • M: la dimensione della maschera di rete per l'intervallo di pod di ogni nodo. none M = 31 - ⌈log₂(Q)⌉ Utilizza la funzione CEILING (⌈ ⌉) per arrotondare per eccesso al numero intero più vicino.

  • HM: il numero di bit host per la maschera di rete dell'intervallo di pod del nodo. none HM = 32 - M

  • HD: il numero di bit host per la subnet mask CIDR del pod selezionata. none HD = 32 - DS

  • MN: 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 * Q

  • N: 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 valori massimi teorici. Le prestazioni nel mondo reale possono essere influenzate da altri fattori.

Esempio:

Supponiamo che tu stia creando un cluster GKE Autopilot con quanto segue:

  • Un CIDR subnet pod di /17 (DS = 17).
  • Un massimo di 32 pod per nodo (Q = 32).

Calcola il numero massimo di pod:

  1. M = 31 - ⌈log₂(32)⌉ = 26
  2. HM = 32 - 26 = 6
  3. HD = 32 - 17 = 15
  4. MN = 2(15 - 6) = 512
  5. MP = 512 * 32 = 16,384

Questo cluster può supportare un massimo di 512 nodi e 16.384 pod.

Riduci 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, insieme agli intervalli di subnet e secondari che definisci, determinano il numero di indirizzi IP necessari per creare un cluster.

Puoi configurare il numero massimo di pod per nodo al momento della creazione del cluster e del node pool.

Passaggi successivi