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 funzionalità di scalabilità automatica e pianificazione estese che puoi utilizzare per ridurre al minimo i costi 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à conoscere i seguenti argomenti:
Panoramica
Quando implementi GKE, devi considerare diversi aspetti tecnici per allinearti ai requisiti dell'applicazione e dell'attività. Oltre a definire networking, sicurezza, spazio di archiviazione e altri aspetti tecnici, devi valutare sia i costi sia le prestazioni per soddisfare le esigenze aziendali. Invece di trattare costi e 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 la scalabilità, 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
- Spesa di riferimento 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 Utilizzare Compute Advisor.
Usare GKE Autopilot
Per i piccoli ambienti sandbox o di sviluppo, seleziona i cluster Autopilot. In Autopilot, GKE gestisce dinamicamente i nodi e ti viene addebitata solo la 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 Panoramica di GKE Autopilot.
Comprendere il funzionamento della 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 i pod in base alla CPU o alle 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
- Configurare la scalabilità automatica orizzontale dei pod
- Visualizzare gli eventi di Horizontal Pod Autoscaler
- Esponi le metriche delle applicazioni personalizzate 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 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 workload 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
- Scalare le richieste e i limiti delle risorse dei container
Mantieni VPA in modalità Off (solo suggerimenti) per almeno 24 ore (idealmente una settimana) negli ambienti di produzione per acquisire pattern di traffico rappresentativi. Per evitare regolazioni erratiche delle dimensioni, specifica limiti minimi e massimi espliciti nell'oggetto VerticalPodAutoscaler prima di abilitare le modalità Initial o Auto.
Automatizzare la scalabilità dell'infrastruttura utilizzando Cluster Autoscaler
Per scalare i nodi di calcolo sottostanti in base alla simulazione della pianificazione attiva anziché ai carichi delle metriche, abilita Cluster Autoscaler nei node pool GKE Standard. Specifica i parametri minimi dei nodi per supportare la capacità di base notturna.
Configura sempre un oggetto PodDisruptionBudget (PDB) per i pod di sistema e delle applicazioni. Questa configurazione consente di garantire che Cluster Autoscaler non causi inavvertitamente interruzioni del servizio durante il consolidamento o la riduzione della scalabilità dei node pool sottoutilizzati.
Per comprendere e configurare Cluster Autoscaler, consulta la seguente documentazione di GKE:
- Informazioni sulla scalabilità automatica dei cluster GKE
- Scalare automaticamente un cluster
- Visualizzare gli eventi di scalabilità automatica del cluster
Eseguire il deployment di node pool dinamici utilizzando la creazione automatica di pool di nodi
Abilita la creazione automatica di pool di nodi per generare automaticamente node pool GKE personalizzati le cui forme, numero 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 di pool di nodi, consulta la seguente documentazione di GKE:
Elenco di controllo per la scalabilità automatica
Caratteristiche dell'infrastruttura
Allinea l'hardware, la località e le regole di rete dei nodi del cluster alle priorità di ottimizzazione dei costi.
Selezionare i tipi di macchina appropriati
Seleziona i tipi di macchina appropriati per il cluster in base alla località degli utenti e alla località 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.
Eseguire il deployment di workload a tolleranza di errore su VM spot
Utilizza le VM spot per eseguire workload senza stato, 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
- Eseguire workload a tolleranza di errore a costi inferiori con le VM spot
- Eseguire workload a tolleranza di errore a costi inferiori nei pod spot
Mappare le famiglie di macchine e le impostazioni del sistema operativo efficienti
Personalizza le impostazioni delle macchine 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 prerilascio delle VM spot e sulla configurazione del kernel, consulta Informazioni sui node pool.
Selezionare la regione appropriata
Quando la latenza non influisce sugli utenti, esegui i workload dei 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 i CUD
Acquista sconti per impegno di utilizzo (CUD) per assicurarti prezzi con sconti elevati (fino al 70%) per le risorse di calcolo di base per un periodo di uno o tre anni.
Per saperne di più, consulta Sconti per impegno di utilizzo basati sulle risorse.
Considerare i costi di rete
I cluster GKE regionali e multi-zona migliorano l'affidabilità delle applicazioni, ma possono generare costi di traffico in uscita di rete tra le zone interni.
Per ridurre al minimo e controllare i costi di rete, 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 di networking.
Eseguire il deployment di cluster a zona singola per ambienti non di produzione
Negli ambienti non di produzione, per evitare addebiti di rete tra le zone e ridurre l'overhead delle VM, esegui il deployment di cluster a zona singola anziché di cluster regionali o multi-zona.
Per saperne di più, consulta Informazioni sulle scelte di configurazione dei 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 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 che carichi di query elevati esauriscano 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 normale durante le azioni di scalabilità dei pod.
Per saperne di più, consulta:
- Configurare NodeLocal DNSCache
- Panoramica del bilanciamento del carico nativo del container
- Configurare Ingress per i bilanciatori del carico delle applicazioni esterni
Applicare le quote di 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.
Implementare i controlli di Policy Controller
Esegui il deployment di Policy Controller per controllare e applicare dinamicamente la conformità dei cluster agli standard aziendali. Policy Controller utilizza il controllo di ammissione per rifiutare le risorse configurate in modo errato.
Per saperne di più, consulta:
Bloccare i manifest non conformi nelle pipeline CI/CD
Convalida la conformità alle policy 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ù, consulta Convalidare le app in base alle policy aziendali in una pipeline CI.
Elenco di controllo dell'infrastruttura
Ottimizzazione di applicazioni e workload
Configura i workload in modo che utilizzino le risorse in modo efficiente e riducano l'overhead operativo.
Specificare richieste e limiti di memoria corrispondenti
Specifica le richieste precise di CPU e memoria dei 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 saperne di più, 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 al minimo i tempi di download delle immagini.
Configurare i PDB
Specifica un oggetto PodDisruptionBudget (PDB) per le repliche delle applicazioni per limitare le interruzioni volontarie e garantire la stabilità quando GKE riduce la scalabilità o quando si verificano upgrade dei nodi.
Per saperne di più, consulta Specificare un budget di interruzione per l' applicazione.
Impostare probe di attività e idoneità significativi
Configura i probe di attività e idoneità per tutti i container per assicurarti che GKE instradi il traffico solo ai pod pronti e riavvii le istanze non riuscite, evitando la perdita di traffico durante la scalabilità automatica.
Per saperne di più, consulta Configurare i probe di attività, idoneità e avvio.
Configurare la disattivazione normale dell'applicazione
Prepara i container per la terminazione normale ascoltando il segnale SIGTERM, finalizzando le richieste in corso prima di uscire o configurando gli hook preStop.
Per saperne di più, consulta Terminazione e arresto normale delle VM preemptible.
Implementare i tentativi con backoff esponenziale
Implementa i tentativi con 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 Tentativi nella documentazione di Istio.
Elenco di controllo per l'ottimizzazione di applicazioni e workload
Spesa di riferimento e visibilità dei costi
Per ottimizzare i costi, devi prima avere visibilità sulla spesa di 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 sulla fatturazione, sul consumo di risorse e sulle metriche di base di GKE.
Abilitare 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 attribuiscono i costi dei cluster agli spazi dei nomi e alle etichette Kubernetes dei workload.
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.
Esaminare i volumi di importazione di log e metriche
L'abilitazione di Cloud Logging e Cloud Monitoring per i cluster comporta costi. Volumi elevati di importazione di log e metrica personalizzata possono comportare addebiti imprevisti. Controlla a livello centrale i livelli di log e le metriche personalizzate importati.
Per saperne di più sulla risoluzione dei problemi relativi all'utilizzo elevato dell'API Logging o ai timeout del limite 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 di esso per recuperare le metriche di CPU e memoria.
Per saperne di più, consulta Risolvere i problemi relativi alla scalabilità automatica orizzontale dei pod.
Promuovere 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 sull'architettura ai budget di costo aziendali.
Per saperne di più sulla cultura dell'efficienza dei costi organizzativa, consulta Diffondere la cultura del risparmio.
Elenco di controllo per la spesa di riferimento e la visibilità dei costi
Utilizzare Compute Advisor
Compute Advisor è un'interfaccia basata sull'AI nella Google Cloud console, basata su Gemini, che ti aiuta a progettare architetture resilienti ed economiche per GKE.
Compute Advisor fornisce indicazioni sulla disponibilità in tempo reale per le VM Flex-start e le VM spot, verificando al contempo le policy e le quote di 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 Google Cloud console, completa i seguenti passaggi:
-
Nella Google Cloud console, 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 Google Cloud caricamento della console 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 dei node pool.
Configure a GKE cluster to use autoscaler and node pool strategy to maximize bin packing and minimize idle CPU overhead.Governance multi-tenant:
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 del workload:
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.