Perché pianificare cluster GKE di grandi dimensioni
Ogni sistema informatico, incluso Kubernetes, ha dei limiti di architettura. Il superamento dei limiti potrebbe influire sulle prestazioni del cluster o, in alcuni casi, persino causare tempi di inattività. Segui le best practice ed esegui le azioni consigliate per assicurarti che i tuoi cluster eseguano i workload in modo affidabile su larga scala.
Limitazioni dei cluster GKE di grandi dimensioni
Quando GKE esegue lo scale di un cluster a un numero elevato di nodi, si impegna a modificare la quantità di risorse disponibili in modo che corrispondano alle esigenze del sistema, rimanendo entro i propri obiettivi del livello di servizio (SLO).Cloud de Confiance by S3NS supporta i cluster di grandi dimensioni. Tuttavia, in base al tuo caso d'uso, devi tenere conto delle limitazioni dei cluster di grandi dimensioni per rispondere meglio ai tuoi requisiti di scalabilità dell'infrastruttura.
Questa sezione descrive le limitazioni e le considerazioni per la progettazione di cluster GKE di grandi dimensioni in base al numero previsto di nodi.
Considerazioni generali sulla migrazione dei cluster
Indipendentemente dalle dimensioni del cluster di destinazione, considera quanto segue quando esegui la migrazione a limiti di nodi più elevati:
- La migrazione dai cluster Standard zonali a quelli regionali richiede di ricreare il cluster per accedere a limiti di quota dei nodi più elevati.
- Per eseguire la migrazione ai cluster che utilizzano Private Service Connect, devi ricreare il cluster per accedere al limite di quota dei nodi più elevato.
Limiti e requisiti relativi alle dimensioni dei cluster
La tabella seguente riassume i limiti e i requisiti di scalabilità di GKE, in base al numero di nodi target:
| Limite di nodi | Requisiti dell'infrastruttura | Requisiti di networking | Limitazioni di accesso | Esempi di casi d'uso |
|---|---|---|---|---|
| Fino a 1000 | Disponibile per tutti i cluster. | Nessun altro requisito. | Nessuno. Lo scale up fino a 1000 nodi è automatico. | Workload generali, sviluppo e test. |
| Da 1000 a 5000 | Disponibile per i cluster Standard regionali e i cluster Autopilot. |
|
Nessuno. Lo scale up fino a 5000 nodi è automatico se soddisfi gli altri requisiti. | Servizi aziendali e job di breve durata e volume elevato. |
| Da 5000 a 15.000 |
|
|
Per aumentare le dimensioni del cluster e il limite di quota, contatta l'assistenza clienti Google Cloud. | Workload HPC e di trattamento dati. |
| Da 15.000 a 65.000 |
|
|
Per richiedere un aumento della quota e ricevere assistenza per lo scale up ai limiti più elevati, contatta l'assistenza clienti Google Cloud. | Addestramento di modelli di grandi dimensioni. |
Best practice per la suddivisione dei carichi di lavoro tra più cluster
Puoi eseguire i workload su un singolo cluster di grandi dimensioni. Questo approccio è più facile da gestire, più conveniente e offre un migliore utilizzo delle risorse rispetto a più cluster. Tuttavia, in alcuni casi devi considerare di dividere il carico di lavoro in più cluster:
- Consulta Casi d'uso multi-cluster per scoprire di più sui requisiti generali e sugli scenari per l'utilizzo di più cluster.
- Inoltre, dal punto di vista della scalabilità, dividi il cluster quando potrebbe superare uno dei limiti descritti nella sezione seguente o una delle quote GKE. Ridurre il rischio di raggiungere i limiti di GKE riduce il rischio di tempi di inattività o altri problemi di affidabilità.
Se decidi di dividere il cluster, utilizza la gestione del parco risorse per semplificare la gestione di un parco risorse multi-cluster.
Limiti e best practice
Per assicurarti che la tua architettura supporti cluster GKE su larga scala, rivedi i seguenti limiti e le best practice correlate. Il superamento di questi limiti potrebbe causare un peggioramento delle prestazioni del cluster o problemi di affidabilità.
Queste best practice si applicano a qualsiasi cluster Kubernetes predefinito senza estensioni installate. L'estensione dei cluster Kubernetes con webhook o definizioni di risorse personalizzate (CRD) è comune, ma può limitare la tua capacità di scalare il cluster.
La tabella seguente estende le quote e i limiti di GKE principali. Devi anche familiarizzare con i limiti di Kubernetes open source per i cluster su larga scala.
I requisiti di versione di GKE menzionati nella tabella si applicano sia ai nodi sia al control plane.
| Limite GKE | Descrizione | Best practice |
|---|---|---|
| Dimensioni del database etcd | La dimensione massima del database etcd è di 6 GB. Ti consigliamo di monitorare in modo proattivo le dimensioni del database etcd del cluster e configurare avvisi per ricevere notifiche quando l'utilizzo si avvicina a questo limite. Il superamento del limite può causare problemi al control plane. | Puoi utilizzare le seguenti risorse per monitorare l'utilizzo:
Per saperne di più su come rispondere quando ti avvicini al limite, consulta Identificare i cluster in cui l'utilizzo di etcd si sta avvicinando al limite. |
| Dimensioni totali degli oggetti etcd per tipo | La dimensione totale di tutti gli oggetti del tipo di risorsa specificato non deve superare 800 MB. Ad esempio, puoi creare 750 MB di istanze Pod e 750 MB di secret, ma non puoi creare 850 MB di secret. Se crei più di 800 MB di oggetti, i controller Kubernetes o personalizzati potrebbero non inizializzarsi e causare interruzioni. |
Mantieni le dimensioni totali di tutti gli oggetti di ogni tipo archiviati in etcd al di sotto di 800 MB. Questo vale in particolare per i cluster che utilizzano molti secret o ConfigMap di grandi dimensioni o un volume elevato di CRD. |
| Numero di servizi per i cluster in cui GKE Dataplane V2 non è abilitato | Il rendimento di iptables utilizzato da kube-proxy peggiora se si verifica una delle seguenti condizioni:
Questo limite viene eliminato quando è abilitato GKE Dataplane V2. |
Mantieni il numero di servizi nel cluster inferiore a 10.000. Per saperne di più, consulta Esposizione di applicazioni utilizzando i servizi. |
| Numero di servizi per spazio dei nomi | Il numero di variabili di ambiente generate per i servizi potrebbe superare i limiti della shell. Ciò potrebbe causare l'arresto anomalo di Pods all'avvio. |
Mantieni il numero di servizi per spazio dei nomi inferiore a 5000. Puoi disattivare la compilazione di queste variabili di ambiente. Consulta la documentazione per scoprire come impostare Per saperne di più, consulta Esporre le applicazioni utilizzando i servizi. |
| Numero di pod dietro un singolo servizio per i cluster in cui GKE Dataplane V2 non è abilitato |
Ogni nodo esegue un kube-proxy che utilizza i watch per monitorare qualsiasi modifica del servizio. Più grande è un cluster, più dati relativi alle modifiche vengono elaborati dall'agente. Ciò è particolarmente visibile nei cluster con più di 500 nodi. Le informazioni sugli endpoint sono suddivise tra Gli oggetti endpoint sono ancora disponibili per i componenti, ma qualsiasi endpoint con più di 1000 pod viene automaticamente troncato. |
Mantieni il numero di pod dietro un singolo servizio inferiore a 10.000. Per saperne di più, consulta la sezione Esporre le applicazioni utilizzando i servizi. |
| Numero di pod dietro un singolo servizio per i cluster in cui è abilitato GKE Dataplane V2 |
GKE Dataplane V2 contiene limiti al numero di pod esposti da un singolo servizio. Lo stesso limite è applicabile ai cluster Autopilot, poiché utilizzano GKE Dataplane V2. |
In GKE 1.23 e versioni precedenti, mantieni il numero di pod dietro un singolo servizio inferiore a 1000. In GKE 1.24 e versioni successive, mantieni il numero di pod dietro un singolo servizio inferiore a 10.000. Per saperne di più, consulta Esposizione di applicazioni utilizzando i servizi. |
| Record DNS per servizio headless |
Il numero di record DNS per servizio headless è limitato sia per kube-dns che per Cloud DNS. |
Mantieni il numero di record DNS per servizio headless inferiore a 1000 per kube-dns e a 3500/2000 (IPv4/IPv6) per Cloud DNS. |
| Numero di tutti gli endpoint di servizio | Il numero di endpoint in tutti i servizi potrebbe raggiungere i limiti. Ciò potrebbe aumentare la latenza di programmazione o impedire del tutto la programmazione di nuovi endpoint. |
Mantieni il numero di tutti gli endpoint in tutti i servizi al di sotto di 260.000. GKE Dataplane V2, che è il dataplane predefinito per GKE Autopilot, si basa su mappe eBPF attualmente limitate a 260.000 endpoint in tutti i servizi. |
| Numero di oggetti HorizontalPodAutoscaler per cluster |
Ogni HorizontalPodAutoscaler (HPA) viene elaborato ogni 15 secondi. Per impostazione predefinita, GKE supporta fino a 300 oggetti HPA. Per limiti più elevati, il profilo HPA Performance aumenta il supporto fino a 1000 oggetti HPA nella versione 1.31 e successive e fino a 5000 oggetti HPA nella versione 1.33 e successive. Il superamento di questi limiti può causare un peggioramento lineare delle prestazioni. |
Mantieni il numero di oggetti HPA entro il limite supportato per il profilo del cluster (300, 1000 o 5000 oggetti). In caso contrario, potresti riscontrare un degrado lineare della frequenza di elaborazione delle HPA. Ad esempio, 2000 HPA con impostazioni standard fanno sì che ogni HPA venga rielaborato solo una volta ogni 1 minuto e 40 secondi. Per saperne di più, consulta Scalabilità automatica basata sull'utilizzo delle risorse, Scalabilità automatica orizzontale dei pod e Configurare il profilo HPA per il rendimento. |
| Numero di pod per nodo | Nei cluster Standard, GKE ha un limite di 512 pod per nodo. Ciò presuppone una media di due o meno container per pod. Se aumenti il numero di container per pod, questo limite potrebbe essere inferiore perché GKE alloca più risorse per container. |
Ti consigliamo di utilizzare nodi worker con almeno una vCPU ogni 10 pod. Per saperne di più, consulta la sezione Eseguire l'upgrade manuale di un cluster o di un node pool. |
| Frequenza delle modifiche ai pod |
Kubernetes ha limiti interni che influiscono sulla frequenza di creazione o eliminazione dei pod (churn dei pod) in risposta alle richieste di scalabilità. Anche altri fattori, come l'eliminazione di un pod che fa parte di un servizio, possono influire su questa frequenza di abbandono dei pod. Per i cluster con un massimo di 500 nodi, puoi prevedere una velocità media di 20 pod creati al secondo e 20 pod eliminati al secondo. Per i cluster con più di 500 nodi, puoi aspettarti una velocità media di 100 pod creati al secondo e 100 pod eliminati al secondo. |
Tieni presente il limite di frequenza di creazione ed eliminazione dei pod quando pianifichi lo scaling dei carichi di lavoro. I pod condividono la stessa velocità effettiva di eliminazione con altri tipi di risorse (ad esempio EndpointSlice). Puoi ridurre la velocità effettiva di eliminazione quando definisci i pod come parte di un servizio. Per consentire al gestore della scalabilità automatica dei cluster di rimuovere efficacemente i pod dai nodi sottoutilizzati, evita PodDisruptionBudgets troppo restrittivi e periodi di tolleranza per la terminazione lunghi. Sono sconsigliate anche le tolleranze con caratteri jolly, in quanto possono causare la pianificazione dei carichi di lavoro su nodi in fase di rimozione. |
| Numero di smartwatch aperti | I nodi creano un'osservazione per ogni Secret e ConfigMaps che configuri per i pod. La quantità combinata di osservazioni create da tutti i nodi potrebbe generare un carico notevole sul control plane del cluster. Avere più di 200.000 orologi per cluster potrebbe influire sul tempo di inizializzazione del cluster. Questo problema può causare il riavvio frequente del control plane. |
Definisci nodi più grandi per ridurre la probabilità e la gravità dei problemi causati da un numero elevato di visualizzazioni. Una densità di pod più elevata (meno nodi di grandi dimensioni) potrebbe ridurre il numero di visualizzazioni e mitigare la gravità del problema. Per saperne di più, consulta il confronto tra le serie di macchine. |
| Numero di secret per cluster se è abilitata la crittografia dei secret a livello di applicazione | Un cluster deve decriptare tutti i secret durante l'avvio del cluster quando è attivata la crittografia dei secret a livello di applicazione. Se memorizzi più di 30.000 secret, il cluster potrebbe diventare instabile durante l'avvio o gli upgrade, causando interruzioni del workload. | Archivia meno di 30.000 secret quando utilizzi la crittografia dei secret a livello di applicazione. Per saperne di più, consulta Crittografia dei secret a livello di applicazione. |
| Larghezza di banda dei log per nodo |
Esiste un limite alla quantità massima di log inviati da ogni nodo all'API Cloud Logging. Il limite predefinito varia tra 100 Kbps e 500 Kbps, a seconda del carico. Per i cluster Standard, puoi aumentare il limite a 10 MiB eseguendo il deployment di una configurazione dell'agente Logging ad alto throughput. Il superamento di questo limite potrebbe causare l'eliminazione delle voci di log. |
Configura Logging in modo da rispettare i limiti predefiniti o configura un agente Logging con throughput elevato. Per saperne di più, vedi Regolazione della velocità effettiva dei log. |
| Node pool | Un numero elevato di pool di nodi può influire sulla latenza della scalabilità automatica dell'infrastruttura perché aumenta l'insieme di nodi che possono essere potenzialmente aggiunti al cluster. Funzionalità come la separazione dei workload o le classi di calcolo personalizzate aumentano il numero di node pool. | Mantieni il numero di node pool inferiore a 200. |
| Il ritardo medio e massimo del webhook di ammissione |
I webhook di ammissione vengono chiamati in parallelo (convalida) o in sequenza (mutazione). In ogni caso, viene aggiunto un ritardo a ogni richiesta configurata che corrisponde ai selettori webhook. Durante l'esecuzione del webhook, brevi ritardi costanti, ad esempio di 50-100 ms, possono causare un significativo calo delle prestazioni. |
Configura i webhook in modo che la latenza di esecuzione sia in media inferiore a 10 ms. Specifica l'operazione, i tipi di risorse e gli spazi dei nomi a cui deve fare riferimento il webhook. Evita di acquisire eventi perché ciò può causare problemi di prestazioni, ad esempio un precaricamento più lento delle immagini. Esegui più istanze di endpoint webhook su nodi separati dal workload e mantieni una latenza bassa. Valuta la possibilità di eseguire |
| Limiti di Backup per GKE |
Puoi utilizzare Backup per GKE per eseguire il backup e il ripristino dei tuoi carichi di lavoro GKE. Backup per GKE è soggetto a limiti da tenere presente quando definisci i tuoi piani di backup. |
Esamina i limiti di Backup per GKE. Se è possibile che il tuo carico di lavoro superi questi limiti, ti consigliamo di creare più Piani B per partizionare il backup e rimanere entro i limiti. |
| Limiti di Config Connector |
Puoi utilizzare Config Connector per gestire le risorse Cloud de Confiance tramite Kubernetes. Config Connector ha due modalità di funzionamento:
|
Per informazioni dettagliate sui limiti delle risorse, consulta le linee guida per la scalabilità di Config Controller. Per informazioni sulla gestione di un numero elevato di risorse, consulta le best practice di Config Connector. |