このDRAリソースドライバーは現在、アクティブな開発中であり、まだ生産用に設計されていません。より安定したものがあるまで、私たちは(時には) main
にコミットをプッシュすることを決定するかもしれません。あなた自身の責任で使用してください。
このレポで提供されるGPUのDRAサポートのドキュメントとデモは、以下にあります。
書類 | デモ |
---|---|
このセクションでは、NVIDIA GPU DRAドライバーの機能をデモするためにkind
を使用することについて説明します。
まず、GPUサポートを使用してKindを起動してから、次の前提条件が満たされていることを確認してください。
kind
がインストールされています。こちらの公式ドキュメントをご覧ください。
NVIDIAコンテナツールキットがシステムにインストールされていることを確認してください。これは、ここで指示に従うことで実行できます。
nvidiaコンテナランタイムをデフォルトのDockerランタイムとして構成します。
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
Dockerを再起動して変更を適用します。
sudo systemctl restart docker
accept-nvidia-visible-devices-as-volume-mounts
オプションを/etc/nvidia-container-runtime/config.toml
ファイルにtrue
します。容器。
sudo nvidia-ctk config --in-place --set accept-nvidia-visible-devices-as-volume-mounts=true
マシンに現在のGPUのセットを表示します。
nvidia-smi -L
最初にこのリポジトリとcd
をクローニングすることから始めます。このデモで使用されているすべてのスクリプトと例のポッド仕様はdemo
ディレクトリにありますので、さまざまなファイルを閲覧して、利用可能なものを確認してください。
git clone https://github.com/NVIDIA/k8s-dra-driver.git
cd k8s-dra-driver
DRAのインストールと構成の方法を示すデモを示し、Linuxワークステーションでkind
クラスターでポッドを実行します。
以下は、詳細な段階的な指示です。
まず、デモを実行するためにkind
クラスターを作成します。
./demo/clusters/kind/create-cluster.sh
ここから、リソースドライバーの例の画像を作成します。
./demo/clusters/kind/build-dra-driver.sh
これにより、構築された画像がkind
Clusterで利用可能になります。
NVIDIA GPU DRAドライバーをインストールしました。
./demo/clusters/kind/install-dra-driver.sh
これによりnvidia-dra-driver
名前空間で実行されている2つのポッドが表示されるはずです。
kubectl get pods -n nvidia-dra-driver
NAME READY STATUS RESTARTS AGE
nvidia-k8s-dra-driver-kubelet-plugin-t5qgz 1/1 Running 0 44s
最後に、 demo/specs/quickstart
フォルダーに含まれるさまざまな例を実行できます。 Kubernetes v1.31の最新のアップデートにより、このフォルダーの最初の3つの例のみが機能しています。
次のように実行できます。
kubectl apply --filename=demo/specs/quickstart/gpu-test{1,2,3}.yaml
ポッドのステータスを取得します。どのGPUが利用可能かによって、最初の3つの例を実行すると、次のような出力が生成されます...
注: Kindには既知の問題があります。 Kind Clusterで実行されているポッドのログをテールしようとするときにエラーが表示される場合があります。FSNotifyWatcher failed to create fsnotify watcher: too many open files.
この問題は、 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)
前の手順で作成されたクラスターを削除します。
./demo/clusters/kind/delete-cluster.sh