すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ノードのcGPUバージョンを更新する

最終更新日:Dec 05, 2024

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: ノードをリセットする

ノードの削除と再追加

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。

  3. [ノード] ページで、更新するノードを選択し、[一括削除] をクリックします。 [ノードの削除] ダイアログボックスで、[ドレインノード] を選択します。

  4. 削除したノードを元のノードプールに再度追加します。 詳細については、「既存のECSインスタンスをACKクラスターに追加する」をご参照ください。

Verify the result

  1. 次のコマンドを実行して、ノードで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>
  2. 次のコマンドを実行して、cgpu-installer-****** ポッドにアクセスします。

    kubectl exec -ti cgpu-installer-***** -n kube-system -- bash
  3. 次のコマンドを実行して、cGPUのバージョンを照会します。

    nsenter -t 1 -i -p -n -u -m -- cat /proc/cgpu_km/version

    期待される出力:

    1.5.10
    説明

    1.5.10は最新バージョンです。 cGPUに更新がある場合、バージョン番号が変更されます。

解決策2: スクリプトの実行

ステップ1: ノードのドレイン

  1. 次のコマンドを実行して、ノードをスケジュール不可としてマークします。

    kubectl cordon <NODE1_NAME> <NODE2_NAME>...
  2. 次のコマンドを実行して、ノードをドレインします。

    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に更新がある場合、バージョン番号が変更されます。