SUSE RancherでのGPUノード設定方法解説 〜AirGap環境へのNVIDIA GPU Driver・GPU Operator導入〜

はじめに

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というカスタムリソースでまとめて宣言的に管理できます。

出典:About the NVIDIA GPU Operator

GPU Operatorが管理する主なコンポーネントと、本記事での扱いは次のとおりです。

コンポーネント役割本記事での扱い
Node Feature Discovery(NFD)ノードのハードウェア情報を検出し、NVIDIA GPU搭載ノードにラベルを付与有効
GPU Feature Discovery(GFD)GPUの型番・メモリ量・ドライババージョンなどをnvidia.com/*ラベルとして付与有効
NVIDIA Container Toolkitコンテナランタイム(containerd)を設定し、コンテナからGPUを使えるようにする有効
NVIDIA Device PluginGPUを拡張リソースnvidia.com/gpuとしてkubeletに登録し、Podへ割り当てる有効(タイムスライシング設定あり)
DCGM ExporterGPUの使用率や温度などのメトリクスをPrometheus形式で公開有効
Operator Validatorドライバ・Toolkit・Device Pluginが正しく動作しているか検証有効
NVIDIA Driver(コンテナ)ドライバをコンテナとして導入無効(ホストに導入済みのため)
MIG ManagerMIG対応GPUの分割構成を管理無効(MIG非対応のGPUノードを使うため)

設定手順

設定概要

AirGap環境では、インターネットに接続できる作業用端末で必要な資材を集め、閉域側のノードやレジストリへ運び込んでから設定します。全体の流れは次のとおりです。

  1. 作業用端末でNVIDIA GPU Driverのパッケージ(.deb)をダウンロードし、GPUノードへ転送する
  2. GPUノードにNVIDIA GPU Driverをインストールし、動作を確認する
  3. 必要に応じてGPUノードにラベルとテイントを設定する
  4. 作業用端末でGPU OperatorのHelmチャートとコンテナイメージを取得し、閉域内のHelmリポジトリ・コンテナレジストリへ登録する
  5. 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のデフォルトバージョンを使っています。

項目バージョン・設定
OSUbuntu 24.04
RKE2v1.36.3+rke2r1
Rancher Primev2.15.2
搭載GPUNVIDIA Tesla T4(AWS g4dn.2xlarge)
コンテナレジストリ・HelmリポジトリHarbor
NVIDIA GPU Driver580.178.04(nvidia-driver-580-server)
NVIDIA GPU Operatorv26.3.3
NVIDIA Container Toolkitv1.19.1
NVIDIA Device Plugin / GPU Feature Discoveryv0.19.3
DCGM Exporter4.5.3-4.8.2-distroless
Node Feature Discoveryv0.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:NoSchedule

GPU 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.3

Helmリポジトリにログインし、チャートを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.3GPU Operator本体、Operator Validator
nvcr.io/nvidia/k8s/container-toolkit:v1.19.1NVIDIA Container Toolkit
nvcr.io/nvidia/k8s-device-plugin:v0.19.3NVIDIA Device Plugin、GPU Feature Discovery
nvcr.io/nvidia/k8s/dcgm-exporter:4.5.3-4.8.2-distrolessDCGM Exporter
registry.k8s.io/nfd/node-feature-discovery:v0.18.3Node 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.3

RKE2の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.yaml

Container 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          5m

GPU 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のインストール方法について解説したいと思います。

参考

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。
エンジニア募集中!

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です