View a markdown version of this page

Gestisci i dispositivi hardware su Amazon EKS - Amazon EKS

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. DRA non è attualmente supportato con EKS Auto Mode. DRA offre una selezione più completa dei dispositivi, una pianificazione basata sulla topologia e funzionalità di condivisione dei dispositivi che non sono possibili con i plug-in dei dispositivi.

Fai riferimento alla documentazione di Kubernetes per l'allocazione https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/ dinamica delle risorse e ai plug-in dei dispositivi per informazioni generali su queste due funzionalità di Kubernetes. https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/

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 ComputeDomains EC2 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/gpu estese 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/neuroncore aws.amazon.com/neuron Scopre 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 dei ResourceClaim dispositivi (ResourceClaimTemplate,). resource.limits resource.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. resourceClaimName A ResourceClaim ha 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 stessoResourceClaim, 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 ResourceClaim quando 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 ResourceClaimTemplate definisce un modello che Kubernetes utilizza per generare automaticamente un modello univoco ResourceClaim per ogni Pod. Lo si fa riferimento in una specifica Pod utilizzando il campo. resourceClaimTemplateName Di per ResourceClaimTemplate sé non è legato a nessun Pod: è un modello riutilizzabile che persiste indipendentemente. A ResourceClaimTemplate ha le seguenti caratteristiche:

  • Kubernetes ne crea uno nuovo ResourceClaim per 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, ResourceClaim viene eliminato anche il generatore associato. Il Pod ResourceClaimTemplate stesso non viene alterato e continua a generare nuove richieste per i Pod futuri.

    Usa a ResourceClaimTemplate quando ogni Pod di un carico di lavoro necessita di dispositivi dedicati con configurazioni simili. Ad esempio, usa un ResourceClaimTemplate for 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 ResourceClaim è associato al Pod che ne ha attivato la creazione.

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

resourceClaimName

resourceClaimTemplateName

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

Argomenti