Gerenciar dispositivos EFA no Amazon EKS - Amazon EKS

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 EFA no Amazon EKS

O Elastic Fabric Adapter (EFA) é um dispositivo de rede para instâncias do Amazon EC2 que permite uma comunicação de alto desempenho entre nós para treinamento de machine learning e workloads de computação de alta performance (HPC). O Amazon EKS oferece suporte ao plug-in de dispositivo EFA para gerenciar dispositivos EFA em clusters do EKS.

Criar nós EKS com interfaces EFA

Ao criar nós do EKS com interfaces EFA, essas interfaces são conectadas durante a inicialização da instância. Se você precisar personalizar a configuração do EFA por dispositivo ou usar grupos de posicionamento para as instâncias EC2 habilitadas para o EFA, recomenda-se usar grupos de nós gerenciados pelo EKS ou grupos de nós autogerenciados pelo EKS. É possível definir a configuração de cada interface de rede usando modelos de inicialização.

Ao usar o Modo Automático do EKS ou o Karpenter com provisionamento dinâmico, as instâncias criadas para os Pods solicitando vpc.amazonaws.com/efa têm todas as interfaces configuradas com o tipo de interface EFA. Atualmente, o provisionamento de capacidade estática no Modo Automático do EKS e no Karpenter não oferece suporte à configuração do EFA por dispositivo. Atualmente, o Modo Automático do EKS e o Karpenter não oferecem suporte a grupos de colocação.

Ao usar eksctl para provisionar nós do EKS com a configuração efaEnabled, todas as interfaces são configuradas com o tipo de interface EFA, um grupo de segurança específico do EFA é criado, e o plug-in de dispositivo do EFA é instalado no cluster. Se você precisar personalizar a configuração do EFA por dispositivo ao usar o eksctl, recomenda-se utilizar o suporte do `eksctl` para modelos de inicialização.

Usar AMIs otimizadas para o EKS com o EFA

As AMIs aceleradas AL2023 otimizadas para EKS (NVIDIA e Neuron) e todas as AMIs Bottlerocket incluem os componentes de nível de host necessários para utilizar o EFA. As AMIs AL2023 e Bottlerocket do EKS não incluem o plug-in de dispositivo EFA, e esse plug-in deve ser instalado separadamente no seu cluster antes da implantação de workloads que utilizam o EFA.

Instale o plug-in de dispositivo EFA para Kubernetes

O plug-in de dispositivos EFA apresenta os dispositivos EFA como recursos estendidos vpc.amazonaws.com/efa. Você solicita dispositivos EFA nas solicitações e limites de recursos de contêineres. Para obter um guia passo a passo completo sobre como configurar o EFA com workloads de treinamento, consulte Execute o treinamento de machine learning no Amazon EKS com o Elastic Fabric Adapter.

O plug-in de dispositivos EFA aloca automaticamente os dispositivos EFA que estão topologicamente próximos aos aceleradores Neuron e às GPUs NVIDIA na instância física do EC2.

Pré-requisitos

  • Um cluster do Amazon EKS.

  • Nós com tipos de instância do Amazon EC2 compatíveis com EFA. Para obter uma lista dos tipos de instância compatíveis, consulte Tipos de instância compatíveis no Guia do usuário do Amazon EC2.

  • Nós com componentes de nível de host instalados para o EFA. Esses recursos estão incluídos caso você utilize as AMIs aceleradas do EKS AL2023 ou as AMIs Bottlerocket do EKS.

  • O Helm instalado em seu ambiente de linha de comando. Consulte as Instruções de configuração do Helm para obter mais informações.

  • kubectl configurado para se comunicar com o seu cluster; consulte Instalar ou atualizar o kubectl para obter mais informações.

Procedimento

  1. Adicione o repositório do chart do Helm do EKS.

    helm repo add eks https://aws.github.io/eks-charts
  2. Atualize seu repositório Helm local.

    helm repo update
  3. Instalação do plug-in de dispositivo do EFA.

    helm install efa eks/aws-efa-k8s-device-plugin -n kube-system
  4. Verifique se o DaemonSet do plug-in do dispositivo EFA está em execução.

    kubectl get daemonset -n kube-system aws-efa-k8s-device-plugin-daemonset
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE aws-efa-k8s-device-plugin-daemonset 2 2 2 2 2 <none> 60s
  5. Verifique se os seus nós possuem recursos EFA alocáveis.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,EFA:.status.allocatable.vpc\.amazonaws\.com/efa"
    NAME EFA ip-192-168-11-225.us-west-2.compute.internal 4 ip-192-168-24-96.us-west-2.compute.internal 4

Solicitar dispositivos EFA em um Pod

Para solicitar dispositivos EFA usando o plug-in do dispositivo, especifique o recurso vpc.amazonaws.com/efa nas solicitações ou limites de recursos do contêiner.

apiVersion: v1 kind: Pod metadata: name: efa-workload spec: containers: - name: app ... resources: limits: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ... requests: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ...