Questo documento ti aiuta a consultare la documentazione di Google Kubernetes Engine (GKE) per trovare linee guida e consigli per l'ottimizzazione dei costi. GKE offre ampie funzionalità di scalabilità automatica e pianificazione che puoi utilizzare per ridurre al minimo il costo del cluster mantenendo la stabilità dell'applicazione.
Per una panoramica consolidata di tutte le best practice di GKE, consulta Best practice per GKE.Dovresti già avere familiarità con quanto segue:
Panoramica
Quando implementi GKE, devi considerare diversi aspetti tecnici per allinearti ai requisiti di applicazioni e attività. Oltre a definire rete, sicurezza, spazio di archiviazione e altri aspetti tecnici, devi valutare costi e prestazioni per soddisfare le esigenze aziendali. Anziché trattare i costi e le prestazioni come entità distinte, devi integrarli fin dalle fasi iniziali della pianificazione dell'infrastruttura per definire una relazione unificata che determini sia l'affidabilità sia la spesa per il cloud. Sono previsti costi ridotti e alta affidabilità, ma man mano che aumenti le dimensioni, la complessità della gestione di questo compromesso aumenta.
Per ottenere costi ridotti e stabilità delle applicazioni, puoi impostare o ottimizzare le seguenti funzionalità di GKE:
- Configurazione GKE
- Configurazione del workload
- Baseline e visibilità dei costi
Puoi anche scoprire e implementare le best practice per l'ottimizzazione dei costi utilizzando Compute Advisor (anteprima). Per saperne di più, consulta Utilizza Compute Advisor.
Usa GKE Autopilot
Per ambienti sandbox o di sviluppo di piccole dimensioni, seleziona cluster Autopilot. In Autopilot, GKE gestisce dinamicamente i nodi e ti viene addebitato solo il costo della capacità dei pod richiesta, il che ti aiuta a evitare addebiti per VM, sistema operativo dei nodi e overhead di sistema.
Per saperne di più, consulta la panoramica di GKE Autopilot.
Come funziona la scalabilità automatica
I controller di scalabilità automatica di GKE regolano dinamicamente le risorse in base alle variazioni delle richieste di traffico.
Aggiungere e rimuovere pod in base alle metriche di utilizzo
HorizontalPodAutoscaler (HPA) aggiunge e rimuove pod in base alla CPU o a metriche personalizzate.
Per comprendere e configurare la scalabilità automatica orizzontale dei pod, consulta la seguente documentazione di GKE:
- Concetti di scalabilità automatica orizzontale dei pod
- Configura la scalabilità automatica orizzontale dei pod
- Visualizzare gli eventi di Horizontal Pod Autoscaler
- Esporre metriche personalizzate dell'applicazione per la scalabilità automatica
Configura una soglia di utilizzo target (ad esempio, 70% o 80%) per mantenere un buffer che gestisca i picchi di traffico durante l'avvio di pod di replica aggiuntivi.
Scalare i pod in base alle metriche di utilizzo
Utilizza VerticalPodAutoscaler (VPA) per dimensionare dinamicamente le richieste di CPU e memoria dei container per i carichi di lavoro che non utilizzano la scalabilità automatica orizzontale dei pod o quando i carichi di lavoro di picco sono sconosciuti.
Per comprendere e configurare la scalabilità automatica verticale dei pod, consulta la seguente documentazione di GKE:
- Concetti di scalabilità automatica verticale dei pod
- Scala le richieste e i limiti delle risorse dei container
Mantieni VPA in modalità Off (solo consigli) per almeno 24 ore (idealmente una settimana) in ambienti simili a quelli di produzione per acquisire pattern di traffico rappresentativi. Per evitare aggiustamenti erratici delle dimensioni, specifica limiti minimi e massimi espliciti nell'oggetto VerticalPodAutoscaler prima di attivare le modalità Initial o Auto.
Automatizza la scalabilità dell'infrastruttura utilizzando Cluster Autoscaler
Per scalare i nodi di computing sottostanti in base alla simulazione della pianificazione attiva anziché ai carichi delle metriche, attiva il gestore della scalabilità automatica dei cluster nei pool di nodi GKE Standard. Specifica i parametri minimi dei nodi per supportare la capacità notturna di base.
Configura sempre un oggetto PodDisruptionBudget (PDB) per i pod di sistema e delle applicazioni. Questa configurazione contribuisce a garantire che il gestore della scalabilità automatica dei cluster non causi inavvertitamente interruzioni del servizio durante il consolidamento o lo scale down dei node pool sottoutilizzati.
Per comprendere e configurare il gestore della scalabilità automatica dei cluster, consulta la seguente documentazione di GKE:
- Informazioni sulla scalabilità automatica del cluster GKE
- Scalabilità automatica di un cluster
- Visualizzare gli eventi di scalabilità automatica del cluster
Esegui il deployment di pool di nodi dinamici utilizzando la creazione automatica dei node pool
Abilita la creazione automatica dei pool di nodi per generare automaticamente node pool GKE personalizzati le cui forme, conteggi di CPU o limiti di memoria si adattano con precisione ai parametri di pianificazione dei pod in attesa. Questa funzionalità riduce al minimo le risorse rimanenti sui nodi sovradimensionati.
Per comprendere e configurare la creazione automatica dei pool di nodi, consulta la seguente documentazione di GKE:
Elenco di controllo per la scalabilità automatica
Caratteristiche dell'infrastruttura
Allinea le regole di rete di hardware, posizione e nodi del cluster alle priorità di ottimizzazione dei costi.
Seleziona i tipi di macchina appropriati
Seleziona i tipi di macchina appropriati per il cluster in base alla posizione degli utenti e alla posizione dei dati a cui il cluster deve accedere.
Per saperne di più, consulta la guida alle risorse e al confronto per le famiglie di macchine.
Esegui il deployment di workload a tolleranza di errore su VM spot
Utilizza le VM spot per eseguire carichi di lavoro batch, stateless o a tolleranza di errore con uno sconto fino al 91% rispetto alle istanze VM on demand.
Per saperne di più, consulta la seguente documentazione di GKE:
- Concetti relativi alle VM spot
- Esegui carichi di lavoro a tolleranza di errore a costi inferiori con le VM spot
- Esegui workload a tolleranza di errore a costi inferiori nei pod Spot
Mappare le famiglie di macchine efficienti e le impostazioni di sistema del sistema operativo
Personalizza le impostazioni delle macchine del pool di nodi con profili di istanza convenienti (ad esempio, architetture VM E2).
Per saperne di più sul dimensionamento dei nodi, sulla configurazione delle tempistiche di prerilascio delle VM spot e sulla configurazione delle impostazioni del kernel, consulta Informazioni sui node pool.
Seleziona la regione appropriata
Quando la latenza non influisce sugli utenti, esegui i workload del cluster nelle regioni di Compute Engine con costi operativi inferiori.
Per saperne di più, consulta Best practice per la scelta della regione per Compute Engine.
Registrati per i CUD
Acquista sconti per impegno di utilizzo (CUD) per ottenere prezzi scontati (fino al 70%) per le risorse di calcolo di base per un periodo di uno o tre anni.
Per saperne di più, consulta la pagina relativa agli sconti per impegno di utilizzo basato sulle risorse.
Considera i costi di networking
I cluster GKE regionali e multizona migliorano l'affidabilità dell'applicazione, ma possono generare costi per il traffico in uscita di rete cross-zone interno.
Per ridurre al minimo e controllare i costi di networking, considera quanto segue:
- Trasferimenti di dati tra zone:sebbene i cluster regionali aumentino la disponibilità distribuendo i workload tra le zone, sono previsti costi associati per i dati trasferiti tra queste zone.
Per saperne di più, consulta Tutti i prezzi del networking.
Esegui il deployment di cluster a zona singola per ambienti non di produzione
Negli ambienti non di produzione, per evitare addebiti di rete tra zone e ridurre il sovraccarico delle VM, esegui il deployment di cluster a zona singola anziché di cluster regionali o multizona.
Per saperne di più, consulta Informazioni sulle opzioni di configurazione del cluster.
Ottimizza i percorsi di risoluzione DNS del cluster e il traffico in entrata
Per ottimizzare la risoluzione DNS del cluster e il traffico in entrata, puoi eseguire il deployment di NodeLocal DNSCache e dei gruppi di endpoint di rete (NEG).
Quando esegui workload con un utilizzo intensivo del DNS, NodeLocal DNSCache esegue un daemon DNS locale su ogni nodo. Questa configurazione impedisce ai carichi di query elevati di esaurire CoreDNS, evitando la necessità di scalare CoreDNS e riducendo i costi complessivi di GKE.
Per il traffico in entrata, il bilanciamento del carico nativo del container tramite NEG instrada il traffico direttamente agli indirizzi IP dei pod anziché ai gruppi di istanze. Questo routing diretto facilita il reindirizzamento del traffico durante le azioni di scalabilità dei pod.
Per saperne di più, vedi:
- Configurare NodeLocal DNSCache
- Panoramica del bilanciamento del carico nativo del container
- Configura Ingress per i bilanciatori del carico delle applicazioni esterni
Applica le quote delle risorse per spazio dei nomi
Esegui il deployment di oggetti ResourceQuota Kubernetes standard per spazio dei nomi nei cluster multi-tenant per bloccare le soglie di forma della CPU e della memoria e impedire ai singoli team di pianificare workload non conformi che attivano addebiti di computing imprevisti.
Per saperne di più, consulta la sezione Spazi dei nomi nella documentazione di Kubernetes.
Implementa audit di Policy Controller
Esegui il deployment di Policy Controller per controllare e applicare dinamicamente la conformità del cluster agli standard aziendali. Policy Controller utilizza il controllo di ammissione per rifiutare le risorse configurate in modo errato.
Per ulteriori informazioni, consulta le seguenti risorse:
Blocca i manifest non conformi nelle pipeline CI/CD
Convalida la conformità alle norme sui costi nelle prime fasi del ciclo di vita dello sviluppo.
Integra gli script di convalida (ad esempio l'analisi kpt) nei controlli pre-commit o pull request per controllare e bloccare i manifest non conformi prima che raggiungano il cluster.
Per saperne di più, vedi Convalida delle app in base ai criteri aziendali in una pipeline CI.
Elenco di controllo dell'infrastruttura
Ottimizzazione di applicazioni e workload
Configura i tuoi workload in modo che utilizzino le risorse in modo efficiente e riducano l'overhead operativo.
Specifica richieste e limiti di memoria corrispondenti
Specifica richieste precise di CPU e memoria del container prima del deployment. Per la CPU, configura le richieste in modo da soddisfare gli obiettivi del livello di servizio (SLO), ma lascia i limiti senza restrizioni. Per la memoria, assicurati che l'allocazione richiesta corrisponda al limite di memoria.
Per saperne di più, consulta Ridimensionare le risorse CPU e memoria assegnate ai container nella documentazione di Kubernetes.
Accelerare i tempi di avvio dei container
Riduci al minimo le dimensioni delle immagini container per ridurre i tempi di download delle immagini.
Configura PDB
Specifica un oggetto PodDisruptionBudget (PDB) per le repliche dell'applicazione per limitare le interruzioni volontarie e garantire la stabilità quando GKE esegue lo scale down o quando si verificano upgrade dei nodi.
Per ulteriori informazioni, consulta Specifica di un budget di interruzione per la tua applicazione.
Imposta probe di idoneità e di attività significativi
Configura i probe di idoneità e di attività per tutti i container per garantire che GKE instradi il traffico solo ai pod pronti e riavvii le istanze in errore, evitando la perdita di traffico durante la scalabilità automatica.
Per saperne di più, consulta Configura i probe di attività, disponibilità e avvio.
Configura l'arresto normale dell'applicazione
Prepara i container per l'arresto controllato ascoltando l'indicatore SIGTERM, finalizzando le richieste in corso prima di uscire o configurando gli hook preStop.
Per ulteriori informazioni, consulta Terminazione e arresto normale delle VM preemptible.
Implementare i nuovi tentativi con backoff esponenziale
Implementa i tentativi di backoff esponenziale a livello di applicazione o mesh di servizi per gestire errori temporanei o potenziali preempt di VM Spot.
Per saperne di più, consulta la sezione Retries nella documentazione di Istio.
Elenco di controllo per l'ottimizzazione di applicazioni e workload
Baseline e visibilità dei costi
Per ottimizzare i costi, devi prima avere visibilità sulla tua spesa GKE e su come viene allocata. Questa visibilità ti aiuta ad attribuire i costi ai team e alle unità aziendali che li sostengono.
La seguente documentazione di GKE descrive come stabilire una visibilità approfondita della fatturazione, del consumo di risorse e delle metriche di base di GKE.
Abilita l'allocazione dei costi di GKE
Abilita l'allocazione dei costi di GKE per ottenere visibilità sulle richieste di risorse dei workload e sui costi associati. Gli attributi di allocazione dei costi raggruppano i costi in base agli spazi dei nomi e alle etichette Kubernetes dei tuoi carichi di lavoro.
Esporta questi dettagli in BigQuery per analizzare i dati in fatturazione Cloud. Utilizza questa analisi per identificare i workload che causano picchi di fatturazione, eseguire i chargeback e ottimizzare le richieste di risorse.
Per saperne di più, consulta Ottenere insight sulle spese chiave per l'allocazione delle risorse e i costi dei cluster GKE.
Esamina i volumi di importazione di log e metriche
L'abilitazione di Cloud Logging e Cloud Monitoring per i cluster comporta costi. L'inserimento di volumi elevati di log e metrica personalizzata può comportare addebiti imprevisti. Controlla centralmente quali livelli di log e metriche personalizzate vengono importati.
Per saperne di più sulla risoluzione dei problemi relativi all'utilizzo elevato dell'API Logging o ai timeout dei limiti di scrittura dei log, consulta:
Monitorare lo stato di Metrics Server
Monitora lo stato del deployment di Metrics Server, perché i controller di scalabilità automatica integrati di GKE si basano su questo per recuperare le metriche di CPU e memoria.
Per saperne di più, consulta Risoluzione dei problemi relativi alla scalabilità automatica orizzontale dei pod.
Promuovi una cultura del risparmio
Fornisci agli sviluppatori l'accesso alle dashboard di spesa per il cloud e organizza corsi di formazione su FinOps per allineare le decisioni architetturali ai budget dei costi aziendali.
Per saperne di più sulla cultura dell'efficienza dei costi dell'organizzazione, consulta Diffondi la cultura del risparmio sui costi.
Elenco di controllo della visibilità e della baseline dei costi
Utilizzare Compute Advisor
Compute Advisor è un'interfaccia basata sull'AI nella consoleGoogle Cloud , basata su Gemini, che ti aiuta a progettare architetture resilienti ed economiche per GKE.
Compute Advisor fornisce indicazioni sulla disponibilità quasi in tempo reale per VM con avvio flessibile e VM spot, verificando al contempo le policy e le quote delle risorse della tua organizzazione prima del deployment. Compute Advisor non fornisce indicazioni sulla disponibilità per i workload che richiedono risorse on demand.
Per accedere a Gemini nella console Google Cloud , completa i seguenti passaggi:
-
Nella console Google Cloud , vai alla pagina Panoramica.
-
Nella sezione Progetta la tua infrastruttura con Compute Advisor, invia un prompt. Gemini inizia a generare una risposta.
-
Per generare consigli sull'architettura, esegui uno dei seguenti prompt di esempio in Compute Advisor. Quando fai clic sui pulsanti Esegui prompt in Compute Advisor, il caricamento della console Google Cloud potrebbe richiedere più di 15 secondi:
Scalabilità automatica e bin packing:
Caso d'uso: per massimizzare il bin packing e ridurre al minimo l'overhead della CPU inattiva, utilizza questo prompt per configurare una strategia per la scalabilità automatica dei cluster GKE e i node pool.
Configure a GKE cluster to use autoscaler and node pool strategy to maximize bin packing and minimize idle CPU overhead.Governance multi-tenancy:
Caso d'uso: per mantenere gli spazi dei nomi di sviluppo entro i limiti di budget, utilizza questo prompt per creare una bozza di policy ResourceQuota per un cluster GKE multi-tenant.
Draft a ResourceQuota policy for a multi-tenant GKE cluster to keep development namespaces within budget bounds.Ottimizzazione dei carichi di lavoro:
Caso d'uso: per aiutarti a decidere se utilizzare la modalità GKE Autopilot o Standard per un workload batch con richieste di risorse variabili, utilizza questo prompt per ricevere un consiglio:
Recommend whether to use GKE Autopilot or Standard mode for a batch processing workload with highly variable resource demands.
Passaggi successivi
Per saperne di più sui principi architetturali e sulla cultura organizzativa necessari per l'efficienza dei costi, consulta Best practice per l'esecuzione di applicazioni Kubernetes con ottimizzazione dei costi su GKE.