はじめに
Kubernetes上でLLMの推論などGPUを使うワークロードを動かすには、GPUノードにドライバを入れ、PodからGPUを利用できる状態にしておく必要があります。本記事では、インターネットに接続できないAirGap環境のRKE2クラスタに対して、NVIDIA GPU DriverとNVIDIA GPU Operatorを導入し、Kubernetes上でGPUを使えるようにするまでの手順を紹介します。
SUSE AIのようなKubernetes上のAI基盤を構築する際の前提作業にあたりますが、手順自体は特定のAI基盤に依存しない汎用的な内容です。RKE2以外のKubernetesディストリビューションでも、containerdのソケットや設定ファイルのパスを読み替えれば応用できます。
GPU設定に必要なツール
KubernetesでGPUを使うには、ノードのOS側でGPUを動かす「NVIDIA GPU Driver」と、Kubernetes側でGPUをリソースとして扱うためのコンポーネント群をまとめて管理する「NVIDIA GPU Operator」の2つが必要です。
NVIDIA GPU Driver
NVIDIA GPU Driverは、OSがGPUを認識・制御するためのソフトウェアです。カーネルモジュール(nvidia、nvidia_uvmなど)と、libnvidia-ml.soやlibcuda.soといったユーザー空間ライブラリ、nvidia-smiなどの管理ツールで構成されます。コンテナ内のCUDAアプリケーションも、最終的にはホスト上のこのドライバを経由してGPUを利用します。
Kubernetesで使う場合、ドライバの導入方法は次の2通りです。
- ホストOSに直接インストールする:OSのパッケージ管理でドライバを入れる方法です。
- GPU Operatorのドライバコンテナで入れる:GPU Operatorがドライバ入りのコンテナを各ノードで動かし、カーネルモジュールをロードする方法です。
ホストOSに直接インストールする方法はドライバをOSのパッケージ管理で扱えるため、OSの更新やイメージ管理とあわせてドライバを管理したい場合に向いています。また、Kubernetes以外のプロセスからもGPUを使いやすくなります。
GPU Operatorのドライバコンテナで入れる方法は、OperatorがすべてのGPUノードにドライバを自動で導入し、更新も管理するため、GPUノードが多い場合や頻繁に増減する場合に向いています。
本記事では前者のホストOSへの直接インストールの手順を解説します。
なお、ドライバのバージョンはGPU Operatorのサポート対象から選びます(Release Notes)。
NVIDIA GPU Operator
NVIDIA GPU Operatorは、KubernetesでGPUを使うために必要なNVIDIAのソフトウェア一式を、Operatorパターンで自動的にデプロイ・管理する仕組みです。本来はノードごとに個別に設定する必要があるコンテナランタイムの設定やDevice Pluginなどを、ClusterPolicyというカスタムリソースでまとめて宣言的に管理できます。

GPU Operatorが管理する主なコンポーネントと、本記事での扱いは次のとおりです。
| コンポーネント | 役割 | 本記事での扱い |
|---|---|---|
| Node Feature Discovery(NFD) | ノードのハードウェア情報を検出し、NVIDIA GPU搭載ノードにラベルを付与 | 有効 |
| GPU Feature Discovery(GFD) | GPUの型番・メモリ量・ドライババージョンなどをnvidia.com/*ラベルとして付与 | 有効 |
| NVIDIA Container Toolkit | コンテナランタイム(containerd)を設定し、コンテナからGPUを使えるようにする | 有効 |
| NVIDIA Device Plugin | GPUを拡張リソースnvidia.com/gpuとしてkubeletに登録し、Podへ割り当てる | 有効(タイムスライシング設定あり) |
| DCGM Exporter | GPUの使用率や温度などのメトリクスをPrometheus形式で公開 | 有効 |
| Operator Validator | ドライバ・Toolkit・Device Pluginが正しく動作しているか検証 | 有効 |
| NVIDIA Driver(コンテナ) | ドライバをコンテナとして導入 | 無効(ホストに導入済みのため) |
| MIG Manager | MIG対応GPUの分割構成を管理 | 無効(MIG非対応のGPUノードを使うため) |
設定手順
設定概要
AirGap環境では、インターネットに接続できる作業用端末で必要な資材を集め、閉域側のノードやレジストリへ運び込んでから設定します。全体の流れは次のとおりです。
- 作業用端末でNVIDIA GPU Driverのパッケージ(.deb)をダウンロードし、GPUノードへ転送する
- GPUノードにNVIDIA GPU Driverをインストールし、動作を確認する
- 必要に応じてGPUノードにラベルとテイントを設定する
- 作業用端末でGPU OperatorのHelmチャートとコンテナイメージを取得し、閉域内のHelmリポジトリ・コンテナレジストリへ登録する
- RKE2のHelmChartリソースでGPU OperatorをDownstream Clusterにインストールし、動作を確認する

インターネットに接続できるのは作業用端末だけです。Downstream Clusterは、閉域内のHarborからチャートとイメージを取得します。
前提条件
- GPUノードのOSが、NVIDIA GPU DriverとGPU Operatorのサポート対象であること(Platform Support)
- SUSE Rancher PrimeのRancher Management Server(以下、RMS)と、RMSから管理されるRKE2のDownstream Clusterが構築済みであること
- RMSとDownstream ClusterはAirGap環境にあり、インターネットに接続できないこと
- Downstream ClusterのRKE2がcontainerd 2.x系を同梱していること(GPU Operator v25.10以降のCDIを使う前提)
- インターネットに接続できる作業用端末があり、GPUノードと同じOS・バージョン(本記事ではUbuntu 24.04)であること
- 作業用端末に
helm、skopeo、kubectl、Docker(またはPodman)が導入されていること - 作業用端末からGPUノードへSSH接続できること
- 作業用端末からDownstream Clusterを
kubectlで操作できること(RMSから取得したkubeconfigを利用) - 作業用端末とDownstream Clusterの両方から接続できる、OCI対応のコンテナレジストリ・Helmリポジトリがあること。また、Downstream Clusterの各ノードがそこからイメージを取得できること(RKE2の
registries.yaml設定など)
構築環境
本記事の検証環境は次のとおりです。GPU Operatorの各コンポーネントは、v26.3.3のデフォルトバージョンを使っています。
| 項目 | バージョン・設定 |
|---|---|
| OS | Ubuntu 24.04 |
| RKE2 | v1.36.3+rke2r1 |
| Rancher Prime | v2.15.2 |
| 搭載GPU | NVIDIA Tesla T4(AWS g4dn.2xlarge) |
| コンテナレジストリ・Helmリポジトリ | Harbor |
| NVIDIA GPU Driver | 580.178.04(nvidia-driver-580-server) |
| NVIDIA GPU Operator | v26.3.3 |
| NVIDIA Container Toolkit | v1.19.1 |
| NVIDIA Device Plugin / GPU Feature Discovery | v0.19.3 |
| DCGM Exporter | 4.5.3-4.8.2-distroless |
| Node Feature Discovery | v0.18.3 |
NVIDIA GPU Driver
設定手順
最初にGPUノードで、搭載されているGPUの種類とカーネルバージョンを確認します。カーネルバージョンは、後でカーネルヘッダをダウンロードする際に使います。
$ lspci | grep -i nvidia
# 出力例
00:1e.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
$ uname -r
# 出力例
7.0.0-1012-aws次に、作業用端末でドライバのパッケージをダウンロードします。apt-get install –download-onlyは、実行した環境に導入済みのパッケージをダウンロード対象から外します。そこで、GPUノードと同じUbuntu 24.04のクリーンなコンテナを起動し、その中でダウンロードします。こうすると作業用端末の環境に左右されず、依存パッケージを漏れなく集められます。
$ mkdir -p ~/nvidia-driver-pkgs
$ docker run --rm -it -v ~/nvidia-driver-pkgs:/pkgs ubuntu:24.04 bashコンテナ内で、利用可能なドライバを確認します。データセンター向けGPUでは、末尾が-serverのパッケージを選びます。
# apt-get update
# apt-cache search nvidia-driver | grep server
# 出力例
nvidia-driver-470-server - NVIDIA Server Driver metapackage
・
・
・
nvidia-driver-580-server - NVIDIA Server Driver metapackage使用するドライバを決めたら、カーネルヘッダとあわせてダウンロードします。ドライバのDKMSモジュールはGPUノード上でビルドされるため、GPUノードのカーネルに対応したlinux-headersが必要です。指定できるバージョンはLaunchpadで確認できます。
7.0.0-1012-awsのカーネルバージョンでnvidia-driver-580-serverをインストールする場合は、コンテナ内で次のように実行します。ダウンロードしたパッケージは、マウントした/pkgs経由で作業用端末の~/nvidia-driver-pkgsに保存されます。
# apt-get install --download-only -y \
nvidia-driver-580-server=580.178.04-0ubuntu0.24.04.1 \
linux-headers-<GPUノードのカーネルバージョン>
# cp /var/cache/apt/archives/*.deb /pkgs/
# exitクリーンなコンテナでダウンロードするため、GPUノードに導入済みの基本パッケージも含まれます。GPUノードのパッケージが古い場合、インストール時にそれらも更新される点に注意してください。
ダウンロードしたパッケージを、作業用端末からGPUノードに転送します。
$ scp -r -i <SSH鍵> ~/nvidia-driver-pkgs ubuntu@<GPUノードIP>:~/GPUノード上でパッケージをインストールし、再起動します。
$ cd ~/nvidia-driver-pkgs
$ apt-get install -y --no-download ./*.deb
$ sudo reboot動作確認
再起動後、インストールが正常に完了したかをGPUノード上で確認します。まず、nvidia-smiでGPUの情報とドライババージョンが表示されることを確認します。
$ nvidia-smi
# 出力例
Fri Sep 25 06:34:12 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.178.04 Driver Version: 580.178.04 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 Tesla T4 Off | 00000000:00:1E.0 Off | 0 |
| N/A 32C P0 26W / 70W | 0MiB / 15360MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
次に、NVIDIAのカーネルモジュールがロードされていることを確認します。
$ lsmod | grep nvidia
# 出力例
nvidia_uvm 2080768 0
nvidia_drm 139264 0
nvidia_modeset 1687552 1 nvidia_drm
nvidia 105373696 3 nvidia_uvm,nvidia_drm,nvidia_modeset
drm_ttm_helper 20480 1 nvidia_drm
video 77824 1 nvidia_modeset最後に、GPU Operatorの各コンポーネントがドライバとのやり取りに使うlibnvidia-ml.soが存在することも確認しておきます(RKE2 GPU Operators)。
$ find /usr/ -iname libnvidia-ml.so*
# 出力例
/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.580.178.04
/usr/lib/x86_64-linux-gnu/libnvidia-ml.soノードラベリング・テイント設定
GPUを使うアプリケーションだけをGPUノードに配置したい場合は、ラベルとテイントで管理します。ここからのkubectlは、Downstream Clusterのkubeconfigを設定した作業用端末(またはRancher UIのkubectlシェル)で実行します。
ラベルは、ワークロードのnodeSelectorやnodeAffinityでGPUノードを指定するために付与します。GPU Operatorの導入後はnvidia.com/gpu.present=trueなどのラベルも自動で付与されるため、独自ラベルは運用上の必要に応じて付けてください。
$ kubectl label node <GPUノード名> accelerator=nvidia-gpuテイントは、GPUを使わないPodがGPUノードに配置されるのを防ぐために設定します。
$ kubectl taint nodes <GPUノード名> nvidia.com/gpu=dedicated:NoScheduleGPU OperatorのDaemonSetは、デフォルトでnvidia.com/gpuキーのNoScheduleテイントを許容する設定になっているため、このテイントを先に設定しても導入に影響はありません。一方、GPUを使うワークロード側には同じキーのtolerationsを設定する必要があります。
NVIDIA GPU Operator
設定手順
まず、閉域内のHarborに次の2つのプロジェクトを作成します。
- nvidia-chart:GPU OperatorのHelmチャート用
- nvidia:GPU Operatorが使うコンテナイメージ用
プロジェクトを非公開にする場合は、Downstream Cluster側にも認証情報の設定が必要です(イメージはregistries.yaml、チャートはHelmChartリソースの認証用フィールド)。
作業用端末からNVIDIA GPU OperatorのHelmチャートをダウンロードします。
$ helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
$ helm repo update
$ helm pull nvidia/gpu-operator --version v26.3.3Helmリポジトリにログインし、チャートをOCI形式で登録します。本記事のHarborは自己署名証明書のためTLS検証をスキップしています。
$ helm registry login <Helmリポジトリのドメイン> \
--username <Helmリポジトリのユーザ名> \
--password <Helmリポジトリのパスワード> \
--insecure
$ helm push gpu-operator-v26.3.3.tgz oci://<Helmリポジトリのドメイン>/nvidia-chart --insecure-skip-tls-verify次に、GPU Operatorが使うコンテナイメージをskopeoでコンテナレジストリへコピーします。
| コピー元イメージ | 使用するコンポーネント |
|---|---|
| nvcr.io/nvidia/gpu-operator:v26.3.3 | GPU Operator本体、Operator Validator |
| nvcr.io/nvidia/k8s/container-toolkit:v1.19.1 | NVIDIA Container Toolkit |
| nvcr.io/nvidia/k8s-device-plugin:v0.19.3 | NVIDIA Device Plugin、GPU Feature Discovery |
| nvcr.io/nvidia/k8s/dcgm-exporter:4.5.3-4.8.2-distroless | DCGM Exporter |
| registry.k8s.io/nfd/node-feature-discovery:v0.18.3 | Node Feature Discovery |
${src#*/}で先頭のnvcr.io/を取り除き、<コンテナレジストリのドメイン>/nvidia/...という同じ階層でコピーしています。NFDのみ取得元が異なるため、個別にコピーします。
$ REGISTRY=<コンテナレジストリのドメイン>
$ skopeo login --tls-verify=false ${REGISTRY}
$ for src in \
nvcr.io/nvidia/gpu-operator:v26.3.3 \
nvcr.io/nvidia/k8s/container-toolkit:v1.19.1 \
nvcr.io/nvidia/k8s-device-plugin:v0.19.3 \
nvcr.io/nvidia/k8s/dcgm-exporter:4.5.3-4.8.2-distroless; do
skopeo copy --dest-tls-verify=false docker://${src} docker://${REGISTRY}/${src#*/}
done
$ skopeo copy --dest-tls-verify=false \
docker://registry.k8s.io/nfd/node-feature-discovery:v0.18.3 \
docker://${REGISTRY}/nvidia/node-feature-discovery:v0.18.3RKE2のHelmChartリソースとして、GPU Operatorのインストール設定を記載したgpu-operator-helm-chart.yamlを作成します。ポイントは次の3点です。
- イメージの参照先:各コンポーネントの
repositoryを閉域内のレジストリに向けます。 - ホスト導入済みドライバの利用:
driver.enabled: falseとし、使わないコンポーネントも無効にして、ミラーが必要なイメージを減らしています。MIG対応GPUを使う場合はmigManagerを有効にし、k8s-mig-managerイメージもコピーしてください。 - RKE2固有の設定:RKE2のcontainerdはソケットの場所が標準と異なるため、
toolkit.envでCONTAINERD_SOCKETを指定します(RKE2 GPU Operators)。
devicePlugin.configはタイムスライシングの設定です。replicas: 4により、1枚の物理GPUを4つのnvidia.com/gpuとして公開し、複数のPodで時分割共有できます。ただし、Pod間でGPUメモリは分離されないため、不要な場合はconfigブロックごと削除してください(Time-Slicing GPUs)。
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: gpu-operator
namespace: kube-system
spec:
chart: oci://<Helmリポジトリのドメイン>/nvidia-chart/gpu-operator
version: v26.3.3
targetNamespace: gpu-operator
createNamespace: true
insecureSkipTLSVerify: true
valuesContent: |-
validator:
repository: <コンテナレジストリのドメイン>/nvidia
image: gpu-operator
version: v26.3.3
operator:
repository: <コンテナレジストリのドメイン>/nvidia
image: gpu-operator
version: v26.3.3
devicePlugin:
repository: <コンテナレジストリのドメイン>/nvidia
image: k8s-device-plugin
version: v0.19.3
# タイムスライシングを使わない場合はconfigブロックを削除
config:
create: true
name: "time-slicing-config"
default: "t4-sharing"
data:
t4-sharing: |-
version: v1
flags:
migStrategy: none
sharing:
timeSlicing:
resources:
- name: nvidia.com/gpu
replicas: 4
dcgmExporter:
repository: <コンテナレジストリのドメイン>/nvidia/k8s
image: dcgm-exporter
version: 4.5.3-4.8.2-distroless
gfd:
repository: <コンテナレジストリのドメイン>/nvidia
image: k8s-device-plugin
version: v0.19.3
toolkit:
repository: <コンテナレジストリのドメイン>/nvidia/k8s
image: container-toolkit
version: v1.19.1
env:
- name: CONTAINERD_SOCKET
value: /run/k3s/containerd/containerd.sock
node-feature-discovery:
image:
repository: <コンテナレジストリのドメイン>/nvidia/node-feature-discovery
tag: v0.18.3
# ホストにドライバを導入済みのため無効化
driver:
enabled: false
# 本記事では使わないコンポーネント
migManager:
enabled: false
vgpuDeviceManager:
enabled: false
vfioManager:
enabled: false
sandboxDevicePlugin:
enabled: false
kataSandboxDevicePlugin:
enabled: false
ccManager:
enabled: false作成したHelmChartリソースをDownstream Clusterに適用します。RKE2のHelm Controllerがチャートを取得し、GPU Operatorをインストールします。
$ kubectl apply -f gpu-operator-helm-chart.yamlContainer Toolkitは設定を反映するためにcontainerdへ再読み込みを指示し、その影響でGPUノードのRKE2が再起動します。稼働中のワークロードがある場合は、作業タイミングに注意してください。
動作確認
GPU OperatorのPodがすべてRunningまたはCompletedになっていることを確認します。出力例はGPUノード2台の環境のものです。
$ kubectl get pod -n gpu-operator
# 出力例
NAME READY STATUS RESTARTS AGE
gpu-feature-discovery-8t85l 2/2 Running 0 5m
gpu-feature-discovery-kkwbb 2/2 Running 0 5m
gpu-operator-7974d8cf9-qq7bh 1/1 Running 0 5m
gpu-operator-node-feature-discovery-gc-5c84b6f5c4-tmf9k 1/1 Running 0 5m
gpu-operator-node-feature-discovery-master-6db6986c58-bjdsg 1/1 Running 0 5m
gpu-operator-node-feature-discovery-worker-55v8j 1/1 Running 0 5m
gpu-operator-node-feature-discovery-worker-b944b 1/1 Running 0 5m
gpu-operator-node-feature-discovery-worker-cxrxs 1/1 Running 0 5m
gpu-operator-node-feature-discovery-worker-kmmv2 1/1 Running 0 5m
gpu-operator-node-feature-discovery-worker-qnz9w 1/1 Running 0 5m
gpu-operator-node-feature-discovery-worker-wxln9 1/1 Running 0 5m
nvidia-container-toolkit-daemonset-4kkbt 1/1 Running 0 5m
nvidia-container-toolkit-daemonset-vbgnc 1/1 Running 0 5m
nvidia-cuda-validator-b8grf 0/1 Completed 0 5m
nvidia-cuda-validator-z7skc 0/1 Completed 0 5m
nvidia-dcgm-exporter-6dhd5 1/1 Running 0 5m
nvidia-dcgm-exporter-8mhhp 1/1 Running 0 5m
nvidia-device-plugin-daemonset-6v4xz 2/2 Running 0 5m
nvidia-device-plugin-daemonset-snx4x 2/2 Running 0 5m
nvidia-operator-validator-4ldlj 1/1 Running 0 5m
nvidia-operator-validator-kctw6 1/1 Running 0 5mGPU Operator全体の状態を表すClusterPolicyがreadyになっていることも確認します。
$ kubectl get clusterpolicy
# 出力例
NAME STATUS AGE
cluster-policy ready <作成日時>以下のコマンドを実行し、GPUノードのラベルにnvidia.com/gpu.machineなどのGPU関連ラベルが付与されていることを確認します。
$ kubectl get node <GPUノード名> -o jsonpath='{.metadata.labels}' | tr ',' '\n' | grep "nvidia.com"
# 出力例
"nvidia.com/cuda.driver-version.full":"580.178.04"
"nvidia.com/cuda.driver-version.major":"580"
"nvidia.com/cuda.driver-version.minor":"178"
"nvidia.com/cuda.driver-version.revision":"04"
"nvidia.com/cuda.driver.major":"580"
"nvidia.com/cuda.driver.minor":"178"
"nvidia.com/cuda.driver.rev":"04"
"nvidia.com/cuda.runtime-version.full":"13.0"
"nvidia.com/cuda.runtime-version.major":"13"
"nvidia.com/cuda.runtime-version.minor":"0"
"nvidia.com/cuda.runtime.major":"13"
"nvidia.com/cuda.runtime.minor":"0"
"nvidia.com/gfd.timestamp":"1790646472"
"nvidia.com/gpu.compute.major":"7"
"nvidia.com/gpu.compute.minor":"5"
"nvidia.com/gpu.count":"1"
"nvidia.com/gpu.deploy.container-toolkit":"true"
"nvidia.com/gpu.deploy.dcgm":"true"
"nvidia.com/gpu.deploy.dcgm-exporter":"true"
"nvidia.com/gpu.deploy.device-plugin":"true"
"nvidia.com/gpu.deploy.driver":"true"
"nvidia.com/gpu.deploy.gpu-feature-discovery":"true"
"nvidia.com/gpu.deploy.node-status-exporter":"true"
"nvidia.com/gpu.deploy.operator-validator":"true"
"nvidia.com/gpu.family":"turing"
"nvidia.com/gpu.machine":"g4dn.2xlarge"
"nvidia.com/gpu.memory":"15360"
"nvidia.com/gpu.mode":"compute"
"nvidia.com/gpu.present":"true"
"nvidia.com/gpu.product":"Tesla-T4-SHARED"
"nvidia.com/gpu.replicas":"4"
"nvidia.com/gpu.sharing-strategy":"time-slicing"
"nvidia.com/mig.capable":"false"
"nvidia.com/mig.strategy":"single"
"nvidia.com/mps.capable":"false"
"nvidia.com/vgpu.present":"false"ノードの割り当て可能リソースにnvidia.com/gpuが追加されていることを確認します。値は「物理GPUの枚数 × タイムスライシングのreplicas」で、本記事では1 × 4 = 4です。タイムスライシングを使わない場合は物理GPUの枚数と一致します。
$ kubectl get node <GPUノード名> -o jsonpath='{.status.allocatable}'
# 出力例
{"cpu":"8","ephemeral-storage":"196555267123","hugepages-1Gi":"0","hugepages-2Mi":"0","memory":"32479456Ki","nvidia.com/gpu":"4","pods":"110"}GPUノード上で、NVIDIAコンテナランタイムのバイナリが配置され、RKE2のcontainerd設定にNVIDIAランタイムが追加されていることを確認します。
$ ls /usr/local/nvidia/toolkit/nvidia-container-runtime
# 出力例
/usr/local/nvidia/toolkit/nvidia-container-runtime
$ grep nvidia /var/lib/rancher/rke2/agent/etc/containerd/config.toml
# 出力例
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'nvidia']
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'nvidia'.options]
BinaryName = "/usr/local/nvidia/toolkit/nvidia-container-runtime"
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'nvidia-cdi']
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'nvidia-cdi'.options]
BinaryName = "/usr/local/nvidia/toolkit/nvidia-container-runtime.cdi"おわりに
本記事では、AirGap環境のRKE2クラスタに対して、ホストへのNVIDIA GPU Driverの導入と、HelmChartリソースによるNVIDIA GPU Operatorの導入を行いました。AirGap環境では、依存パッケージを漏れなく集めることと、イメージの参照先をすべて閉域内のレジストリに向けることが主なポイントです。
これで、GPUを使うAIアプリケーションをクラスタ上で動かす準備が整いました。次回はSUSE AI Factoryのインストール方法について解説したいと思います。
参考
- About the NVIDIA GPU Operator
- Installing the NVIDIA GPU Operator
- Install NVIDIA GPU Operator in Air-Gapped Environments
- NVIDIA GPU Operator Release Notes
- NVIDIA GPU Operator Platform Support
- Time-Slicing GPUs in Kubernetes
- RKE2 Documentation – GPU Operators
- nvidia-graphics-drivers-580-server package in Ubuntu(Launchpad)


