Questa pagina illustra le best practice per la creazione e l'ottimizzazione di piattaforme di elaborazione batch con Google Kubernetes Engine (GKE), incluse le best practice per:
- architettura
- Gestione job
- multitenancy
- sicurezza
- coda
- spazio di archiviazione
- prestazioni
- efficienza in termini di costi
- monitoraggio
GKE fornisce un potente framework per orchestrare i carichi di lavoro batch come l'elaborazione dei dati, l'addestramento dei modelli di machine learning, l'esecuzione di simulazioni scientifiche e altri carichi di lavoro di calcolo ad alte prestazioni.
Queste best practice sono rivolte ad amministratori di piattaforma, cloud architect e professionisti delle operazioni interessati al deployment di carichi di lavoro in batch con GKE. L'architettura di riferimento per una piattaforma di elaborazione batch su GKE mostra molte delle best practice discusse in questa guida e può essere implementata nel tuo progetto Google Cloud.
Come funzionano i carichi di lavoro batch
Un carico di lavoro batch è un gruppo di attività che vengono eseguite fino al completamento senza utente dell'intervento. Per definire le attività, utilizza la risorsa Jobs di Kubernetes. Una piattaforma batch riceve i job e li mette in coda nell'ordine di ricezione. La coda nella piattaforma batch applica la logica di elaborazione come priorità, quota e risorse allocabili. Tramite la coda personalizzando i parametri di elaborazione batch, Kubernetes ti permette di ottimizzare l'utilizzo delle risorse disponibili, ridurre al minimo il tempo di inattività per i job pianificati massimizzare i risparmi sui costi. Il seguente diagramma mostra i componenti GKE che possono far parte di una piattaforma batch.
Gestione della piattaforma batch
Tradizionalmente, le piattaforme batch hanno due principali profili utente: sviluppatori e amministratori della piattaforma:
- Uno sviluppatore invia un job specificando il programma, dati da elaborare e i requisiti per il job. Quindi, lo sviluppatore riceve la conferma dell'invio del job e un identificatore univoco. Una volta che il job viene completata, lo sviluppatore riceve una notifica insieme a qualsiasi output o risultati del job.
- Un amministratore della piattaforma gestisce e fornisce agli sviluppatori una piattaforma di elaborazione batch efficiente e affidabile.
Una piattaforma di elaborazione batch deve soddisfare i seguenti requisiti:
- Le risorse della piattaforma vengono provisionate correttamente per garantire che i job vengano eseguiti con un intervento minimo o nullo da parte dell'utente.
- Le risorse della piattaforma sono configurate in base best practice per la sicurezza e l'osservabilità.
- Le risorse della piattaforma vengono utilizzate nel modo più efficiente possibile. Nel caso di con le risorse, il lavoro più importante viene svolto per primo.
Prepara l'architettura della piattaforma batch in GKE
Un ambiente GKE è costituito da nodi, che sono Compute Engine di macchine virtuali (VM), raggruppate insieme a formare un cluster.
La tabella seguente elenca i principali suggerimenti per la pianificazione e la progettazione dell'architettura della tua piattaforma batch:
Consiglio | Risorse | |
---|---|---|
Seleziona una modalità di funzionamento di GKE |
GKE offre le seguenti modalità di funzionamento:
Consulta il confronto generale tra Autopilot e Modalità Standard. |
|
Scegli il tipo di macchina per i tuoi nodi |
GKE supporta le seguenti serie di VM di Compute Engine:
Ogni serie di macchine è associata con una o più piattaforme CPU, come processori ARM e processori x86 da Intel e AMD. Scopri le opzioni attualmente disponibili per il tuo carico di lavoro. |
|
Utilizzare gli acceleratori hardware per i nodi |
In GKE puoi anche utilizzare acceleratori hardware come le unità di elaborazione grafica (GPU) e le Tensor Processing Unit (TPU). Prendere in considerazione la strategia di condivisione del tempo della GPU, che consente più container per condividere tempo sulla stessa GPU fisica. Questo approccio è utile per carichi di lavoro GPU burstable e omogenei con richieste basse. GPU a più istanze per partizionare le GPU in modo da condividere una singola risorsa GPU su più container contemporaneamente.
|
|
Abilita il gestore della scalabilità automatica dei cluster sui cluster standard | GKE è in esecuzione ridimensiona il numero di nodi in un determinato pool di nodi in base in base alle esigenze dei tuoi carichi di lavoro. Non è necessario aggiungere o rimuovere manualmente i nodi o eseguire un provisioning eccessivo dei pool di nodi. Specifica solo la dimensione minima e massima per il pool di nodi. Ti consigliamo di impostare gestore della scalabilità automatica dei cluster con la seguente configurazione:
Con i cluster Autopilot, non devi preoccuparti del provisioning dei nodi o della gestione dei pool di nodi, perché il provisioning dei pool di nodi viene eseguito automaticamente tramite il provisioning automatico dei nodi e viene scalato automaticamente per soddisfare i requisiti dei tuoi carichi di lavoro. |
|
Registra il cluster in un canale di rilascio | GKE può gestire automaticamente la versione e gli upgrade del cluster. In base a di adozione del lancio, puoi registrare il cluster Canali disponibili di GKE.
Per ulteriori informazioni, consulta l'articolo Come per scegliere il canale di rilascio migliore per i tuoi cluster | |
Definisci un ambito di manutenzione da escludere per il tuo cluster | Con una finestra di esclusione dell'ambito dell'upgrade definita, GKE rispetta il fatto che i carichi di lavoro in batch a lunga esecuzione non subiscano interruzioni manutenzione fino al completamento.
Per scoprire di più, consulta Ambito della manutenzione da escludere. |
Gestire il ciclo di vita del job
In Kubernetes, i carichi di lavoro vengono eseguiti in un insieme Pod: Pod sono gruppi di container singoli o multipli, con spazio di archiviazione condiviso Google Cloud. I pod sono definiti da una specifica Kubernetes.
Un job crea uno o più pod e continua a riprovare a eseguirli fino a quando un numero specificato di pod non viene terminato correttamente. Man mano che i pod vengono completati, il job tiene traccia dei completamenti riusciti. Quando viene raggiunto un numero specificato di completamenti riusciti, il job è completato.
La tabella seguente elenca i principali suggerimenti durante la progettazione e la gestione Offerte di lavoro:
Consiglio | Risorse |
---|---|
Seleziona la modalità di completamento del job | Specifica il campo Completamento
come Indexed . Questa configurazione è utile per assegnare
una partizione dei dati da elaborare in base all'indice del pod. I pod
di un job ricevono un indice di completamento associato. L'eliminazione di un job comporta la pulizia
dei pod creati. La sospensione di un job elimina i relativi pod attivi finché il job non viene ripreso.
|
Impostare i CronJob per le azioni programmate regolari | Utilizza CronJob per GKE per eseguire azioni pianificate regolari, come backup, generazione di report o addestramento pianificato per i modelli di machine learning. |
Gestire gli errori in un job | Definisci il criterio di errore del pod Kubernetes e il limite di errori di backoff del pod per gestire gli errori recuperabili e non recuperabili in un job. Questa definizione migliora le risorse del cluster
evitando inutili nuovi tentativi sui pod e errori dei job dovuti a
Interruzioni dei pod. Ad esempio, puoi configurare la prerilascio,
Avviato dall'API
rimozione o basate sull'incompatibilità
l'eliminazione, in cui i pod che non hanno una tolleranza
|
Gestire più job come un'unità | Utilizza l'API JobSet per gestire
più job come un'unità per gestire i pattern di carico di lavoro, ad esempio un driver
(o un coordinatore) e più worker (ad esempio MPIJob ), impostando al contempo parametri predefinite per i job in linea con i pattern comuni in base ai tuoi casi d'uso. Ad esempio, puoi creare un job indicizzato per impostazione predefinita, creare un
servizio headless per nomi di dominio completi prevedibili (FQDN) per
Pod e impostare il criterio di errore dei pod associato. |
Estendi il tempo di esecuzione per un pod che non tollera i riavvii | Imposta
l'annotazione cluster-autoscaler.kubernetes.io/safe-to-evict
di Kubernetes su false nella specifica del pod. Il gestore della scalabilità automatica del cluster rispetta le regole di espulsione impostate sui pod. Queste limitazioni possono impedire l'eliminazione di un nodo da parte del gestore della scalabilità automatica se contiene un pod con l'annotazione cluster-autoscaler.kubernetes.io/safe-to-evict .
Per scoprire di più, consulta Pianificazione e interruzione dei pod. |
Gestisci la multitenancy
Cluster GKE multi-tenancy è un'architettura un'alternativa alla gestione da utenti o carichi di lavoro diversi, denominati risorse GKE tenants, in un singolo dell'organizzazione. La gestione delle risorse GKE potrebbe seguire criteri come l'isolamento del tenant, le quote e gli intervalli di limite o l'allocazione dei costi.
La tabella seguente elenca i principali suggerimenti per la gestione della multitenancy:
Consiglio | Risorse |
---|---|
Utilizza gli spazi dei nomi per gestire l'isolamento dei tenant | Puoi separare ogni tenant e le relative risorse Kubernetes in spazi dei nomi distinti. |
Utilizzare i criteri per applicare l'isolamento del tenant | Definisci Criteri per limitare l'accesso API, impostare le quote, limitare l'utilizzo delle risorse e limitare le azioni consentite ai container. L'ambito di questi criteri è spazi dei nomi. |
Imposta l'allocazione dei costi di GKE | Utilizza l'allocazione dei costi di GKE per ottenere informazioni sulle richieste di risorse del cluster per ciascun tenant in base allo spazio dei nomi. |
Controllo dell'accesso alla piattaforma batch
GKE ti consente di ottimizzare con precisione le autorizzazioni di accesso carichi di lavoro in esecuzione sul cluster.
La tabella seguente elenca i principali suggerimenti per la gestione degli accessi e della sicurezza
Consiglio | Risorse |
---|---|
Impostare Workload Identity Federation per GKE | GKE consente ai carichi di lavoro nel tuo cluster GKE di
rubare l'identità degli account di servizio Identity and Access Management (IAM) per accedere
ai servizi Google Cloud. Utilizzando la federazione delle identità per i carichi di lavoro per GKE, i carichi di lavoro possono accedere in modo sicuro
archiviati al di fuori di GKE.
Per ulteriori informazioni, vedi Federazione delle identità per i carichi di lavoro per GKE e accesso i secret archiviati. |
Imposta l'isolamento della rete del cluster | Utilizza cluster privati in cui sia l'endpoint del piano di controllo sia il worker
i nodi possono avere indirizzi IP interni. Puoi anche modificare l'isolamento del cluster per i cluster pubblici esistenti che utilizzano Private Service Connect.
Per saperne di più, consulta le sezioni sui cluster pubblici e sulla modifica dell'isolamento dei cluster. |
Utilizzare Shielded GKE Nodes | Configura i nodi GKE schermati in modo da fornire identità e integrità del nodo solide e verificabili, in modo da aumentare la sicurezza dei nodi GKE. |
Isolamento fisico | Per motivi di sicurezza, i tuoi carichi di lavoro potrebbero necessitano di un isolamento più forte. Controlla la pianificazione con incompatibilità dei nodi per separare fisicamente i tenant in pool di nodi utilizzando le incompatibilità dei nodi e le tolleranze dei carichi di lavoro. In questo modo viene garantito che i carichi di lavoro appropriati da pianificare sui pool di nodi. |
Coda e condivisione equa
Per controllare il consumo delle risorse, puoi assegnare limiti di quota delle risorse per ciascun tenant, accoda i job in entrata ed elabora i job nell'ordine in cui ricevuto.
La seguente tabella elenca i consigli principali per la gestione delle code e della condivisione equa tra i carichi di lavoro batch:
Consiglio | Risorse |
---|---|
Utilizzare Kueue | Kueue è un sistema di accodamento dei job nativo di Kubernetes per prestazioni batch ad alte prestazioni computing, machine learning e applicazioni simili in un cluster Kubernetes. Per contribuire alla condivisione equa delle risorse del cluster tra i propri tenant, Kueue gestisce le quote e il modo in cui i job le consumano. Kueue prende le seguenti decisioni:
Per scoprire come implementare un sistema di coda dei job con condivisione della quota tra gli spazi dei nomi su GKE, consulta Implementare un sistema di coda dei job con condivisione della quota tra gli spazi dei nomi su GKE. Per scoprire di più su Kueue, consulta i concetti di Kueuue. |
Archiviazione, prestazioni ed efficienza in termini di costi
L'uso efficiente delle nostre risorse di computing e archiviazione GKE può ridurre i costi. Una strategia consiste nel dimensionare e configurare correttamente le istanze di calcolo in base alle tue esigenze di elaborazione batch senza sacrificare le prestazioni.
La tabella seguente elenca i consigli principali per progettare e gestire lo spazio di archiviazione e ottimizzare il rendimento:
Consiglio | Risorse |
---|---|
Utilizzare i dischi permanenti di Compute Engine | Ti consigliamo di utilizzare le seguenti configurazioni dei dischi permanenti di Compute Engine:
|
Usa Network Attached Storage | Utilizza il seguente spazio di archiviazione collegato alla rete insieme a Persistent Disk per prestazioni ottimali dello spazio di archiviazione:
|
Definire Pub/Sub | Il carico di lavoro batch può anche leggere e scrivere dati. Ad esempio, puoi utilizzare Pub/Sub e scrivere i risultati in un data warehouse come BigQuery da cui report e dashboard vengono aggiornati. Ti consigliamo di utilizzare le seguenti soluzioni di archiviazione:
|
Specifica i parametri di ottimizzazione per il carico di lavoro | I nostri suggerimenti utilizzi le seguenti configurazioni:
|
Ottimizza la latenza e il networking dei carichi di lavoro | GKE supporta il criterio di posizionamento compatto per i pool di nodi che specifica che questi nodi (e quindi i carichi di lavoro in esecuzione su di essi) devono essere posizionati in una maggiore vicinanza fisica all'interno di una zona. Questo è particolarmente utile per i carichi di lavoro ad accoppiamento stretto e ad alte prestazioni in cui la latenza ridotta tra i diversi processi che compongono il carico di lavoro è un problema importante. Per saperne di più, consulta la sezione relativa al posizionamento compatto. |
Usa VM Spot | Le VM spot sono istanze di macchine virtuali (VM) Compute Engine il cui prezzo è inferiore rispetto alle VM Compute Engine standard e che non forniscono alcuna garanzia di disponibilità. Ti consigliamo di utilizzare le seguenti soluzioni:
|
Utilizzare lo streaming di immagini | Usa Immagine i flussi di dati per eseguire il pull delle immagini container. GKE invia i flussi di dati dalle immagini idonee. In questo modo, i carichi di lavoro possono essere inizializzati senza dover attendere il download dell'intera immagine, migliorando in modo significativo i tempi di inizializzazione e l'efficienza in termini di costi. |
Monitoraggio
GKE è integrato con strumenti di logging e osservabilità che ti aiutano a monitorare l'affidabilità e l'efficienza del tuo cluster. La tabella seguente elenca i suggerimenti chiave per l'abilitazione e l'utilizzo di GKE strumenti di osservabilità:
Consiglio | Risorse |
---|---|
Utilizzare Prometheus | GKE è integrato con Google Cloud Observability. Personalizza le metriche che vuoi che GKE invia a Cloud Logging e Cloud Monitoring Google Cloud Managed Service per Prometheus è abilitato per di cluster GKE per impostazione predefinita. Ti consigliamo di utilizzare la raccolta gestita per eliminare la complessità della configurazione e della gestione dei server Prometheus. Per saperne di più, vedi Managed Service per Prometheus. |
usa le dashboard di Cloud Monitoring | Utilizza le dashboard di Monitoring per GKE per una panoramica generale del cluster utilizzo dei dati, visualizzare in dettaglio e filtrare vari metriche e dimensioni. Per scoprire di più, consulta la sezione Osservazione per i tuoi cluster GKE. |
Passaggi successivi
- Scopri come eseguire il deployment di un sistema batch utilizzando Kueue
- Consulta le best practice per l'esecuzione di applicazioni Kubernetes con ottimizzazione dei costi su GKE