Contribuisci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Gestisci i dispositivi hardware su Amazon EKS
Amazon EKS supporta due meccanismi Kubernetes per la gestione di dispositivi hardware specializzati nei cluster EKS: Dynamic Resource Allocation (DRA) e plug-in di dispositivo. Entrambi i meccanismi consentono ai carichi di lavoro di accedere ad acceleratori hardware come GPU NVIDIA e chip AWS Trainium e a dispositivi di rete ad alte prestazioni come Elastic Fabric Adapter (EFA).
Consigliamo di utilizzare i driver DRA per le nuove implementazioni con Kubernetes versioni 1.34 e successive quando si utilizza il provisioning della capacità statica in Karpenter, gruppi di nodi gestiti da EKS o nodi autogestiti.
Fai riferimento alla documentazione di Kubernetes per l'allocazione https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/
Allocazione dinamica delle risorse rispetto ai plug-in dei dispositivi
I plug-in dei dispositivi Kubernetes sono stati il meccanismo principale per esporre hardware specializzato ai carichi di lavoro Kubernetes. I plug-in per dispositivi pubblicizzano i dispositivi come risorse estese (ad esempio, nvidia.com/gpu oaws.amazon.com/neuroncore) richieste dall'utente nelle richieste e nei limiti delle risorse del contenitore. Sebbene i plug-in dei dispositivi siano ampiamente supportati e utilizzati, presentano delle limitazioni:
-
I dispositivi vengono richiesti come conteggi interi opachi senza filtri basati sugli attributi.
-
Nessun supporto per la condivisione dei dispositivi tra contenitori o pod.
-
Nessuna allocazione espressiva basata sulla topologia tra i tipi di dispositivi.
-
Le estensioni di pianificazione personalizzate sono spesso necessarie per un posizionamento intelligente.
La Dynamic Resource Allocation (DRA) è una funzionalità di Kubernetes resa generalmente disponibile nella versione 1.34 di Kubernetes che risolve queste limitazioni. Con DRA, i driver di dispositivo pubblicano ricchi attributi di dispositivo nello scheduler Kubernetes tramite oggetti. ResourceSlice I dispositivi richiedono l'utilizzo di oggetti ResourceClaim e ResourceClaimTemplate che fanno riferimento a categorie. DeviceClass
DRA consente:
-
Attribute-based selezione del dispositivo mediante espressioni CEL (
Common Expression Language). -
Topology-aware allocazione che garantisce che i dispositivi siano collocati nello stesso switch PCIe o nello stesso dominio NUMA.
-
Condivisione dei dispositivi tra più contenitori o pod tramite riferimenti condivisi.
ResourceClaim -
Partizionamento dinamico e condivisione delle GPU NVIDIA quando si utilizza MIG o time-slicing
Driver DRA per Amazon EKS
I seguenti driver DRA sono comunemente usati per gestire dispositivi hardware specializzati nei cluster Amazon EKS.
- Driver NVIDIA DRA
-
Il driver NVIDIA DRA per GPU
on GitHub consente l'allocazione flessibile e la configurazione dinamica delle GPU NVIDIA. Consulta Usa il driver o il plug-in del dispositivo NVIDIA DRA su Amazon EKS per informazioni sulla gestione delle GPU con il driver NVIDIA DRA e Utilizzo P6e-GB200 UltraServers con Amazon EKS per informazioni sull'utilizzo di carichi di lavoro NVLink (MNNVL) con istanze ComputeDomainsEC2 Multi-Node . Grace-Blackwell - Driver EFA DRA
-
Il driver EFA DRA (DRANET attivo GitHub) gestisce l'allocazione dei dispositivi Elastic Fabric Adapter (EFA) con una pianificazione basata
sulla topologia che accoppia le interfacce EFA con le relative GPU o dispositivi Neuron topologicamente locali e supporta la condivisione dei dispositivi tra pod. Per ulteriori informazioni, consulta Gestisci i dispositivi EFA su Amazon EKS. - Driver Neuron DRA
-
Il driver Neuron DRA gestisce l'allocazione dei dispositivi AWS Trainium e AWS Inferentia2 con pianificazione basata sulla topologia, allocazione dei sottoinsiemi di dispositivi connessi e configurazione logica (LNC), senza richiedere estensioni di pianificazione personalizzate. NeuronCore Per ulteriori informazioni, consulta Gestisci i dispositivi Neuron su Amazon EKS.
Plugin di dispositivo per Amazon EKS
I seguenti plug-in di dispositivo sono comunemente usati per gestire dispositivi hardware specializzati nei cluster Amazon EKS.
- Plugin per dispositivi NVIDIA
-
Il plug-in per dispositivi NVIDIA
su GitHub pubblicizza le GPU NVIDIA come risorse nvidia.com/gpuestese e monitora lo stato delle GPU. - Plugin per dispositivi EFA
-
Il plug-in per dispositivi EFA rileva tutti i dispositivi EFA disponibili su ciascun nodo e pubblicizza i dispositivi EFA come risorse estese.
vpc.amazonaws.com/efa - Plugin per dispositivi Neuron
-
Il plug-in del dispositivo Neuron
espone l'hardware e le risorse estese di Neuron. aws.amazon.com/neuroncoreaws.amazon.com/neuronScopre i dispositivi Neuron disponibili su ogni nodo, li pubblicizza come risorse allocabili e ne gestisce il ciclo di vita.
Considerazioni
Prima di utilizzare i driver DRA su Amazon EKS, esamina le seguenti considerazioni:
-
DRA è disponibile su Amazon EKS con Kubernetes versione 1.33 e successive, ma è consigliato per le versioni di Kubernetes 1.34 e successive a causa di un problema relativo a Kubernetes a monte. https://github.com/kubernetes/kubernetes/issues/133920
GitHub Il piano di controllo del cluster e i nodi devono eseguire una versione di Kubernetes che supporti DRA. -
DRA non è attualmente compatibile con EKS Auto Mode.
-
DRA non è attualmente compatibile con Karpenter quando si utilizza la capacità fornita dinamicamente. È necessario utilizzare il provisioning statico della capacità in Karpenter o i gruppi di nodi gestiti da EKS o i nodi autogestiti con driver DRA.
-
I driver DRA e i plug-in di dispositivo per lo stesso tipo di dispositivo non devono essere eseguiti contemporaneamente sullo stesso nodo. Disinstalla il plug-in del dispositivo prima di installare il driver DRA corrispondente o distribuiscili su nodi separati. L'esecuzione del driver DRA e del plug-in del dispositivo per lo stesso dispositivo sullo stesso nodo può causare una sottoscrizione invisibile dei dispositivi hardware sottostanti.
-
DRA utilizza risorse API Kubernetes diverse (,,
DeviceClass) rispetto ai plug-in deiResourceClaimdispositivi (ResourceClaimTemplate,).resource.limitsresource.requestsÈ possibile utilizzare DRA per gestire le risorse estese del plug-in del dispositivo senza modificare le specifiche del carico di lavoro. Per ulteriori informazioni sulle risorse estese in DRA, consulta la documentazione di Kubernetes sul sito Web di Kubernetes. -
I driver DRA per NVIDIA, EFA e Neuron sono compatibili sia con le AMI AL2023 che con le AMI Bottlerocket. EKS-optimized Se utilizzi il driver NVIDIA DRA con Bottlerocket, disabilita il plug-in del dispositivo NVIDIA incluso nelle varianti NVIDIA Bottlerocket.
-
I plug-in dei dispositivi rimangono completamente supportati per tutte le versioni di Kubernetes.
ResourceClaim DRA vs. ResourceClaimTemplate
Quando si utilizza DRA, si richiedono dispositivi tramite ResourceClaim o ResourceClaimTemplate oggetti. Questi due tipi di risorse hanno scopi diversi e hanno comportamenti diversi nel ciclo di vita.
- ResourceClaim
-
A
ResourceClaimè un oggetto Kubernetes denominato che crei indipendentemente da qualsiasi Pod. Lo si fa riferimento in una specifica Pod per nome utilizzando il campo.resourceClaimNameAResourceClaimha le seguenti caratteristiche:-
Deve esistere nel cluster prima che venga creato qualsiasi Pod che vi fa riferimento. Se il reclamo non esiste, il Pod rimane in sospeso.
-
Persiste finché non lo elimini esplicitamente, indipendentemente dal fatto che i Pod vi facciano riferimento.
-
Più Pod possono fare riferimento allo stesso
ResourceClaim, il che consente la condivisione dei dispositivi. Tutti i Pod che fanno riferimento alla stessa dichiarazione condividono l'accesso agli stessi dispositivi allocati e sono programmati sullo stesso nodo.Usa a
ResourceClaimquando hai bisogno di più Pod per condividere l'accesso agli stessi dispositivi o quando hai bisogno che un claim esista oltre la durata di un singolo Pod.
-
- ResourceClaimTemplate
-
A
ResourceClaimTemplatedefinisce un modello che Kubernetes utilizza per generare automaticamente un modello univocoResourceClaimper ogni Pod. Lo si fa riferimento in una specifica Pod utilizzando il campo.resourceClaimTemplateNameDi perResourceClaimTemplatesé non è legato a nessun Pod: è un modello riutilizzabile che persiste indipendentemente. AResourceClaimTemplateha le seguenti caratteristiche:-
Kubernetes ne crea uno nuovo
ResourceClaimper ogni Pod che fa riferimento al modello. Ogni Pod ha il proprio set separato di dispositivi. -
Ogni generatore
ResourceClaimè legato al ciclo di vita del Pod che ne ha innescato la creazione. Quando il Pod viene eliminato,ResourceClaimviene eliminato anche il generatore associato. Il PodResourceClaimTemplatestesso non viene alterato e continua a generare nuove richieste per i Pod futuri.Usa a
ResourceClaimTemplatequando ogni Pod di un carico di lavoro necessita di dispositivi dedicati con configurazioni simili. Ad esempio, usa unResourceClaimTemplatefor Pods in a Job che utilizza l'esecuzione parallela in cui ogni Pod necessita della propria GPU o dei propri dispositivi EFA.
-
La tabella seguente riassume le differenze tra e. ResourceClaim ResourceClaimTemplate
| Comportamento | ResourceClaim | ResourceClaimTemplate |
|---|---|---|
|
Creazione |
Lo crei manualmente prima che Pod vi faccia riferimento |
Kubernetes genera automaticamente un reclamo per Pod |
|
Ciclo di vita |
Persiste finché non lo elimini |
Il modello persiste finché non viene eliminato. Ogni elemento generato |
|
Condivisione del dispositivo tra pod |
Supportato. Più Pod possono fare riferimento alla stessa dichiarazione. |
Non supportato. Ogni Pod riceve un reclamo separato. |
|
Campo delle specifiche del pod |
|
|
Per esempi di utilizzo di ResourceClaim oggetti per condividere dispositivi EFA tra Pod, vedi. Condividi i dispositivi EFA tra più pod Per esempi di utilizzo di ResourceClaimTemplate oggetti con allocazione basata sulla topologia, vedere. Topology-aware EFA e GPU/Neuron allocazione dei dispositivi