Best practice per l'esecuzione di carichi di lavoro batch su GKE


Questa pagina introduce 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
  • accodamento
  • spazio di archiviazione
  • prestazioni
  • efficienza in termini di costi
  • monitoraggio

GKE fornisce un framework potente per l'orchestrazione di dati batch come l'elaborazione dei dati, di addestramento dei modelli di machine learning, esecuzione di simulazioni scientifiche, e altri carichi di lavoro per computing ad alte prestazioni.

Queste best practice sono rivolte agli amministratori di piattaforma, ai 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 mette in mostra molte delle best practice descritte in questa guida e può essere implementato 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à, utilizzi lo strumento Kubernetes Risorsa Job. Una piattaforma batch riceve i job e li accoda nella nell'ordine di arrivo. La coda nella piattaforma batch applica l'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 Componenti GKE che possono far parte di una piattaforma batch.

Gestione della piattaforma batch

Tradizionalmente, le piattaforme batch hanno due utenti tipo principali: sviluppatori per gli 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 di piattaforma gestisce e fornisce un batch efficiente e affidabile di elaborazione dei dati per gli sviluppatori.

Una piattaforma di elaborazione batch deve soddisfare i seguenti requisiti:

  • Viene eseguito il provisioning corretto delle risorse della piattaforma per garantire l'esecuzione dei job 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à operativa GKE

GKE offre le seguenti modalità operative:

  • Con la modalità Autopilot, GKE gestisce automaticamente la configurazione del cluster, inclusi nodi, scalabilità, sicurezza e altre impostazioni preconfigurate, in modo da poterti concentrare sul tuo carico di lavoro. I cluster Autopilot sono ad alta disponibilità per impostazione predefinita.
  • Con la modalità Standard, definisci e gestisci il tuo cluster configurazione, inclusi nodi, scalabilità, sicurezza e altre impostazioni.

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:

  • Ottimizzazione dei costi, ad esempio E2
  • Bilanciata, ad esempio N2, N2D o N1
  • Ottimizzato per lo scale out, ad esempio Tau T2D o Tau T2A
  • Ottimizzate per la memoria, come M2 o M1
  • Ottimizzato per il calcolo, ad esempio C2 o C2D
  • Ottimizzati per l'acceleratore, come A2 con GPU NVIDIA A100, G2 con GPU NVIDIA L4, A3 con GPU NVIDIA H100 (disponibili in anteprima privata).

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.

Utilizza acceleratori hardware per i nodi

Puoi anche usare acceleratori hardware, come l'elaborazione grafica. (GPU) e le TPU (Tensor Processing Unit) in GKE. 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. Multiistanza GPU per eseguire il partizionamento delle GPU in modo da condividere una singola risorsa GPU tra più dei 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 nodi o l'overprovisioning dei pool di nodi. Devi invece specificare solo la dimensione minima e la dimensione massima per il pool di nodi.

Ti consigliamo di impostare gestore della scalabilità automatica dei cluster con la seguente configurazione:

  • Utilizza le funzionalità di Profilo optimize-utilization che rimuove i nodi inutilizzati tre volte più veloce rispetto al profilo bilanciato. Per apprendere consulta la sezione Scalabilità automatica profili.
  • Imposta il criterio di località su ANY. La Il gestore della scalabilità automatica dei cluster GKE dà la priorità all'utilizzo dei cluster le prenotazioni e creare nodi in qualsiasi zona disponibile nelle regioni. A per saperne di più, consulta Posizione .
  • Abilita il provisioning automatico dei nodi per gestire automaticamente e scalare automaticamente l'infrastruttura. Dopo aver creato un pool di nodi utilizzando il provisioning automatico, il gestore della scalabilità automatica dei cluster pool di nodi. Per ulteriori informazioni, consulta l'articolo Come il provisioning automatico dei nodi.

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 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 saperne di più, consulta Ambito di 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 uno o più container, con spazio di archiviazione e rete condivisi Google Cloud. I pod sono definiti da una specifica Kubernetes.

Un job crea uno o più pod e continua a riprovare a eseguirli fino all'arresto di un determinato numero di pod. Come pod completato, il job monitora i completamenti riusciti. Quando viene definito vengono raggiunti i 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 quando assegni una partizione dei dati da elaborare in base all'indice del pod. I pod di un job viene assegnato un indice di completamento. L'eliminazione di un job ripulisce ai pod che ha creato. La sospensione di un job elimina i relativi pod attivi finché Il job è ripreso di nuovo.
Impostare CronJob per azioni pianificate regolari Utilizza CronJob per GKE per eseguire azioni pianificate regolari, come backup, generazione di report o addestramento pianificato per i modelli di machine learning.
Gestione degli errori in un job Definire l'errore del pod di Kubernetes del criterio e il limite di errori di backoff dei pod per gestire le risorse recuperabili e non recuperabili errori 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 tramite API rimozione o basate sull'incompatibilità l'eliminazione, in cui i pod che non hanno una tolleranza L'effetto di incompatibilità NoEsecuzione viene rimosso. Scopri come gestire errori dei pod recuperabili e non ripristinabili con il criterio di errore dei pod.
Gestire più job come unità Utilizza l'API JobSet per gestire più job come unità per gestire i pattern dei carichi di lavoro, ad esempio un singolo driver (o coordinatore) e più worker (ad esempio, MPIJob) durante l'impostazione Impostazioni predefinite del job in linea con i pattern comuni in base al tuo utilizzo d'uso diversi. Ad esempio, puoi creare un job indicizzato per impostazione predefinita, creare un servizio headless per nomi di dominio completi prevedibili 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'oggetto cluster-autoscaler.kubernetes.io/safe-to-evict di Kubernetes su false nella specifica del pod. Il cluster il gestore della scalabilità automatica rispetta le regole di eliminazione impostate sui pod. Queste restrizioni possono impedisce che un nodo venga eliminato dal gestore della scalabilità automatica se contiene un pod con Annotazione cluster-autoscaler.kubernetes.io/safe-to-evict.

Per saperne di più, consulta Valutare la pianificazione e l'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 tenant, in un singolo dell'organizzazione. La gestione delle risorse GKE può seguire come l'isolamento dei tenant, le quote e gli intervalli di limiti 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 nei rispettivi spazi dei nomi.
Usa i criteri per applicare l'isolamento dei 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 GKE l'allocazione dei costi consente di ottenere insight sulle richieste di risorse cluster per 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
Imposta federazione delle identità per i carichi di lavoro per GKE GKE consente ai carichi di lavoro nel tuo cluster GKE di impersonare account di servizio Identity and Access Management (IAM) per accedere 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 il 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.

Utilizza nodi GKE schermati 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 pianificazione con incompatibilità dei nodi per separare fisicamente i tenant 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.

Accodamento 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 tabella seguente elenca i principali suggerimenti per la gestione delle code e equa condivisione tra i carichi di lavoro batch:

Consiglio Risorse
Utilizza 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. A per un'equa condivisione delle risorse dei cluster tra i tenant, Kueue gestisce le quote e come vengono consumate dai job. Kueue prende le seguenti decisioni:

  • Quando un job deve attendere
  • Quando deve essere consentito l'avvio di un job, ad esempio creando il pod
  • Quando è necessario prerilasciare un job, ad esempio eliminando il pod

Per informazioni su come implementare un sistema di accodamento dei job, vedi Implementare un sistema di accodamento 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 le istanze di calcolo in modo che siano allineate al tuo batch di elaborazione senza sacrificare le prestazioni.

La tabella seguente elenca i principali suggerimenti durante la progettazione e la gestione spazio di archiviazione e ottimizzazione delle prestazioni:

Consiglio Risorse
Utilizzo dei dischi permanenti di Compute Engine

Ti consigliamo di utilizzare le seguenti configurazioni di dischi permanenti di Compute Engine:

Usa Network Attached Storage

Utilizza le funzionalità di il seguente Network Attached Storage insieme a Persistent Disk per prestazioni di archiviazione ottimali:

  • Utilizza Filestore per consentire a tutti i nodi worker in un pod di e accedere allo stesso spazio dei nomi di archiviazione e alla stessa capacità di scalabilità.
  • Utilizza Cloud Storage FUSE per accedere a Cloud Storage direttamente da un container come montaggio POSIX locale.
Definisci 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:

  • Per l'archiviazione di oggetti gestita, usa Cloud Storage.
  • Per i dispositivi gestiti l'archiviazione di file di rete, utilizza Filestore.
  • Per i carichi di lavoro che richiedono la semantica del file system, utilizza Cloud Storage FUSE driver CSI. Questo driver consente alle applicazioni Kubernetes di montare Bucket Cloud Storage come file system locali
Specifica i parametri di ottimizzazione per il carico di lavoro

I nostri suggerimenti utilizzi le seguenti configurazioni:

  • Personalizza il nodo configurazione di sistema per il carico di lavoro. Ad esempio, imposta il minimo, i valori predefiniti e i valori massimi del buffer di ricezione del socket TCP. Usa nodo configurazione di sistema.
  • Abilita polling delle informazioni sulla rete occupato profili. Alcuni carichi di lavoro sensibili alla latenza di rete è migliorato. Utilizza profili di rete.
  • Aumenta la larghezza di banda della rete per Nodi GKE abilitando Google Virtual NIC (gVNIC), un'interfaccia di rete virtuale progettata appositamente per Compute Engine consigliato per applicazioni ad alte prestazioni.
  • Specifica il numero di thread per core da disabilitare Simultanea multi-threading.
Ottimizza il networking e la latenza 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 fisicamente vicini l'uno all'altro all'interno di una zona. Ciò è particolarmente utile per prestazioni ad alto accoppiamento carichi di lavoro con bassa latenza tra i diversi processi che comprendono è una delle principali preoccupazioni. Per ulteriori informazioni, consulta la sezione compact posizionamento.
Usa VM Spot

Le VM spot Istanze di macchine virtuali (VM) Compute Engine a prezzi rispetto alle VM standard di Compute Engine e non forniscono alcuna garanzia la disponibilità del servizio.

Ti consigliamo di utilizzare le seguenti soluzioni:

  • Imposta i pool di nodi delle VM spot con scalabilità automatica combinati con location_policy= "ANY" . Con questo criterio, le VM spot hanno un rischio inferiore prerilascio. Questa combinazione è particolarmente utile per i carichi di lavoro che possono sopravvivere al prerilascio di singoli nodi worker, come calcoli piacevolmente paralleli.
  • Se il carico di lavoro ha una disponibilità di risorse, puoi combinare Google Cloud Prenotazioni e impegno di utilizzo possono generare risparmi significativi. Crea un pool di nodi con il suo impostata sul numero di istanze prenotate e dare priorità alla saturazione questo pool di nodi per l'utilizzo massimo.
Utilizza lo streaming di immagini

Usa Immagine i flussi di dati per eseguire il pull delle immagini container. GKE trasmette i flussi di dati da immagini idonee. Ciò consente di inizializzare i carichi di lavoro senza attendere il download dell'intera immagine, con un conseguente aumento significativo migliori tempi di inizializzazione e maggiore efficienza in termini di costi.

Monitoraggio

GKE è integrato con strumenti di osservabilità e logging che aiutano per monitorare l'affidabilità e l'efficienza del 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 Osservabilità di Google Cloud. Personalizza le metriche che vuoi che GKE inviare a Cloud Logging e Cloud Monitoring

Google Cloud Managed Service per Prometheus è abilitato per di cluster GKE per impostazione predefinita. Me di utilizzare la raccolta gestita per eliminare la complessità durante la configurazione e la 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