Este controlador de recursos DRA está actualmente en desarrollo activo y aún no está diseñado para el uso de producción. Podemos (a veces) decidir impulsar las comodidades main
hasta que tengamos algo más estable. Use bajo su propio riesgo.
A continuación se puede encontrar un documento y una demostración del soporte DRA para las GPU proporcionadas por este repositorio:
Documento | Manifestación |
---|---|
Esta sección describe el uso de kind
de demostración de la funcionalidad del controlador DRA NVIDIA GPU.
Primero, ya que lanzaremos el tipo de soporte de GPU, asegúrese de que se cumplan los siguientes requisitos previos:
se instala kind
. Vea la documentación oficial aquí.
Asegúrese de que el kit de herramientas de contenedor NVIDIA esté instalado en su sistema. Esto se puede hacer siguiendo las instrucciones aquí.
Configure el tiempo de ejecución del contenedor NVIDIA como el tiempo de ejecución de Docker predeterminado :
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
Reiniciar Docker para aplicar los cambios:
sudo systemctl restart docker
Establezca la opción accept-nvidia-visible-devices-as-volume-mounts
en true
en el archivo /etc/nvidia-container-runtime/config.toml
recipiente.
sudo nvidia-ctk config --in-place --set accept-nvidia-visible-devices-as-volume-mounts=true
Muestre el conjunto actual de GPU en la máquina:
nvidia-smi -L
Comenzamos por primera vez clonando este repositorio y en cd
en él. Todos los scripts y las especificaciones de POD de ejemplo utilizadas en esta demostración están en el subdirectorio demo
, así que tómese un momento para navegar por los diversos archivos y ver lo que está disponible:
git clone https://github.com/NVIDIA/k8s-dra-driver.git
cd k8s-dra-driver
Aquí hay una demostración que muestra cómo instalar y configurar DRA, y ejecutar una cápsula en un clúster kind
en una estación de trabajo de Linux.
A continuación se presentan las instrucciones detalladas paso a paso.
Primero, cree un clúster kind
para ejecutar la demostración:
./demo/clusters/kind/create-cluster.sh
Desde aquí construiremos la imagen para el controlador de recursos de ejemplo:
./demo/clusters/kind/build-dra-driver.sh
Esto también hace que las imágenes construidas estén disponibles para el clúster kind
.
Ahora instalamos el controlador DRA GPU NVIDIA:
./demo/clusters/kind/install-dra-driver.sh
Esto debería mostrar dos vainas en el espacio de nombres nvidia-dra-driver
:
kubectl get pods -n nvidia-dra-driver
NAME READY STATUS RESTARTS AGE
nvidia-k8s-dra-driver-kubelet-plugin-t5qgz 1/1 Running 0 44s
Finalmente, puede ejecutar los diversos ejemplos contenidos en la carpeta demo/specs/quickstart
. Con las actualizaciones más recientes para Kubernetes V1.31, solo los primeros 3 ejemplos en esta carpeta son actualmente funcionales.
Puedes ejecutarlos de la siguiente manera:
kubectl apply --filename=demo/specs/quickstart/gpu-test{1,2,3}.yaml
Obtenga los estados de las cápsulas. Dependiendo de qué GPU estén disponibles, ejecutar los primeros tres ejemplos producirá una salida similar a la siguiente ...
Nota: Hay un problema conocido con el tipo. Puede ver un error al intentar seguir el registro de una cápsula en ejecución en el clúster amable: failed to create fsnotify watcher: too many open files.
El problema puede resolverse aumentando el valor para fs.inotify.max_user_watches
.
kubectl get pod -A -l app=pod
NAMESPACE NAME READY STATUS RESTARTS AGE
gpu-test1 pod1 1/1 Running 0 34s
gpu-test1 pod2 1/1 Running 0 34s
gpu-test2 pod 2/2 Running 0 34s
gpu-test3 pod1 1/1 Running 0 34s
gpu-test3 pod2 1/1 Running 0 34s
kubectl logs -n gpu-test1 -l app=pod
GPU 0: A100-SXM4-40GB (UUID: GPU-662077db-fa3f-0d8f-9502-21ab0ef058a2)
GPU 0: A100-SXM4-40GB (UUID: GPU-4cf8db2d-06c0-7d70-1a51-e59b25b2c16c)
kubectl logs -n gpu-test2 pod --all-containers
GPU 0: A100-SXM4-40GB (UUID: GPU-79a2ba02-a537-ccbf-2965-8e9d90c0bd54)
GPU 0: A100-SXM4-40GB (UUID: GPU-79a2ba02-a537-ccbf-2965-8e9d90c0bd54)
kubectl logs -n gpu-test3 -l app=pod
GPU 0: A100-SXM4-40GB (UUID: GPU-4404041a-04cf-1ccf-9e70-f139a9b1e23c)
GPU 0: A100-SXM4-40GB (UUID: GPU-4404041a-04cf-1ccf-9e70-f139a9b1e23c)
Elimine el clúster creado en los pasos anteriores:
./demo/clusters/kind/delete-cluster.sh