Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Gerenciar dispositivos de hardware no Amazon EKS
O Amazon EKS oferece suporte a dois mecanismos do Kubernetes para gerenciar dispositivos de hardware especializados em clusters do EKS: Alocação dinâmica de recursos (DRA) e plug-ins de dispositivos. Ambos os mecanismos permitem que as workloads acessem aceleradores de hardware, como GPUs NVIDIA e chips AWS Trainium, e dispositivos de rede de alta performance, como o Elastic Fabric Adapter (EFA).
Recomendamos usar drivers DRA para novas implantações com as versões 1.34 e posteriores do Kubernetes ao usar o provisionamento de capacidade estática
Consulte a documentação do Kubernetes sobre Alocação dinâmica de recursos
Alocação dinâmica de recursos x plug-ins de dispositivos
Os plug-ins de dispositivos do Kubernetes têm sido o principal mecanismo para integrar hardware especializado às workloads do Kubernetes. Os plug-ins de dispositivos anunciam os dispositivos como recursos estendidos (por exemplo, nvidia.com/gpu ou aws.amazon.com/neuroncore) que você solicita nas solicitações e limites de recursos do contêiner. Embora os plug-ins de dispositivos sejam amplamente compatíveis e utilizados, eles apresentam algumas limitações:
-
Os dispositivos são solicitados como contagens inteiras opacas, sem filtragem baseada em atributos.
-
Não há suporte para o compartilhamento de dispositivos entre contêineres ou Pods.
-
Não há alocação expressiva que leve em conta a topologia entre os diferentes tipos de dispositivos.
-
Extensões personalizadas do agendador são frequentemente necessárias para uma colocação inteligente.
A Alocação dinâmica de recursos (DRA) é um recurso do Kubernetes disponibilizado para o público em geral na versão 1.34 do Kubernetes, que resolve essas limitações. Com o DRA, os drivers de dispositivos publicam atributos detalhados dos dispositivos para o agendador do Kubernetes por meio de objetos ResourceSlice. Você solicita dispositivos usando objetos ResourceClaim e ResourceClaimTemplate que fazem referência a categorias DeviceClass.
O DRA permite:
-
Seleção de dispositivos com base em atributos utilizando expressões Common Expression Language (CEL)
. -
Alocação sensível à topologia que garante que os dispositivos fiquem localizados no mesmo switch PCIe ou domínio NUMA.
-
Compartilhamento de dispositivos entre vários contêineres ou Pods por meio de referências
ResourceClaimcompartilhadas. -
Particionamento dinâmico e compartilhamento de GPUs da NVIDIA ao usar o MIG ou o fatiamento de tempo
Drivers DRA para o Amazon EKS
Os seguintes drivers DRA são comumente usados para gerenciar dispositivos de hardware especializados em clusters do Amazon EKS.
- Driver de DRA da NVIDIA
-
O driver NVIDIA DRA para GPUs
no GitHub permite alocação flexível e configuração dinâmica de GPUs da NVIDIA. Consulte Usar o plug-in de dispositivo ou driver do NVIDIA DRA no Amazon EKS para obter informações sobre o gerenciamento de GPUs com o driver NVIDIA DRA e Uso do P6e-GB200 UltraServers com o Amazon EKS para obter informações sobre o uso de ComputeDomainspara workloads Multi-Node NVLink (MNNVL) com instâncias Grace-Blackwell do EC2. - Driver de DRA do EFA
-
O driver de EFA DRA (DRANET
no GitHub) gerencia a alocação de dispositivos do Elastic Fabric Adapter (EFA) com agendamento com reconhecimento de topologia que emparelha interfaces do EFA com GPUs ou com dispositivos do Neuron topologicamente locais, e fornece suporte para o compartilhamento de dispositivos entre pods. Para obter mais informações, consulte Gerenciar dispositivos EFA no Amazon EKS. - Driver Neuron DRA
-
O driver Neuron DRA gerencia a alocação de dispositivos AWS Trainium e AWS Inferentia2 por meio do agendamento com reconhecimento de topologia, alocação de subconjuntos de dispositivos conectados e configuração do NeuronCore lógico (LNC), sem a necessidade de extensões personalizadas do agendador. Para obter mais informações, consulte Gerenciar dispositivos Neuron no Amazon EKS.
Plug-ins de dispositivos para o Amazon EKS
Os seguintes plug-ins de dispositivo são comumente usados para gerenciar dispositivos de hardware especializados em clusters do Amazon EKS.
- Plug-in de dispositivo NVIDIA
-
O plug-in de dispositivo da NVIDIA
no GitHub apresenta as GPUs da NVIDIA como recursos estendidos nvidia.com/gpue monitora a integridade das GPUs. - Plug-in de dispositivo do EFA
-
O plug-in do dispositivo EFA detecta todos os dispositivos EFA disponíveis em cada nó e os anuncia como recursos estendidos
vpc.amazonaws.com/efa. - Plug-in do dispositivo Neuron
-
O plug-in do dispositivo Neuron
expõe o hardware Neuron como recursos estendidos aws.amazon.com/neuroncoreeaws.amazon.com/neuron. Ele detecta os dispositivos Neuron disponíveis em cada nó, os anuncia como recursos alocáveis e gerencia seu ciclo de vida.
Considerações
Antes de usar drivers DRA no Amazon EKS, analise as seguintes considerações:
-
O DRA está disponível no Amazon EKS com o Kubernetes, versão 1.33 e superior, mas é recomendado para as versões 1.34 e posteriores do Kubernetes devido a um problema no Kubernetes
upstream no GitHub. O ambiente de gerenciamento e os nós do seu cluster devem estar executando uma versão do Kubernetes compatível com o DRA. -
No momento, o DRA não é compatível com o Modo Automático do EKS.
-
No momento, o DRA não é compatível com o Karpenter ao usar a capacidade provisionada dinamicamente. Você deve usar provisionamento de capacidade estática no Karpenter, grupos de nós gerenciados pelo EKS ou nós autogerenciados com drivers DRA.
-
Os drivers DRA e os plug-ins de dispositivo para o mesmo tipo de dispositivo não devem ser executados simultaneamente no mesmo nó. Desinstale o plug-in do dispositivo antes de instalar o driver DRA correspondente ou realize a implantação em nós separados. A execução do driver DRA e do plug-in de dispositivo para o mesmo dispositivo no mesmo nó pode causar uma sobrescrição silenciosa dos dispositivos de hardware subjacentes.
-
O DRA utiliza diferentes recursos da API do Kubernetes (
ResourceClaim,ResourceClaimTemplate,DeviceClass) em vez de plug-ins de dispositivos (resource.limits,resource.requests). Você pode usar o DRA para gerenciar os recursos estendidos do plug-in de dispositivo sem alterar as especificações da workload. Para obter mais informações sobre o recursos estendidos no DRA, consulte a documentação do Kubernetesno site do Kubernetes. -
Os drivers DRA para NVIDIA, EFA e Neuron são compatíveis com as AMIs AL2023 e Bottlerocket otimizadas para EKS. Se você estiver usando o driver NVIDIA DRA com o Bottlerocket, desabilite o plug-in de dispositivo da NVIDIA incluído nas variantes NVIDIA do Bottlerocket.
-
Os plug-ins de dispositivos continuam sendo totalmente compatíveis com todas as versões do Kubernetes.
Comparação entre ResourceClaim e ResourceClaimTemplate na DRA
Ao usar a DRA, a solicitação de dispositivos é feita por meio dos objetos ResourceClaim ou ResourceClaimTemplate. Esses dois tipos de recursos atendem a finalidades distintas e têm comportamentos de ciclo de vida diferentes.
- ResourceClaim
-
O
ResourceClaimé um objeto nomeado do Kubernetes criado de forma independente de qualquer pod. Você o referencia em uma especificação de pod pelo nome usando o camporesourceClaimName. UmResourceClaimtem as seguintes características:-
Ele deve existir no cluster antes da criação de qualquer pod que o referencie. Caso a solicitação não exista, o pod permanecerá em um estado pendente.
-
O objeto permanece ativo até ser explicitamente excluído por você, independentemente de estar sendo referenciado por algum pod.
-
Vários pods podem referenciar o mesmo
ResourceClaim, viabilizando o compartilhamento de dispositivos. Todos os pods que referenciam a mesma solicitação compartilham o acesso aos mesmos dispositivos alocados e são obrigatoriamente agendados no mesmo nó.Use um
ResourceClaimquando você precisar que diversos pods compartilhem o acesso aos mesmos dispositivos ou quando a solicitação precisar persistir além do ciclo de vida de um único pod.
-
- ResourceClaimTemplate
-
O
ResourceClaimTemplatedefine um modelo que o Kubernetes usa para gerar automaticamente umResourceClaimexclusivo para cada pod. Você o referencia em uma especificação de pod usando o camporesourceClaimTemplateName. OResourceClaimTemplateem si não está vinculado a nenhum pod. Ele é um modelo reutilizável que persiste de forma independente. UmResourceClaimTemplatetem as seguintes características:-
O Kubernetes cria um novo
ResourceClaimpara cada pod que faça referência ao modelo. Isso garante que cada pod receba o próprio conjunto de dispositivos dedicados. -
Cada
ResourceClaimgerado fica vinculado ao ciclo de vida do pod que deu origem à sua criação. Com a exclusão do pod, oResourceClaimgerado e associado também é excluído. OResourceClaimTemplateem si não é afetado e continua a gerar novas solicitações para pods futuros.Use um
ResourceClaimTemplateem situações nas quais cada pod em uma workload precisa de dispositivos dedicados com configurações semelhantes. Por exemplo, use umResourceClaimTemplatepara pods em um trabalho de execução paralela no qual cada pod necessita dos próprios dispositivos de GPU ou de EFA.
-
A tabela a seguir resume as diferenças entre o ResourceClaim e o ResourceClaimTemplate.
| Comportamento | ResourceClaim | ResourceClaimTemplate |
|---|---|---|
|
Criação |
Você o cria manualmente antes que os pods o referenciem |
O Kubernetes gera uma solicitação automaticamente por pod |
|
Ciclo de vida |
Persiste até que você o exclua |
O modelo persiste até que você o exclua. Cada |
|
Compartilhamento de dispositivos entre pods |
Compatível. Diversos pods podem referenciar a mesma solicitação |
Sem compatibilidade. Cada pod recebe uma solicitação separada |
|
Campo de especificação do pod |
|
|
Para obter exemplos de uso de objetos ResourceClaim com a finalidade de compartilhamento de dispositivos EFA entre pods, consulte Compartilhamento de dispositivos EFA entre diversos pods. Para obter exemplos de uso de objetos ResourceClaimTemplate com alocação com reconhecimento de topologia, consulte Alocação de dispositivos EFA com GPU e dispositivos do Neuron com reconhecimento de topologia.