Informazioni sui buffer di capacità

I buffer di capacità ti aiutano a ridurre la latenza di avvio dei pod per i tuoi carichi di lavoro 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 conveniente.

Questo documento spiega come funzionano i buffer di capacità. Per scoprire come attivare 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à pre-provisioning progettata per lo scaling 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 pre-provisioning.

I buffer di capacità offrono i seguenti vantaggi:

  • Riduzione al minimo della latenza di scalabilità: i buffer attivi forniscono VM in esecuzione, il che contribuisce a ridurre al minimo la latenza. I buffer di standby riprendono rapidamente, fornendo una disponibilità di capacità più rapida rispetto ai nodi nuovi.
  • Overprovisioning conveniente: 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 overprovisioning (ad esempio, l'abbassamento dei target di utilizzo di HorizontalPodAutoscaler (HPA)), che può aumentare la capacità inattiva in modo lineare man mano che il cluster cresce.
  • Soddisfare i requisiti del workload: hai il controllo completo delle 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 preliminare del carico di lavoro in base alle tue esigenze.

Consigliamo buffer di capacità per i workload sensibili alla latenza che richiedono uno scale up rapido, come agenti AI, inferenza AI, applicazioni di vendita al dettaglio durante eventi di vendita o server di gioco durante i picchi di attività dei giocatori.

Non consigliamo buffer di capacità per i workload che non sono sensibili alla latenza di avvio, ad esempio i job di elaborazione batch. Per questi workload, l'overprovisioning 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 del cluster GKE monitora le risorse CapacityBuffer e le considera come domanda in attesa per garantire che sia disponibile capacità di riserva. Se il cluster non ha capacità sufficiente per soddisfare le richieste di risorse definite nel buffer, il gestore della scalabilità automatica del cluster esegue il provisioning di nodi aggiuntivi.

Quando un workload ad alta priorità viene scalato, GKE lo pianifica immediatamente 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 del cluster esegue il provisioning di un nuovo nodo per riempire il buffer.

Strategie di buffer della capacità

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

Buffer attivo

Un buffer attivo fornisce VM in esecuzione per lo scaling 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à verticale.

Consigliamo questa strategia per i carichi di lavoro critici in cui il tempo di scalabilità verticale è 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 workload che possono tollerare un leggero ritardo nello scaling per ottimizzare i costi.

CRD CapacityBuffer

Per configurare un buffer di capacità, crea una CustomResourceDefinition (CRD) CapacityBuffer. Puoi configurare il buffer di capacità in modo che soddisfi criteri diversi:

  • 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 la dimensione del buffer come percentuale di un oggetto scalabile esistente che definisce una risorsa secondaria di scalabilità (ad esempio Deployment, StatefulSet, ReplicaSet o Job). La dimensione del buffer viene regolata in modo dinamico man mano che viene scalato il carico di lavoro di riferimento. Non puoi definire un buffer basato sulla percentuale per i modelli Pod perché non hanno un campo repliche.
  • 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 saperne di più, consulta la documentazione di riferimento del 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 attivare il provisioning automatico dei nodi sui tuoi 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 nel buffer di capacità. Se non abiliti il provisioning automatico dei nodi, il gestore della scalabilità automatica del cluster esegue solo lo scale up dei pool di nodi esistenti.

I buffer di standby presentano le seguenti limitazioni aggiuntive:

Passaggi successivi