Instalación del complemento para dispositivos de Kubernetes - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Instalación del complemento para dispositivos de Kubernetes

Los complementos para dispositivos de Kubernetes han sido el principal mecanismo para anunciar infraestructuras especializadas (como GPU, interfaces de red y adaptadores de red) como recursos consumibles para las cargas de trabajo de Kubernetes. Si bien la asignación dinámica de recursos (DRA) se posiciona como el futuro de la administración de dispositivos en Kubernetes, la mayoría de los proveedores de infraestructura especializados dan soporte a los controladores de DRA desde una fase temprana. Los complementos para dispositivos de Kubernetes siguen siendo un enfoque ampliamente disponible para usar las GPU en los clústeres de Kubernetes actualmente.

Consideraciones

  • Al utilizar las AMI de AL2023 optimizadas para EKS con las GPU de NVIDIA, debe instalar el complemento para dispositivos de Kubernetes de NVIDIA. Puede instalar y administrar el complemento para dispositivos de Kubernetes de NVIDIA con Helm, con las herramientas de Kubernetes que prefiera o con el operador de GPU de NVIDIA.

  • Al utilizar las AMI de Bottlerocket optimizadas para EKS con las GPU de NVIDIA, no es necesario instalar el complemento para dispositivos de Kubernetes de NVIDIA, ya que se incluye en las AMI de Bottlerocket optimizadas para EKS. Esto incluye los casos en los que utiliza instancias de GPU con el modo automático de EKS.

  • Si utiliza las AMI de AL2023 o Bottlerocket optimizadas para EKS con las GPU de AWS Inferentia o Trainium, debe instalar el complemento para dispositivos de Kubernetes de Neuron y, opcionalmente, instalar la extensión del programador de Kubernetes de Neuron. Para obtener más información, consulte la documentación de Neuron para ejecuciones en EKS.

Instalación del complemento para dispositivos de Kubernetes de NVIDIA

En el siguiente procedimiento, se describe cómo instalar el complemento para dispositivos de Kubernetes de NVIDIA y cómo ejecutar una prueba de muestra en instancias de GPU de NVIDIA.

Requisitos previos

  • Clúster de EKS ya creado

  • Nodos de GPU de NVIDIA en ejecución en el clúster con la AMI de NVIDIA de AL2023 optimizada para EKS

  • Si tiene Helm instalado en su entorno de línea de comandos, consulte las instrucciones de configuración de Helm.

Procedimiento

  1. Agregue el repositorio de gráficos de Helm nvdp.

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
  2. Actualice el repositorio de Helm local para asegurarse de que cuenta con los gráficos más recientes.

    helm repo update
  3. Obtenga la versión más reciente del complemento para dispositivos de Kubernetes de NVIDIA.

    helm search repo nvdp --devel
    NAME CHART VERSION APP VERSION DESCRIPTION nvdp/gpu-feature-discovery 0.17.4 0.17.4 ... nvdp/nvidia-device-plugin 0.17.4 0.17.4 ...
  4. Instale el complemento para dispositivos de Kubernetes de NVIDIA en el clúster y sustituya 0.17.4 por la versión más reciente del comando anterior.

    helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --version 0.17.4 \ --set gfd.enabled=true
  5. Compruebe que el complemento para dispositivos de Kubernetes de NVIDIA se esté ejecutando en el clúster. A continuación, se muestra el resultado con dos nodos en el clúster.

    kubectl get ds -n nvidia nvdp-nvidia-device-plugin
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE nvdp-nvidia-device-plugin 2 2 2 2 2 <none> 11m
  6. Compruebe que los nodos tengan GPU asignables con el siguiente comando.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"
    NAME GPU ip-192-168-11-225.us-west-2.compute.internal 1 ip-192-168-24-96.us-west-2.compute.internal 1
  7. Cree un archivo denominado nvidia-smi.yaml con el siguiente contenido. Este manifiesto lanza una imagen de contenedor de AL2023 mínima que ejecuta nvidia-smi en un nodo.

    apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: restartPolicy: OnFailure containers: - name: gpu-demo image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal command: ['/bin/sh', '-c'] args: ['nvidia-smi && tail -f /dev/null'] resources: limits: nvidia.com/gpu: 1 tolerations: - key: 'nvidia.com/gpu' operator: 'Equal' value: 'true' effect: 'NoSchedule'
  8. Aplique el manifiesto con el siguiente comando.

    kubectl apply -f nvidia-smi.yaml
  9. Una vez que el pod termine de ejecutarse, consulte sus registros con el siguiente comando.

    kubectl logs nvidia-smi

    Un ejemplo de salida sería el siguiente.

    +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI XXX.XXX.XX Driver Version: XXX.XXX.XX CUDA Version: XX.X | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA L4 On | 00000000:31:00.0 Off | 0 | | N/A 27C P8 11W / 72W | 0MiB / 23034MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+

Instalación del complemento para dispositivos de Kubernetes de Neuron

En el siguiente procedimiento, se describe cómo instalar el complemento para dispositivos de Kubernetes de Neuron y cómo ejecutar una prueba de muestra en una instancia de Inferentia.

Requisitos previos

  • Clúster de EKS ya creado

  • Nodos de GPU de Neuron que se ejecutan en el clúster mediante la AMI de Neuron de AL2023 optimizada para EKS o la AMI de Bottlerocket

  • Si tiene Helm instalado en su entorno de línea de comandos, consulte las instrucciones de configuración de Helm.

Procedimiento

  1. Instale el complemento para dispositivos de Kubernetes de Neuron en el clúster.

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false"
  2. Compruebe que el complemento para dispositivos de Kubernetes de Neuron se esté ejecutando en el clúster. A continuación, se muestra el resultado con un único nodo de Neuron en el clúster.

    kubectl get ds -n kube-system neuron-device-plugin
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-device-plugin 1 1 1 1 1 <none> 72s
  3. Compruebe que los nodos tengan NeuronCores asignables con el siguiente comando.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronCore:.status.allocatable.aws\.amazon\.com/neuroncore"
    NAME NeuronCore ip-192-168-47-173.us-west-2.compute.internal 2
  4. Compruebe que los nodos tengan NeuronDevices asignables con el siguiente comando.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronDevice:.status.allocatable.aws\.amazon\.com/neuron"
    NAME NeuronDevice ip-192-168-47-173.us-west-2.compute.internal 1
  5. Cree un archivo denominado neuron-ls.yaml con el siguiente contenido. Este manifiesto lanza un contenedor de Neuron Monitor que tiene la herramienta neuron-ls instalada.

    apiVersion: v1 kind: Pod metadata: name: neuron-ls spec: restartPolicy: Never containers: - name: neuron-container image: public.ecr.aws/g4h4h0b5/neuron-monitor:1.0.0 command: ["/bin/sh"] args: ["-c", "neuron-ls"] resources: limits: aws.amazon.com/neuron: 1 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule"
  6. Aplique el manifiesto con el siguiente comando.

    kubectl apply -f neuron-ls.yaml
  7. Una vez que el pod termine de ejecutarse, consulte sus registros con el siguiente comando.

    kubectl logs neuron-ls

    A continuación se muestra un ejemplo de salida.

    instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+