
こんにちは。SB C&S の野木です。
本記事では、弊社検証環境に構築したAIクラスタを題材に、NVIDIA GPU Operatorを用いてKubernetes環境からGPUを利用するための環境構築手順をご紹介します。
今回ご紹介する内容は、AIクラスタ構築シリーズの第2回となります。
第1回の記事では、NVIDIA Spectrum™-4 Ethernetスイッチの初期構築手順をご紹介していますので併せてご覧ください。
①NVIDIA Networkingで構築するAIクラスタ検証 Spectrum スイッチ 初期構築編
また、NVIDIA Networking製品の概要については、以下の過去記事で紹介していますので、こちらも併せてご覧いただくことをおすすめします。
【連載】AI時代をリードする NVIDIA Networking のご紹介
なお、本記事で紹介する設定およびコマンドは、弊社検証環境で使用したNVIDIA GPU Operator v26.3.3をもとに確認しています。
バージョンによって設定方法、展開されるコンポーネントなどが異なる場合があるため、ご利用の環境に応じて最新のNVIDIA公式ドキュメントをご確認ください。
NVIDIA GPU Operator
AIクラスタ構築の全体構成

本シリーズでは、NVIDIA Networkingを活用したAIクラスタの構築をテーマに、ネットワークスイッチの初期設定からGPUサーバー側の構築までを順を追ってご紹介します。
一般的なAIクラスタでは、GPUを搭載した複数台のベアメタルサーバーをKubernetesクラスタとして構成し、高速ネットワークを介して各GPUサーバーを接続する構成が広く採用されています。
一方、本シリーズでは社内検証環境の構成上、1台の物理サーバー上に仮想基盤(VMware vSphere)を構築し、その上にKubernetes Control Plane 1台、Worker Node 2台の計3台の仮想マシンを配置しています。
GPU処理を行うWorker Nodeには、それぞれNVIDIA L40S GPUを1枚、およびNVIDIA ConnectX®-7 NICを1枚ずつPCIeパススルーで割り当てることで、2台のGPUサーバーを疑似的に再現しています。
また、Worker Node間はNVIDIA Spectrum™-4 Ethernetスイッチ SN5600を介して接続し、高速ネットワークを利用したGPUサーバー間通信を行う構成としています。
本シリーズでは、この検証環境を用いて以下の内容を順番にご紹介します。
- 第1回:Spectrumスイッチ初期構築
- 第2回:NVIDIA GPU Operatorの構築(本記事)
- 第3回:NVIDIA Network Operator 基礎編
- 第4回:NVIDIA Network Operator 構築編
今回はシリーズ第2回として、NVIDIA GPU OperatorをKubernetesクラスタへ導入し、Worker Nodeに搭載されたGPUをKubernetesから利用できる環境を構築します。
AIクラスタでKubernetesが利用される理由
GPUを利用するAI基盤にはさまざまな構成があり、GPUサーバー上でAIワークロードを直接実行するベアメタル環境のほか、Dockerなどのコンテナ技術を利用する構成も広く利用されています。
ベアメタル環境はシンプルに構成できる一方で、サーバーごとの環境管理が必要になります。
また、コンテナを利用することで実行環境を統一しやすくなりますが、GPUサーバーやコンテナの数が増えると、それらを個別に管理する運用負荷が大きくなります。
そこで、複数のサーバーやコンテナをまとめて管理する仕組みとして、Kubernetesなどのコンテナオーケストレーションプラットフォームが利用されています。
Kubernetesでは、複数のGPUサーバーをクラスタとして一元管理し、Podの配置やスケールなどを自動化できます。
また、Kubernetesのほかにも、Kubernetesをベースにエンタープライズ向けの機能を提供するRed Hat OpenShiftなどがあり、用途や運用要件に応じてさまざまなプラットフォームが利用されています。
本検証では、複数のGPUサーバーを一元管理し、GPUを利用するAIワークロードを効率的に実行するための基盤としてKubernetesを採用しています。
NVIDIA GPU Operatorとは
Kubernetes上でNVIDIA GPUを利用するためには、GPU DriverやContainer Toolkit、Device Pluginなど、GPUの利用に必要な複数のソフトウェアコンポーネントを導入する必要があります。
NVIDIA GPU Operatorは、これらのコンポーネントをKubernetes上へ自動的に展開・管理するためのツールです。

GPU Operatorを利用することで、各GPUサーバーに必要なコンポーネントを個別に導入・管理する必要がなくなり、Kubernetes上でGPUを利用するための環境を効率的に構築できます。
GPU Operatorが管理する主なコンポーネントには、以下のようなものがあります。
- NVIDIA GPU Driver:OSからNVIDIA GPUを利用するためのドライバー
- NVIDIA Container Toolkit:コンテナからNVIDIA GPUを利用するためのランタイム環境
- NVIDIA Device Plugin:GPUをKubernetesのリソースとして認識させ、PodへのGPU割り当てを可能にするコンポーネント
- DCGM Exporter:GPUの使用率や温度などのメトリクスを収集・公開するコンポーネント
- GPU Feature Discovery:GPUの種類や機能などの情報を検出し、KubernetesのNode Labelとして登録するコンポーネント
- Node Feature Discovery:各ノードのハードウェアや機能に関する情報を検出するコンポーネント
このようにGPU Operatorを利用することで、Kubernetes上でNVIDIA GPUを利用するために必要な環境をまとめて導入・管理できます。
NVIDIA GPU Operator導入前の前提条件
NVIDIA GPU Operatorを導入する前に、GPUを搭載したサーバーやKubernetesクラスタなどの環境を準備しておく必要があります。
本検証では、1台の物理サーバーにNVIDIA L40S GPUを2枚搭載し、VMware vSphere上に3台のUbuntu Serverを構築しています。
3台のうち1台をControl Plane、2台をWorker NodeとしてKubernetesクラスタを構成し、各Worker NodeにはNVIDIA L40S GPUを1枚ずつPCIeパススルーで割り当てています。
また、GPU Operatorの導入にはHelmを使用するため、事前にHelmを導入しています。

KubernetesのインストールやHelmの導入手順については本記事では割愛しますが、以下の公式ドキュメントから手順を確認できます。
※インストールするバージョンや対応環境については、最新の公式ドキュメントをご確認ください。
Kubernetesドキュメント
Helmのインストール
以上の環境を構築済みの状態から、NVIDIA GPU Operatorの導入を進めていきます。
NVIDIA GPU Operatorの構築手順
NVIDIA GPU Operatorは、NGCで提供されているHelm Chartを利用してKubernetesクラスタへ導入します。
※NGC(NVIDIA GPU Cloud)は、NVIDIAがAIソフトウェアやコンテナイメージ、Helm Chartなどを提供するカタログサービスです。
NGC Catalog - NVIDIA GPU Operator -
※Helm Chartは、Kubernetes上にアプリケーションを展開するために必要な設定ファイルなどをまとめたパッケージです。Helmを使用することで、Helm ChartをもとにアプリケーションをKubernetesクラスタへ展開できます。

本検証では、以下の流れでGPU Operatorの導入からGPUを利用できることの確認までを行います。
STEP1:NGCのNVIDIA Helm Repositoryを登録
GPU OperatorのHelm Chartを取得するため、NGCで提供されているNVIDIA Helm RepositoryをHelmに登録します。
STEP2:GPU Operatorのインストール
Helmを使用して、GPU OperatorをKubernetesクラスタへインストールします。
STEP3:GPU Operator関連のPodを確認
GPU Operatorによって展開された各Podが正常に起動していることを確認します。
STEP4:KubernetesからGPUを利用できることを確認
GPUがKubernetesのリソースとして認識されていることを確認し、GPUを割り当てたPodからGPUを利用できることを確認します。
次章から、それぞれの手順を実際のコマンドと実行結果を確認しながら進めていきます。
NVIDIA GPU Operatorを構築してみる
STEP1 NVIDIA Helm Repositoryの登録
でははじめに、NVIDIA GPU OperatorのHelm Chartを取得するため、NVIDIA Helm Repositoryを登録します。
まず、以下のコマンドを実行してNGCで提供されているNVIDIA Helm Repositoryを登録し、Repositoryの情報を更新します。
|
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia |
本検証では検証時点の最新バージョンであるNVIDIA GPU Operator v26.3.3を使用します。
そのため、以下のコマンドで対象バージョンのHelm Chartが取得可能であることを確認します。
※利用するGPU Operatorのバージョンについては、最新の公式ドキュメントをご確認ください。
|
helm search repo nvidia/gpu-operator --versions | grep 26.3.3 |
##出力![]()
実行結果に「v26.3.3」が表示されることを確認します。
以上で、NVIDIA GPU OperatorをインストールするためのHelm Repositoryの準備は完了です。
STEP2 GPU Operatorのインストール
NVIDIA Helm Repositoryの準備が完了したら、Helmを使用してNVIDIA GPU OperatorをKubernetesクラスタへインストールします。
以下のコマンドを実行して、NVIDIA GPU Operator v26.3.3をインストールします。
|
helm install --wait --generate-name \ |
主なオプションの内容は以下のとおりです。
- --wait:GPU Operatorのリソースが利用可能な状態になるまで待機します。
- --generate-name:Helm Releaseの名前を自動生成します。
- -n gpu-operator:GPU Operatorをgpu-operator Namespaceへインストールします。
- --create-namespace:指定したNamespaceが存在しない場合に新しく作成します。
- --version=v26.3.3:インストールするGPU Operatorのバージョンを指定します。
##出力
実行結果に「STATUS: deployed」と表示され、GPU Operatorのインストールが完了したことを確認します。
また、以下のコマンドを実行することで、インストールされたHelm Releaseの状態を確認できます。
|
helm list -A |
##出力![]()
GPU OperatorのReleaseが表示され、STATUSがdeployedとなっていることを確認します。
以上で、NVIDIA GPU Operatorのインストールは完了です。
次に、GPU Operatorによって展開された各Podが正常に動作していることを確認します。
STEP3 GPU Operator関連Podの確認
GPU Operatorのインストールが完了したら、GPU Operatorによって展開された各Podが正常に動作していることを確認します。
以下のコマンドを実行して、「gpu-operator」の Namespaceに展開されたPodを確認します。
|
kubectl get pods -n gpu-operator |
##出力
各PodのSTATUSが「Running」となっていることを確認します。
GPU Operatorによって、「NVIDIA GPU Driver」や「NVIDIA Container Toolkit」、「Device Plugin」など、GPUを利用するために必要なコンポーネントがPodとして展開されていることを確認できます。
なお、「nvidia-cuda-validator-*」は検証処理を実行する一時的なPodのため、処理が正常に完了すると「Completed」と表示されます。
各Podと主な役割は以下のとおりです。
|
Pod |
主な役割 |
|
gpu-operator-* |
GPU Operator本体。GPU関連コンポーネントの展開・管理を行います。 |
|
nvidia-driver-daemonset-* |
各GPU NodeにNVIDIA GPU Driverを展開します。 |
|
nvidia-container-toolkit-daemonset-* |
コンテナからGPUを利用するための環境を構成します。 |
|
nvidia-device-plugin-daemonset-* |
GPUをKubernetesのリソースとして認識させ、PodへのGPU割り当てを可能にします。 |
|
gpu-feature-discovery-* |
GPUの情報を検出し、Node Labelとして登録します。 |
|
node-feature-discovery-* |
Nodeに搭載されたハードウェアや機能を検出します。 |
|
nvidia-dcgm-exporter-* |
GPUの使用率や温度などのメトリクスを収集・公開します。 |
|
nvidia-operator-validator-* |
GPU Operatorによって構築された環境が正常に利用できることを検証します。 |
|
nvidia-cuda-validator-* |
CUDAを使用した処理を実行し、GPUがコンテナから正常に利用できることを検証します。 |
続いて、各Nodeに搭載されたGPUがKubernetesのリソースとして認識されていることを確認します。
以下のコマンドを実行して、各Nodeで利用可能なGPUリソース数を確認します。
|
kubectl get nodes \ |
##出力
実行結果から、各GPU Nodeの「GPU」に「1」と表示されていることを確認します。
これは、GPU Operatorによって展開されたNVIDIA Device Pluginにより、各Nodeに搭載されたGPUが「nvidia.com/gpu」というKubernetesのリソースとして認識され、Podへ割り当て可能なGPUがそれぞれ1基存在することを示しています。
以上の結果から、GPU OperatorによってGPUをKubernetesから利用するための環境が正常に構築されていることを確認できました。
続いて、実際にGPUを使用するPodを作成し、PodからGPUを利用できることを確認します。
STEP4 GPUを利用するPodの作成
各NodeのGPUがKubernetesのリソースとして認識されていることを確認できたため、続いてGPUを利用するPodを作成し、Pod内からGPUを利用できることを確認します。
本検証では、2台のWorker NodeそれぞれにGPUを1基ずつ搭載しているため、各Worker Nodeを指定したテスト用Podを作成します。
まず、以下のコマンドを実行して「cx7-ubuntu01」上に「gpu-test-vm1」Podを作成します。
|
cat <<'EOF' | kubectl apply -f - |
続いて、「cx7-ubuntu02」上にも同様に「gpu-test-vm2」Podを作成します。
|
cat <<'EOF' | kubectl apply -f - |
上記のPodでは、nodeNameにNode名を指定することで、それぞれのPodを対象のWorker Node上で実行します。
また、resources.limitsにnvidia.com/gpu: 1を指定することで、各PodがGPUを1基要求するように設定しています。
Podの作成後、以下のコマンドを実行してPodの状態と配置先Nodeを確認します。
|
kubectl get pod -o wide |
##出力
「gpu-test-vm1」が「cx7-ubuntu01」、「gpu-test-vm2」が「cx7-ubuntu02」にそれぞれ配置され、「STATUS」が「Completed」となっていることを確認します。
最後に、以下のコマンドを実行して各Podのログを確認します。
|
kubectl logs gpu-test-vm1 kubectl logs gpu-test-vm2 |
##出力
それぞれのPodで実行された「nvidia-smi」の結果に「NVIDIA L40S」が表示されることを確認します。
以上の結果から、2台のWorker Nodeに搭載されたNVIDIA L40SがKubernetesのリソースとして正常に割り当てられ、Pod内からGPUを利用できることを確認できました。
まとめ

本記事では、AIクラスタ構築シリーズの第2回として、GPU OperatorによってGPUの利用に必要なコンポーネントを展開し、各Worker Nodeに搭載されたNVIDIA L40SをKubernetes上のPodから利用できることを確認しました。
GPU Operatorを活用することで、GPUの利用に必要な複数のコンポーネントを個別に導入・管理する必要がなくなり、Kubernetes上のGPU環境を効率的に構築・運用できます。
次回はNVIDIA Network Operatorの基礎編としてAIクラスタにおけるHCA/NICの役割やNVIDIA Network Operatorの概要についてご紹介します。
その他のNVIDIA技術情報ブログはこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 第1技術統括部
第2技術部 1課
野木 空良 - Sora Nogi -
サーバー・ネットワークを中心として、AIインフラ全般のプリセールス業務に従事。
