Compute Unified Device Architecture (CUDA) ライブラリで新しい NVIDIA ドライバーが必要な場合は、ノード上のドライバーをアップグレードする必要があります。ノードプールを使用すると、クラスター全体のさまざまなドライバーバージョンをバッチで管理できます。このトピックでは、ノードプールを使用して既存ノードの NVIDIA ドライバーをアップグレードする方法について説明します。
制限事項
NVIDIA ドライバーをアップグレードするには、ノードを元のノードプールから削除し、新しいノードプールに追加する必要があります。既存のノードプールには変更したくない他のノードが含まれている可能性があるため、そのノードプール内の特定のノードの NVIDIA ドライバーをアップグレードすることはできません。
このプロセス中に、ノードのオペレーティングシステムと指定された NVIDIA ドライバーが再インストールされます。続行する前に、ノードでワークロードが実行されておらず、重要なデータが含まれていないことを確認してください。リスクを最小限に抑えるために、まず単一のノードをアップグレードしてプロセスを確認してから、バッチでアップグレードしてください。
使用上の注意
ACK は、NVIDIA ドライバーバージョンと CUDA ツールキットバージョンの間の互換性を保証しません。お客様自身でそれらの互換性を確認する必要があります。
さまざまな NVIDIA GPU モデルの詳細なドライバーバージョン要件については、「NVIDIA 公式ドキュメント」をご参照ください。
GPU ドライバーや NVIDIA Container Runtime など、GPU コンポーネントがすでにインストールされているカスタムオペレーティングシステムイメージの場合、ACK はプリインストール済みのドライバーがモニタリングコンポーネントなどの他の ACK GPU コンポーネントと互換性があることを保証できません。
このメソッドは、新しいノードまたはスケールアウトされたノードにのみカスタムドライバーを適用します。インストールはノードの追加時にトリガーされ、既存のノードには影響しません。既存のノードに新しいドライバーを適用するには、まず「ノードを削除」し、次に「クラスターに再度追加」する必要があります。
インスタンスタイプ gn7 および ebmgn7 の場合、ドライバーバージョン 510.xxx および 515.xxx には互換性の問題があります。GSP を無効にした 510 より前のドライバーバージョン (例: 470.xxx.xxxx) 、またはドライバーバージョン 525.125.06 以降を使用することをお勧めします。
ebmgn7 または ebmgn7e インスタンスタイプの Elastic Compute Service (ECS) インスタンスは、NVIDIA ドライバーバージョン 460.32.03 以降のみをサポートします。
ノードプールの作成中に、指定されたドライバーバージョンが「ACK がサポートする NVIDIA ドライバーバージョン」にリストされていない場合、ACK は自動的にデフォルトのドライバーバージョンをインストールします。最新の OS と互換性のないドライバーバージョンを指定すると、ノードの追加に失敗する可能性があります。このような場合は、常にサポートされている最新のドライバーバージョンを選択してください。
OSS バケットにアップロードした NVIDIA ドライバーを使用する場合、NVIDIA ドライバーが OS、Elastic Compute Service (ECS) インスタンスタイプ、またはコンテナーランタイムと互換性がない可能性があります。その結果、NVIDIA ドライバーがインストールされた GPU アクセラレーションノードの追加に失敗します。ACK は、すべてのノードがクラスターに正常に追加できることを保証しません。
ユースケース
ノードプール A を使用してアップグレードされた NVIDIA ドライバーを持つノードを管理する場合、ワークロードの
nodeselectorをノードプール A のラベルに設定することで、これらのノードにワークロードをスケジュールできます。クラスター内の一部のノードの NVIDIA ドライバーをバージョン 550.144.03 に、他のノードを 535.161.07 にアップグレードする必要がある場合、一方のノードグループをノードプール A に、もう一方のグループをノードプール B に追加できます。
ステップ 1: NVIDIA ドライバーバージョンを決定する
NVIDIA ドライバーバージョンを選択する前に、使用している CUDA ライブラリと互換性のある NVIDIA ドライバーバージョンを決定する必要があります。「CUDA Toolkit Release Notes」を参照して、CUDA ライブラリと NVIDIA ドライバーの互換性を確認し、適切な NVIDIA ドライバーバージョンを選択できます。
ステップ 2: ノードを削除する
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、変更したいクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
アップグレードするノードを選択し、[一括削除] をクリックします。[ノードの削除] ダイアログボックスで、[ノードのドレイン] を選択し、[OK] をクリックします。
ステップ 3: ノードプールを作成し、ドライバーバージョンを指定する
バージョンリストからドライバーを選択してノードプールを作成する
「ACK でサポートされている NVIDIA ドライバーバージョン」から、ビジネスニーズに合った NVIDIA ドライバーバージョンを選択します。このトピックでは、ドライバーバージョン 550.144.03 を例として使用します。
このメソッドは、ドライバーをインストールする簡単な方法を提供します。ノードプール内のノードに
ack.aliyun.com/nvidia-driver-version=<driver_version>ラベルを追加し、次に「ステップ 2」でクラスターから削除したノードをこのノードプールに追加します。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
左上隅にある [ノードプールの作成] をクリックします。設定パラメーターの詳細については、「ノードプールの作成と管理」をご参照ください。主要なパラメーターを次のように設定します:
[詳細オプション] の下の [ノードラベル] セクションで、ラベルを追加します。
アイコンをクリックします。[キー] フィールドに ack.aliyun.com/nvidia-driver-versionを入力します。[値] フィールドに550.144.03を入力します。
カスタムドライバーバージョンでノードプールを作成する
このセクションでは、ドライバーバージョン 515.86.01 を例として使用します。
パート 1: カスタムドライバーの準備
必要なドライバーバージョンが「ACK でサポートされている NVIDIA ドライバーバージョン」で利用できない場合は、ターゲットのドライバーバージョンを「NVIDIA 公式ウェブサイト」からダウンロードします。
公式の「NVIDIA YUM」リポジトリから NVIDIA Fabric Manager をダウンロードします。NVIDIA Fabric Manager のバージョンは、ドライバーのバージョンと一致している必要があります。
wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-515.86.01-1.x86_64.rpmObject Storage Service (OSS) コンソールにログインし、OSS バケットを作成します。詳細な手順については、「バケットの作成」をご参照ください。
OSS バケットは、ターゲット ACK クラスターと同じリージョンに配置することをお勧めします。これにより、ACK ノードは GPU ドライバーのインストール時に内部ネットワーク経由で OSS バケットからドライバーをプルできます。
NVIDIA-Linux-x86_64-515.86.01.runファイルとnvidia-fabric-manager-515.86.01-1.x86_64.rpmファイルをターゲットバケットのルートディレクトリに「アップロード」します。ターゲットバケットのページで、左側のナビゲーションウィンドウにある をクリックします。ファイルリストでアップロードしたファイルを見つけ、[アクション] 列の [詳細の表示] をクリックします。
[詳細の表示] パネルで、[HTTPS] スイッチをオフにして HTTPS 設定を無効にします。
ターゲットバケットの詳細ページで、左側のナビゲーションウィンドウにある [概要] をクリックします。ページの下部で、内部エンドポイントを取得します。
パート 2: カスタムドライバーでノードプールを作成する
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
左上隅にある [ノードプールの作成] をクリックします。設定項目の詳細については、「ノードプールの作成と管理」をご参照ください。
[ノードラベル] セクションで、
アイコンをクリックします。キー
値
ack.aliyun.com/nvidia-driver-oss-endpoint「ステップ 1.7」で取得した OSS バケットの内部エンドポイント。
例:
my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.comack.aliyun.com/nvidia-driver-runfile「ステップ 1.1」でダウンロードした NVIDIA ドライバーファイルの名前。
例:
NVIDIA-Linux-x86_64-515.86.01.runack.aliyun.com/nvidia-fabricmanager-rpm「ステップ 1.2」でダウンロードした NVIDIA Fabric Manager ファイルの名前。
例:
nvidia-fabric-manager-515.86.01-1.x86_64.rpm
ステップ 4: ノードをノードプールに追加する
ステップ 5: アップグレードを検証する
次のコマンドを実行して、
component: nvidia-device-pluginラベルを持つ Pod を表示します:kubectl get po -n kube-system -l component=nvidia-device-plugin -o wide期待される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nvidia-device-plugin-cn-beijing.192.168.1.127 1/1 Running 0 6d 192.168.1.127 cn-beijing.192.168.1.127 <none> <none> nvidia-device-plugin-cn-beijing.192.168.1.128 1/1 Running 0 17m 192.168.1.128 cn-beijing.192.168.1.128 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.12 1/1 Running 0 9d 192.168.8.12 cn-beijing.192.168.8.12 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.13 1/1 Running 0 9d 192.168.8.13 cn-beijing.192.168.8.13 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.14 1/1 Running 0 9d 192.168.8.14 cn-beijing.192.168.8.14 <none> <none>出力は、クラスターに新しく追加されたノードに対応する Pod が
nvidia-device-plugin-cn-beijing.192.168.1.128であることを示しています。次のコマンドを実行して、ノードのドライバーバージョンを検証します:
kubectl exec -ti nvidia-device-plugin-cn-beijing.192.168.1.128 -n kube-system -- nvidia-smi期待される出力:
Mon Mar 24 08:51:55 2025 +-----------------------------------------------------------------------------+ | NVIDIA-SMI xxx.xxx.xx Driver Version: xxx.xxx.xx CUDA Version: N/A | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:07.0 Off | 0 | | N/A 27C P0 40W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:08.0 Off | 0 | | N/A 27C P0 40W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 2 Tesla V100-SXM2... On | 00000000:00:09.0 Off | 0 | | N/A 31C P0 39W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 3 Tesla V100-SXM2... On | 00000000:00:0A.0 Off | 0 | | N/A 27C P0 41W / 300W | 0MiB / 16130MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+出力の
Driver Versionがターゲットと一致する場合、アップグレードは成功です。