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). É recomendado usar drivers de DRA para novas implantações com as versões 1.34 e versões posteriores do Kubernetes ao usar grupos de nós gerenciados pelo EKS ou de nós gerenciados pelo usuário, pois a DRA fornece seleção de dispositivos mais robusta, agendamento com reconhecimento de topologia e recursos de compartilhamento de dispositivos que não estão disponíveis por meio de plug-ins de dispositivos.
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. -
Programação baseada em restrições que coordena diferentes tipos de dispositivos
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 do EFA
-
O driver de DRA do EFA (DRANET
) gerencia a alocação de dispositivos Elastic Fabric Adapter (EFA) com agendamento com reconhecimento de topologia que emparelha interfaces 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.
- Driver de DRA da NVIDIA
-
O driver NVIDIA DRA para GPUs
permite a alocação flexível e a reconfiguração dinâmica das GPUs NVIDIA, incluindo suporte a recursos ComputeDomainpara workloads Multi-Node NVLink (MNNVL) em instâncias Grace-Blackwell do EC2. Para obter mais informações sobre como usarComputeDomainscom instâncias Grace-Blackwell do EC2, consulte Uso do P6e-GB200 UltraServers com o 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 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. - Plug-in de dispositivo NVIDIA
-
O plug-in de dispositivo da NVIDIA
apresenta as GPUs da NVIDIA como recursos estendidos nvidia.com/gpue monitora a integridade das GPUs.
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 original
. O ambiente de gerenciamento e os nós do seu cluster devem estar executando uma versão do Kubernetes compatível com o DRA. -
Atualmente, o DRA não é compatível com o Karpenter nem com os recursos de computação provisionados pelo Modo Automático do EKS. Você deve usar 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. Consulte o KEP-5004
do Kubernetes para obter atualizações sobre a compatibilidade do driver DRA e do plug-in de dispositivo. -
O DRA utiliza diferentes recursos da API do Kubernetes (
ResourceClaim,ResourceClaimTemplate,DeviceClass) em vez de plug-ins de dispositivos (resource.limits,resource.requests). A migração de plug-ins de dispositivo para o DRA é necessária para a atualização das especificações da sua workload. -
Os plug-ins de dispositivos continuam sendo totalmente compatíveis com todas as versões do Kubernetes. Se o cluster executar uma versão do Kubernetes anterior à 1.34, ou se você usar o Karpenter ou o Modo Automático do EKS, continue usando os plug-ins de dispositivo. Não há suporte para o driver de DRA da NVIDIA no Bottlerocket; use o plug-in de dispositivo da NVIDIA em nós do Bottlerocket. Há suporte para os drivers de DRA do EFA e do Neuron no Bottlerocket.
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.