VPC環境で利用できます。
Ncloud Kubernetes Serviceのワーカーノードとして GPUノードを使用できます。
- NAVERクラウドプラットフォームで提供する GPUサーバの MIG(Multi-Instance GPU)機能サポートの有無は、ハイパーバイザのタイプに応じて異なります。詳細な内容は、各 GPUノードタイプ別のガイドをご参照ください。
- GPUノードは KRリージョンでのみ使用できます。
- GPUノードでのみ構成されたクラスタは使用上の制限があります。
- Ncloud Kubernetes Serviceのデフォルトオブジェクトは一般ノードを必要とするため、一般ノードプールと GPUノードプールを一緒に構成します。
- GPUノードでは、SMI/CUDAドライバをアップグレードすることができます。
- runfileを使用してドライバのアップグレードを行うことができ、詳しい方法は GPUドライバ/CUDAの再インストールとアップグレード文書をご参照ください。
GPUリソースの使用方法を選択
GPUノードを追加した後、Podで GPUを使用するには、以下の2つの方式からいずれかを選択します。
| 方式 | ドライバ | インストール対象 | ドキュメント |
|---|---|---|---|
| NVIDIA device plugin | サーバイメージにインストールされたドライバを使用 | device plugin | GPUノード |
| NVIDIA GPU Operator | サーバイメージのドライバまたは GPU Operatorがインストールしたドライバ | ドライバ、Container Toolkit、device plugin、モニタリングコンポーネント | NVIDIA GPU Operatorの活用 |
ノードプールごとに GPUモデルが異なる場合や、Kubernetesでドライババージョンを直接指定する必要がある場合、GPU Operatorを使用します。
2つの方式を同じクラスタに同時にインストールしないでください。GPU Operatorが device pluginも一緒にインストールするため、両方の構成が同じ GPUを重複して登録してしまいます。
NVIDIA GPUデバイスプラグインの配置
GPU Operatorを使用しない場合、NVIDIA device pluginのみを配置して GPUリソースを登録できます。GPUプラグインを配置する前は Kubernetesクラスタで GPUリソースを使用できません。
クラスタで GPUノードが運用中に変更された後に NVIDIAデバイスプラグインを配置するには、以下のコマンドを実行します。
1. Helmのインストール
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \
&& chmod 700 get_helm.sh \
&& ./get_helm.sh
2. NVIDIA device plugin helmの保存場所追加
helm repo add nvdp https://nvidia.github.io/k8s-device-plugin \
&& helm repo update
3. NVIDIA device pluginのリリース
次のコマンドを使って kube-systemの名前空間に NVIDIA device pluginをリリースします。
helm install --generate-name nvdp/nvidia-device-plugin -n kube-system
HELM Chartは NVIDIAで提供しているため、問題が発生した場合は NVIDIA公式サイトで変更有無をご確認ください。
クイックスタートのために簡単な Damonsetを直接リリースすることで GPUリソースを有効化できます。
$ kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.0/deployments/static/nvidia-device-plugin.yml
4. GPUの使用確認
次のコマンドを使ってノードの詳細情報を照会し、GPUリソースの使用可否を確認できます。
$ kubectl describe [node-name]
...
Capacity:
cpu: 4
ephemeral-storage: 51341792Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 20474628Ki
nvidia.com/gpu: 1
pods: 110
Allocatable:
cpu: 3920m
ephemeral-storage: 47316595429
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 17425156Ki
nvidia.com/gpu: 1
pods: 110
...
デバイスプラグインを使用する
Kubernetesは、デバイスプラグインを実装して Podが GPUのような特別なハードウェア機能にアクセスできます。詳しい内容と使用方法は公式サイトで確認できます。