Questo documento ti aiuta a navigare nella 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 aziendali e delle applicazioni. Oltre a definire rete, sicurezza, spazio di archiviazione e altri aspetti tecnici, devi valutare costi e prestazioni per soddisfare le esigenze aziendali. Invece di trattare costi e rendimento come entità distinte, devi integrarli fin dalle fasi iniziali della pianificazione dell'infrastruttura per definire una relazione unificata che determini sia l'affidabilità che 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à dell'applicazione, puoi impostare o ottimizzare le seguenti funzionalità di GKE:
- Configurazione di GKE
- Configurazione del workload
- Baseline e visibilità dei costi
Usa GKE Autopilot
Per ambienti di sviluppo o sandbox 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
Un 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
- Visualizza 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 mentre vengono avviati 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 workload che non utilizzano la scalabilità automatica orizzontale dei pod o quando i picchi di workload 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
- Scalare le richieste e i limiti delle risorse del 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.
Automatizzare la scalabilità dell'infrastruttura utilizzando il gestore della scalabilità automatica del cluster
Per scalare i nodi di calcolo sottostanti in base alla simulazione di pianificazione attiva anziché ai carichi delle metriche, abilita 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 la riduzione della scalabilità dei pool di nodi 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 di 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 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.
Deployment di carichi di lavoro a tolleranza di errore sulle VM spot
Utilizza le VM spot per eseguire carichi di lavoro stateless, a tolleranza di errore o batch 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 carichi di lavoro 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 dei tempi di preempt delle VM spot e sulla configurazione del kernel, consulta Informazioni sui pool di nodi.
Seleziona la regione appropriata
Quando la latenza non influisce sugli utenti, esegui i carichi di lavoro del cluster nelle regioni di Compute Engine con costi operativi inferiori.
Per saperne di più, consulta Best practice per la scelta dell'area geografica per Compute Engine.
Registrarsi per il 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 di uscita di rete interni tra zone.
Per ridurre al minimo e controllare i costi di networking, valuta quanto segue:
- Trasferimenti di dati tra zone:sebbene i cluster regionali aumentino la disponibilità distribuendo i workload tra le zone, esistono costi associati per i dati trasferiti tra queste zone.
Per ulteriori informazioni, consulta la pagina Tutti i prezzi di 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 diverse 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 scelte di configurazione del cluster.
Ottimizzare 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 implementare NodeLocal DNSCache e i gruppi di endpoint di rete (NEG).
Quando esegui carichi di lavoro che utilizzano molto il 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 i 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 di CPU e memoria e impedire ai singoli team di pianificare workload non conformi che attivano addebiti di calcolo imprevisti.
Per saperne di più, consulta 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:
Bloccare i manifest non conformi nelle pipeline CI/CD
Convalida la conformità alle norme relative ai 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 maggiori informazioni, vedi Convalida le 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 che soddisfino 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 ulteriori informazioni, consulta Ridimensionare le risorse di 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.
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 indirizzi il traffico solo ai pod pronti e riavvii le istanze non riuscite, evitando la perdita di traffico durante lo scalabilità automatica.
Per saperne di più, consulta Configura i probe di attività, disponibilità e avvio.
Configura la disattivazione normale dell'applicazione
Prepara i container per la terminazione controllata ascoltando il segnale 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 nuovi tentativi di backoff esponenziale a livello di applicazione o mesh di servizi per gestire errori temporanei o potenziali prerilasci 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 del 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 inseriti.
Per ulteriori informazioni sulla risoluzione dei problemi relativi all'utilizzo elevato dell'API Logging o ai timeout del limite di scrittura dei log, consulta:
Monitora 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.
Promuovere una cultura del risparmio
Fornisci agli sviluppatori l'accesso alle dashboard di spesa cloud e organizza corsi di formazione su FinOps per allineare le decisioni architetturali ai budget di costo aziendali.
Per saperne di più sulla cultura dell'efficienza dei costi organizzativa, consulta Diffondere la cultura del risparmio dei costi.
Elenco di controllo della visibilità e della baseline dei costi
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.