Container Service for Kubernetes (ACK) クラスターには、デフォルトの NVIDIA GPU ドライバーが含まれています。アプリケーションで特定または最新のバージョンが必要な場合は、カスタムドライバーをインストールできます。本トピックでは、ノードプールのラベルと Object Storage Service (OSS) URL を使用して、GPU ノードにカスタム NVIDIA ドライバーをインストールする方法について説明します。
注意事項
バージョン番号を指定して、または OSS URL を使用してノードプールの GPU ドライバーバージョンをカスタマイズした場合、OS イメージの更新後に OS とドライバーが互換性を失う可能性があります。ACK でサポートされている NVIDIA ドライバーバージョンを参照し、互換性のあるドライバーを選択してください。
ご自身で GPU ドライバーを OSS にアップロードする場合、OS イメージ、ECS インスタンスタイプ、またはコンテナランタイムとの互換性の問題により、ノード作成が失敗する可能性があります。この方法によるノード追加の成功は ACK では保証されていません。構成の検証はお客様ご自身で行ってください。
ステップ 1:対象ドライバーのダウンロード
Container Service for Kubernetes (ACK) でサポートされている NVIDIA ドライバーのバージョンリスト に必要なバージョンが含まれていない場合は、NVIDIA 公式サイトからドライバーをダウンロードします。このトピックでは、バージョン 550.90.07 を例として使用します。NVIDIA-Linux-x86_64-550.90.07.run ドライバーファイルをローカルマシンにダウンロードしてください。
NVIDIA Fabric Manager のダウンロード
公式の NVIDIA YUM リポジトリから NVIDIA Fabric Manager をダウンロードします。NVIDIA Fabric Manager のバージョンは、ドライバーのバージョンと一致している必要があります。
wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-550.90.07-1.x86_64.rpmOSS バケットの作成
Object Storage Service (OSS) コンソールにログインし、OSS バケットを作成します。詳細については、「バケットの作成」をご参照ください。
ご利用の ACK クラスターと同じリージョンにバケットを作成してください。これにより、GPU ドライバーのインストール時に ACK ノードが内部ネットワーク経由でバケットからドライバーをプルできるようになります。
OSS バケットへのファイルアップロード
OSS コンソール にログインし、アップロード機能を使用して、
NVIDIA-Linux-x86_64-550.90.07.runおよびnvidia-fabric-manager-550.90.07-1.x86_64.rpmファイルをバケットのルートディレクトリにアップロードします。重要ファイルはサブディレクトリではなく、バケットのルートディレクトリにアップロードしてください。
バケットページの左側ナビゲーションウィンドウで、 をクリックします。アップロードしたファイルの アクション 列で、詳細 をクリックします。
詳細 パネルで、HTTPS を使用する スイッチをオフにします。
重要ACK は HTTP URL を使用してドライバーファイルをプルしますが、OSS はデフォルトで HTTPS を使用します。そのため、HTTPS を使用する スイッチをオフにする必要があります。
バケットの詳細ページで、左側ナビゲーションウィンドウの 概要 をクリックします。ページ下部から内部エンドポイントを確認し、コピーします。
重要外部エンドポイントからドライバーファイルをプルすると速度が遅く、GPU ノードの作成が失敗する可能性があります。内部エンドポイント(
-internalを含む)または高速化ドメイン名(oss-accelerateを含む)を使用してください。ファイルのダウンロードが失敗した場合は、「アクセス制御」をご参照いただき、バケットのアクセス制御ポリシーを調整してください。
ステップ 5:ノードプールのラベル設定
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
左上隅の ノードプールの作成 をクリックして GPU ノードを追加します。パラメーターの詳細については、「ノードプールの作成と管理」をご参照ください。この構成において、以下のパラメーターが重要です。
ノードラベル (Labels) セクションで、
アイコンをクリックし、以下のラベルを追加します。例示されている値は、実際の値に置き換えてください。キー
値
ack.aliyun.com/nvidia-driver-oss-endpointステップ 4 で取得した OSS バケットの内部エンドポイント。
my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.comack.aliyun.com/nvidia-driver-runfileステップ 1 で取得した NVIDIA ドライバーのファイル名。
NVIDIA-Linux-x86_64-550.90.07.runack.aliyun.com/nvidia-fabricmanager-rpmステップ 2 で取得した NVIDIA Fabric Manager のファイル名。
nvidia-fabric-manager-550.90.07-1.x86_64.rpm
ステップ 6:ドライバーのインストールを確認する
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であることがわかります。ノードに正しいドライバー バージョンがインストールされていることを確認するには、次のコマンドを実行します。
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 | +-----------------------------------------------------------------------------------------+この出力から、ドライバー バージョンが 550.90.07 であることが確認できます。これにより、カスタム NVIDIA ドライバーが正常にインストールされたことが検証されます。
その他の方法
CreateClusterNodePool API オペレーションを使用してノードプールを作成する際、ノードプールの構成でカスタムドライバーの OSS URL を設定できます。以下の例は、必要な構成を示しています。
{
// Other sections are omitted.
......
"tags": [
{
"key": "ack.aliyun.com/nvidia-driver-oss-endpoint",
"value": "my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.com"
},
{
"key": "ack.aliyun.com/nvidia-driver-runfile",
"value": "NVIDIA-Linux-x86_64-550.90.07.run"
},
{
"key": "ack.aliyun.com/nvidia-fabricmanager-rpm",
"value": "nvidia-fabric-manager-550.90.07-1.x86_64.rpm"
}
],
// Other sections are omitted.
......
}