デフォルトでは、Container Service for Kubernetes (ACK) クラスターにインストールされる NVIDIA ドライバーのバージョンは、クラスターのタイプとバージョンによって異なります。より新しいバージョンの NVIDIA ドライバーが必要な場合は、クラスターノードに手動でインストールできます。このトピックでは、Object Storage Service (OSS) URL を追加して、ノードプール内の GPU 高速化ノードの NVIDIA ドライバーバージョンを指定する方法について説明します。
注意事項
ACK は、NVIDIA ドライバーバージョンと CUDA ツールキットバージョンの互換性を保証しません。お客様自身で両者の互換性を確認する必要があります。
さまざまな NVIDIA モデルで必要とされる NVIDIA ドライバーバージョンの詳細については、「NVIDIA 公式ドキュメント」をご参照ください。
NVIDIA ドライバーと NVIDIA Container Runtime などの GPU コンポーネントがインストールされたカスタム OS イメージの場合、ACK は NVIDIA ドライバーとモニタリングコンポーネントなどの他の GPU コンポーネントとの互換性を保証しません。
GPU 高速化ノードの NVIDIA ドライバーバージョンを指定するためにノードプールにラベルを追加すると、ノードが追加されたときにドライバーのインストールプロセスがトリガーされます。したがって、これは新しくスケールアウトされたノードまたは新しく追加されたノードにのみ適用され、既存のノードは影響を受けません。既存のノードに新しいドライバーを適用するには、ノードを削除し、既存のノードを再度追加する必要があります。
gn7 および ebmgn7 インスタンスタイプは、NVIDIA ドライバーバージョン 510.xxx および 515.xxx と互換性がありません。これらのインスタンスタイプでは、470.xxx.xxxx などの 510.xxx より前のバージョンで GPU System Processor (GSP) が無効になっているドライバー、または 525.125.06 以降のバージョンを使用することをお勧めします。
Elastic Compute Service (ECS) インスタンスタイプの ebmgn7 または ebmgn7e は、460.32.03 より後の NVIDIA ドライバーバージョンのみをサポートします。
ノードプールの作成中に、指定されたドライバーバージョンが「ACK がサポートする NVIDIA ドライバーバージョン」にリストされていない場合、ACK は自動的にデフォルトのドライバーバージョンをインストールします。最新の OS と互換性のないドライバーバージョンを指定すると、ノードの追加に失敗する可能性があります。このような場合は、常にサポートされている最新のドライバーバージョンを選択してください。
OSS バケットにアップロードした NVIDIA ドライバーを使用する場合、その NVIDIA ドライバーが OS、Elastic Compute Service (ECS) インスタンスタイプ、またはコンテナーランタイムと互換性がない可能性があります。その結果、NVIDIA ドライバーがインストールされた GPU 高速化ノードの追加に失敗します。ACK は、すべてのノードがクラスターに正常に追加できることを保証しません。
手順 1: NVIDIA ドライバーをダウンロードする
「ACK がサポートする NVIDIA ドライバーバージョン」のリストに必要な NVIDIA ドライバーバージョンが含まれていない場合は、NVIDIA 公式サイトからドライバーをダウンロードできます。この例では、NVIDIA ドライバーのバージョンは 550.90.07 です。ドライバー NVIDIA-Linux-x86_64-550.90.07.run をオンプレミスのマシンにダウンロードします。
手順 2: NVIDIA Fabric Manager をダウンロードする
NVIDIA YUM リポジトリから NVIDIA Fabric Manager をダウンロードします。NVIDIA Fabric Manager のバージョンは、NVIDIA ドライバーのバージョンと同じである必要があります。
wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-550.90.07-1.x86_64.rpm手順 3: OSS バケットを作成する
OSS コンソールにログインし、OSS バケットを作成します。詳細については、「バケットの作成」をご参照ください。
ACK クラスターは NVIDIA ドライバーをインストールする際に内部ネットワーク経由で OSS バケットからドライバーをプルする必要があるため、ACK クラスターが存在するリージョンに OSS バケットを作成することをお勧めします。
手順 4: NVIDIA ドライバーと nvidia-fabric-manager を OSS バケットにアップロードする
OSS コンソールにログインし、ファイル
NVIDIA-Linux-x86_64-550.90.07.runとnvidia-fabric-manager-550.90.07-1.x86_64.rpmをバケットのルートディレクトリにアップロードします。重要ファイルはサブディレクトリではなく、バケットのルートディレクトリにアップロードされていることを確認してください。
バケットページの左側のナビゲーションウィンドウで、 を選択し、アップロードしたドライバーファイルの [アクション] 列にある [詳細] をクリックして詳細を表示します。
[詳細] パネルで、[HTTPS] をオフにして HTTPS を無効にします。
重要ACK はクラスターを作成する際、HTTP URL から NVIDIA ドライバーをプルします。デフォルトでは、OSS バケットは HTTPS を使用します。したがって、[HTTPS] を無効にする必要があります。
バケット詳細ページの左側のナビゲーションウィンドウで、[概要] をクリックしてバケットの内部エンドポイントを取得します。
重要外部エンドポイントから NVIDIA ドライバーをプルするプロセスは遅く、ACK が GPU 高速化ノードをクラスターに追加できない場合があります。内部エンドポイント (-internal キーワード付き) または高速化ドメイン名 (oss-accelerate キーワード付き) から NVIDIA ドライバーをプルすることをお勧めします。
ファイルの取得に失敗した場合は、「OSS アクセス制御」を参照してバケットのアクセス制御ポリシーを変更してください。
手順 5: ノードプールのラベルを構成する
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
左上隅にある [ノードプールを作成] をクリックし、GPU 高速化ノードを追加します。パラメーターの詳細については、「ノードプールの作成と管理」をご参照ください。主な構成は次のとおりです。
[ノードラベル] セクションで、
アイコンをクリックして次のラベルを追加し、対応する値を置き換えます。キー
値
ack.aliyun.com/nvidia-driver-oss-endpoint手順 4。
my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.comack.aliyun.com/nvidia-driver-runfile手順 1。
NVIDIA-Linux-x86_64-550.90.07.runack.aliyun.com/nvidia-fabricmanager-rpm手順 2。
nvidia-fabric-manager-550.90.07-1.x86_64.rpm
手順 6: 指定した NVIDIA ドライバーバージョンがインストールされているか確認する
次のコマンドを実行して、
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>出力は、NODE 列の新しく追加されたノード上の Pod の名前が
nvidia-device-plugin-cn-beijing.192.168.1.128であることを示しています。次のコマンドを実行して、ノードの NVIDIA ドライバーバージョンをクエリします。
kubectl exec -ti nvidia-device-plugin-cn-beijing.192.168.1.128 -n kube-system -- nvidia-smi期待される出力:
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | 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 P100-PCIE-16GB On | 00000000:00:08.0 Off | Off | | N/A 31C P0 26W / 250W | 0MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+出力は、NVIDIA ドライバーのバージョンが 550.90.07 であることを示しています。指定された NVIDIA ドライバーがインストールされています。
その他の方法
CreateClusterNodePool を使用してノードプールを作成する場合、NVIDIA ドライバーの OSS URL をノードプールの構成に追加できます。サンプルコード:
{
// 他のフィールドは表示されていません。
......
"tags": [
{
"key": "ack.aliyun.com/nvidia-driver-oss-endpoint",
"value": "xxxx"
},
{
"key": "ack.aliyun.com/nvidia-driver-runfile",
"value": "xxxx"
},
{
"key": "ack.aliyun.com/nvidia-fabricmanager-rpm",
"value": "xxxx"
}
],
// 他のフィールドは表示されていません。
......
}