Ce pilote de ressource DRA est actuellement en cours de développement actif et n'est pas encore conçu pour une utilisation en production. Nous pouvons (parfois) décider de pousser les engins sur main
jusqu'à ce que nous ayons quelque chose de plus stable. Utiliser à vos risques et périls.
Un document et une démo de la prise en charge de la DRA pour les GPU fournis par ce dépôt peuvent être trouvés ci-dessous:
Document | Démo |
---|---|
Cette section décrit l'utilisation kind
pour démontrer la fonctionnalité du pilote NVIDIA GPU DRA.
D'abord, car nous allons lancer le genre avec le support GPU, assurez-vous que les conditions préalables suivantes sont remplies:
kind
est installé. Voir la documentation officielle ici.
Assurez-vous que la boîte à outils Nvidia Container est installée sur votre système. Cela peut être fait en suivant les instructions ici.
Configurez l'exécution du conteneur Nvidia en tant que Docker Runtime par défaut :
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
Redémarrez Docker pour appliquer les modifications:
sudo systemctl restart docker
Définissez l'option accept-nvidia-visible-devices-as-volume-mounts
true
le fichier /etc/nvidia-container-runtime/config.toml
pour configurer le runtime de conteneur NVIDIA pour utiliser des supports de volume pour sélectionner des appareils dans un rejet dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans un injection dans une récipient.
sudo nvidia-ctk config --in-place --set accept-nvidia-visible-devices-as-volume-mounts=true
Afficher l'ensemble actuel des GPU sur la machine:
nvidia-smi -L
Nous commençons par le premier clonage de ce référentiel et cd
y glissons. Tous les scripts et les exemples de spécifications de pod utilisés dans cette démo sont dans le sous-répertoire demo
, alors prenez un moment pour parcourir les différents fichiers et voir ce qui est disponible:
git clone https://github.com/NVIDIA/k8s-dra-driver.git
cd k8s-dra-driver
Voici une démonstration montrant comment installer et configurer DRA, et exécuter un pod dans un cluster kind
sur une station de travail Linux.
Voici les instructions détaillées et étape par étape.
Tout d'abord, créez un cluster kind
pour exécuter la démo:
./demo/clusters/kind/create-cluster.sh
De là, nous allons construire l'image pour l'exemple de pilote de ressource:
./demo/clusters/kind/build-dra-driver.sh
Cela rend également les images construites à la disposition du cluster kind
.
Nous installons maintenant le pilote NVIDIA GPU DRA:
./demo/clusters/kind/install-dra-driver.sh
Cela devrait montrer deux pods exécutés dans l'espace de noms 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
Enfin, vous pouvez exécuter les différents exemples contenus dans le dossier demo/specs/quickstart
. Avec les mises à jour les plus récentes pour Kubernetes v1.31, seuls les 3 premiers exemples de ce dossier sont actuellement fonctionnels.
Vous pouvez les exécuter comme suit:
kubectl apply --filename=demo/specs/quickstart/gpu-test{1,2,3}.yaml
Obtenez les statuts des pods. Selon les GPU disponibles, l'exécution des trois premiers exemples produira une sortie similaire à ce qui suit ...
Remarque: il y a un problème connu avec Kind. Vous pouvez voir une erreur tout en essayant de rédiger le journal d'un pod en cours d'exécution dans le cluster de type: failed to create fsnotify watcher: too many open files.
Le problème peut être résolu en augmentant la valeur de 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)
Supprimez le cluster créé dans les étapes précédentes:
./demo/clusters/kind/delete-cluster.sh