Container Service for Kubernetes (ACK) はGPU共有をサポートしています。 GPU共有を有効にするには、ノードにcGPUをインストールする必要があります。 このトピックでは、CLIとACKコンソールを使用してノードのcGPUバージョンを更新する方法について説明します。
前提条件
kubectlクライアントがクラスターに接続されています。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
ack-ai-installerまたはack-cgpuコンポーネントがクラスターにインストールされ、最新バージョンに更新されます。
ack-ai-installerコンポーネントを更新する方法の詳細については、「GPU共有コンポーネントの更新」をご参照ください。
ack-cgpuコンポーネントを更新するには、次の手順を実行します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
Helmページでack-cgpuコンポーネントを見つけ、[操作] 列の [更新] をクリックします。 表示されるページで、[バージョン] を選択し、[OK] をクリックします。
ノードを更新するには、cGPUがインストールされているノードで実行されているアプリケーションを停止する必要があります。 オフピーク時に更新を実行します。
更新ソリューション
解決策2には多くの手順が含まれますが、システムディスクおよびデータディスク上の他のデータは実行中に影響を受けません。
解決策1は、ノードのオペレーティングシステムディスクをリセットします。 ノードのオペレーティングシステムディスクにデータがある場合は、ソリューション2を選択します。
解決策1: ノードをリセットする
ノードの削除と再追加
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ノード] ページで、更新するノードを選択し、[一括削除] をクリックします。 [ノードの削除] ダイアログボックスで、[ドレインノード] を選択します。
削除したノードを元のノードプールに再度追加します。 詳細については、「既存のECSインスタンスをACKクラスターに追加する」をご参照ください。
Verify the result
次のコマンドを実行して、ノードでcgpu-installerを実行するポッドを照会します。
kubectl get po -l name=cgpu-installer -n kube-system -o wide
期待される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES cgpu-installer-***** 1/1 Running 0 4d2h 192.168.XXX.XX1 cn-beijing.192.168.XXX.XX1 <none> <none> cgpu-installer-**2 1/1 Running 0 4d2h 192.168.XXX.XX2 cn-beijing.192.168.XXX.XX2 <none> <none> cgpu-installer-**3 1/1 Running 0 4d2h 192.168.XXX.XX3 cn-beijing.192.168.XXX.XX3 <none> <none>
次のコマンドを実行して、
cgpu-installer-******
ポッドにアクセスします。kubectl exec -ti cgpu-installer-***** -n kube-system -- bash
次のコマンドを実行して、cGPUのバージョンを照会します。
nsenter -t 1 -i -p -n -u -m -- cat /proc/cgpu_km/version
期待される出力:
1.5.10
説明1.5.10
は最新バージョンです。 cGPUに更新がある場合、バージョン番号が変更されます。
解決策2: スクリプトの実行
ステップ1: ノードのドレイン
次のコマンドを実行して、ノードをスケジュール不可としてマークします。
kubectl cordon <NODE1_NAME> <NODE2_NAME>...
次のコマンドを実行して、ノードをドレインします。
kubectl drain <NODE1_NAME> <NODE2_NAME>... --grace-period=120 --ignore-daemonsets=true
ステップ2: 旧バージョンのcGPUをアンインストールする
cGPUがインストールされているノードにログインし、次のコマンドを実行します。
bash /usr/local/cgpu-installer/uninstall.sh
/usr/local/cgpu-installer/uninstall.shが存在しない場合は、次のコマンドを実行して以前のバージョンのcGPUをアンインストールします。
wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/cgpu-uninstall.sh -O /usr/local/cgpu-installer/uninstall.sh
ステップ3: 新しいバージョンのcGPUをインストールする
次のコマンドを実行して、cGPUがインストールされているノードの名前を設定し、cgpu-installerおよびcgpu-core-installerコンポーネントが存在するポッドを再起動します。
export NODE= cn-beijing.192.168.XXX.XXXX # Specify a node.
kubectl delete pods -n kube-system -l name=cgpu-installer --field-selector spec.nodeName=$NODE
kubectl delete pods -n kube-system -l name=cgpu-core-installer --field-selector spec.nodeName=$NODE
Verify the result
次のコマンドを実行して、cGPUバージョンが新しいバージョンに更新されているかどうかを確認します。
cat /proc/cgpu_km/version
期待される出力:
1.5.10
1.5.10
は最新バージョンです。 cGPUに更新がある場合、バージョン番号が変更されます。