Informazioni sui buffer di capacità

I buffer di capacità ti aiutano a ridurre la latenza di avvio dei pod per i carichi di lavoro di Google Kubernetes Engine (GKE) consentendoti di dichiarare in modo proattivo i livelli di capacità attiva o di standby nel cluster. Dichiarando la capacità di riserva in anticipo, puoi ottenere avvii più rapidi dei carichi di lavoro in modo economicamente vantaggioso.

Questo documento spiega come funzionano i buffer di capacità. Per scoprire come abilitare e utilizzare i buffer di capacità, consulta Configurare i buffer di capacità.

Quando utilizzare un buffer di capacità

Utilizza un buffer di capacità per le applicazioni sensibili alla latenza di avvio e che devono scalare rapidamente. Quando si verificano aumenti improvvisi del traffico, un buffer attivo fornisce capacità di cui è stato eseguito il provisioning in anticipo, progettata per la scalabilità a bassa latenza. Quando si verifica un aumento sostenuto del traffico, un buffer di standby fornisce la pianificazione dei pod a un costo più conveniente rispetto al provisioning anticipato.

I buffer di capacità offrono i seguenti vantaggi:

  • Riduci al minimo la latenza di scalabilità: i buffer attivi forniscono VM in esecuzione, che contribuiscono a ridurre al minimo la latenza. I buffer di standby riprendono rapidamente, fornendo una disponibilità di capacità più rapida rispetto ai nuovi nodi.
  • Provisioning eccessivo economicamente vantaggioso: i buffer di capacità ti aiutano a mantenere una rete di sicurezza di dimensioni fisse. Per i carichi di lavoro su larga scala, questo approccio è spesso più conveniente rispetto ad altri metodi di provisioning eccessivo (ad esempio, la riduzione dei target di utilizzo di HorizontalPodAutoscaler (HPA)), che possono aumentare la capacità inattiva in modo lineare man mano che il cluster cresce.
  • Soddisfa i requisiti dei carichi di lavoro:hai il controllo completo sulle dimensioni del buffer di capacità. Le opzioni includono l'incorporamento di daemonset o dati personalizzati e il controllo del precaricamento delle immagini e dell'avvio anticipato dei carichi di lavoro in base alle tue esigenze.

Consigliamo i buffer di capacità per i carichi di lavoro sensibili alla latenza che richiedono una scalabilità rapida, come gli agenti AI, l'inferenza AI, le applicazioni di vendita al dettaglio durante gli eventi di vendita o i server di gioco durante i picchi di attività dei giocatori.

Non consigliamo i buffer di capacità per i carichi di lavoro che non sono sensibili alla latenza di avvio, ad esempio i job di elaborazione batch. Per questi carichi di lavoro, il provisioning eccessivo delle risorse non offre alcun vantaggio.

Come funzionano i buffer di capacità

Implementa un buffer di capacità utilizzando una risorsa personalizzata CapacityBuffer di Kubernetes per definire un buffer di capacità di riserva. Il gestore della scalabilità automatica dei cluster GKE monitora le risorse CapacityBuffer e le considera come domanda in attesa per garantire la disponibilità della capacità di riserva. Se il cluster non ha capacità sufficiente per soddisfare le richieste di risorse definite nel buffer, il gestore della scalabilità automatica dei cluster esegue il provisioning di nodi aggiuntivi.

Quando un carico di lavoro ad alta priorità aumenta, GKE pianifica immediatamente il carico di lavoro sulla capacità disponibile nel buffer. Questa pianificazione immediata si applica al numero di repliche o alla quantità di risorse riservate nel buffer, evitando il ritardo tipico associato al provisioning dei nodi. Quando un carico di lavoro utilizza un'unità buffer, il gestore della scalabilità automatica dei cluster esegue il provisioning di un nuovo nodo per riempire il buffer.

Strategie dei buffer di capacità

Puoi configurare i buffer di capacità utilizzando diverse strategie di provisioning in base ai requisiti di latenza e costi.

Buffer attivo

Un buffer attivo fornisce VM in esecuzione per la scalabilità a bassa latenza dei carichi di lavoro che rientrano nella capacità riservata. Poiché i nodi sono già pronti, forniscono una latenza minima per il consumo iniziale del buffer durante un evento di scalabilità.

Consigliamo questa strategia per i carichi di lavoro critici in cui il tempo di scalabilità è la priorità più alta.

Buffer di standby

Un buffer di standby fornisce VM sospese. La strategia di standby è più conveniente rispetto alla strategia attiva, ma introduce un breve ritardo per riprendere la VM prima che accetti i carichi di lavoro.

Consigliamo questa strategia per i carichi di lavoro che possono tollerare un piccolo ritardo nella scalabilità per ottimizzare i costi.

CRD CapacityBuffer

Per configurare un buffer di capacità, crea una definizione di risorsa personalizzata (CRD) CapacityBuffer. Puoi configurare il buffer di capacità in base a diversi criteri:

  • Repliche fisse: specifica un numero fisso di pod buffer. Questa configurazione è il modo più semplice per creare un buffer di dimensioni note.
  • Basato sulla percentuale: definisci le dimensioni del buffer come percentuale di un oggetto scalabile esistente che definisce una sotto-risorsa di scalabilità (ad esempio un deployment, un StatefulSet, un ReplicaSet o un job). Le dimensioni del buffer si regolano dinamicamente man mano che il carico di lavoro di riferimento viene scalato. Non puoi definire un buffer basato sulla percentuale per i modelli di pod perché non hanno un campo replicas.
  • Limiti delle risorse: definisci la quantità totale di CPU e memoria che il buffer deve riservare. Il controller calcola il numero di pod buffer da creare in base alle richieste di risorse di un modello di pod di riferimento.

Per ulteriori informazioni, consulta la documentazione di riferimento della CRD CapacityBuffer.

Requisiti e limitazioni

I buffer di capacità presentano i seguenti requisiti e limitazioni:

  • I buffer di capacità sono disponibili per i cluster GKE che eseguono la versione 1.35.2-gke.1842000 o successive per i buffer attivi e la versione 1.35.2-gke.1842002 per i buffer di standby.
  • I buffer di capacità supportano solo i carichi di lavoro che utilizzano un modello di fatturazione basato sui nodi. I buffer di capacità non supportano i carichi di lavoro che utilizzano il modello di fatturazione basato sui pod.
  • Ti consigliamo di abilitare il provisioning automatico dei nodi nei cluster. Il provisioning automatico dei nodi consente al gestore della scalabilità automatica dei cluster di creare nuovi node pool in base alle richieste di risorse in CapacityBuffer. Se non abiliti il provisioning automatico dei nodi, il gestore della scalabilità automatica dei cluster esegue solo la scalabilità dei node pool esistenti.

I buffer di standby presentano le seguenti limitazioni aggiuntive:

Passaggi successivi