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

:ACK専用クラスターのcGPU Basic EditionをcGPU Professional Editionにアップグレードした後、GPU共有とスケジューリングエラーのトラブルシューティング

最終更新日:Jan 24, 2025

このトピックは、cGPU Basic EditionがインストールされているContainer Service for Kubernetes (ACK) 専用クラスターを対象としています。 このトピックでは、ACK専用クラスターのcGPU Basic EditionをcGPU Professional Editionにアップグレードした後に、GPU共有およびスケジューリングエラーのトラブルシューティングを行う方法について説明します。

発行

ACK専用クラスターのcGPU Basic EditionをcGPU Professional Editionにアップグレードすると、kube-schedulerのack-cgpuに関連するエクステンダ設定が失われます。 その結果、クラスター内のGPUリソースを共有またはスケジュールすることはできません。

原因

システムがcGPU Basic EditionをcGPU Professional Editionにアップグレードすると、現在のkube-scheduler設定がデフォルト設定によって上書きされます。 これは、エクステンダ構成の損失を引き起こす。

解決策

この問題をトラブルシューティングするには、次の手順を実行します。

ステップ1: エクステンダの設定を確認する

  1. リモートで各制御プレーンにログオンします。

  2. チェックscheduler-extender-config.jsonに存在します。/etc/kubernetes /マニフェスト /kube-scheduler.yaml次の図に示すように、各制御プレーンのファイルを指定します。

    12

    scheduler-extender-config.jsonが存在しない場合は、ステップ2に進みます。 scheduler-extender-config.jsonが存在する場合、エクステンダ構成は失われず、修復は必要ない。 この場合、DingTalkグループ30421250に参加してテクニカルサポートをリクエストします。

ステップ2: 修復プログラムを実行する

  1. 制御プレーンにリモートでログオンします。

  2. 次のコマンドを実行して、修復ツールをダウンロードします。

    sudo wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/extender-config-update-linux -O /usr/local/bin/extender-config-update
  3. 次のコマンドを実行して、修復ツールを実行可能にします。

    sudo chmod + x /usr/local/bin/extender-config-update
  4. 次のコマンドを実行して修復ツールを起動します。

    sudo extender-config-update
  5. 次のコマンドを実行して、kube-schedulerのステータスを照会します。 kube-schedulerが再起動して実行中かどうかを確認します。

    kubectl get po -n kube-system -l component=kube-scheduler

    次の出力では、AGE列に14秒が表示されます。 これは、kube-schedulerが再起動および修復されたことを示します。

    の名前準備ができているステータスの履歴書
    kube-scheduler-cn-beijing.192.168.8.37 1/1ランニング0 14s
    kube-scheduler-cn-beijing.192.168.8.38 1/1ランニング0 14s
    kube-scheduler-cn-beijing.192.168.8.39 1/1ランニング0 14s 
  6. kube-scheduler.yamlファイルのエクステンダ設定が復元されていることを確認するには、「ステップ1: エクステンダ設定の確認」を参照して。 次に、ステップ3に進みます。

ステップ3: 結果を確認する

  1. 制御プレーンにリモートでログオンします。

  2. という名前のファイルを作成します。/tmp/cgpu-test.yaml検証のため。

  3. 次の内容を /tmp/cgpu-test.yamlファイルに追加します。

    apiVersion: batch/v1
    種類: 仕事
    メタデータ:
      名前: tensorflow-mnist
    spec:
      parallelism: 1
      template:
        metadata:
          ラベル:
            アプリ: tensorflow-mnist
        仕様:
          コンテナ:
          -名: tensorflow-mnist
            画像: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
            command:
            -python
            -tensorflow-sample-code/tfjob/docker/mnist/main.py
            --- max_steps=100000
            --- data_dir=tensorflow-sample-code/data
            resources:
              limits:
                aliyun.com/gpu-mem: 3# GPUメモリのリクエスト3 GiB。
            workingDir: /root
          restartPolicy: 決して 
  4. 次のコマンドを実行してジョブを作成します。

    kubectl create -f /tmp /cpu-test.yaml
  5. 次のコマンドを実行して、ポッドが実行されているかどうかを確認します。

    kubectl get po -l app=tensorflow-mnist

    期待される出力:

    の名前準備ができているステータスの履歴書
    tensorflow-mnist-5htxh 1/1ランニング0 4m3 2s 
  6. 次のコマンドを実行して、ポッドに割り当てられたGPUメモリの実際の量が/tmp/cgpu-test.yamlファイルを作成します。

    kubectlログtensorflow-mnist-5htxh | grep "totalMemory"

    期待される出力:

    totalMemory: 3.15GiBフリーメモリ: 2.85GiB
  7. 次のコマンドを実行して、ポッドに割り当てられたGPUメモリの実際の量が/tmp/cgpu-test.yamlファイルを作成します。

    kubectl exec -ti tensorflow-mnist-5htxh -- nvidia-smi

    次の出力は、ポッドに割り当てられたGPUメモリの実際の容量がMiB 3,226であることを示しています。 量は /tmp/cgpu-test.yamlファイルの設定と同じです。 GPUリソースを共有またはスケジュールできない場合、ポッドに割り当てられるGPUメモリの実際の量は、ホストが提供するGPUメモリの合計に等しくなります。

    月4月13日11:52:25 2020
    + ----------------------------------------------------------------------------- +
    | NVIDIA-SMI 418.87.01ドライバのバージョン: 418.87.01 CUDAバージョン: 10.1 |
    | ------------------------------- + ---------------------- + ---------------------- +
    | GPU名永続性-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr: 使用量 /キャップ | メモリ使用量 | GPU-Util Compute M. |
    |=============================== + ====================== + ======================|
    | 0 Tesla V100-SXM2... オン | 00000000:00:07.0オフ | 0 |
    | N/A 33C P0 56W / 300W | 629MiB / 3226MiB | 1% のデフォルト |
    + ------------------------------- + ---------------------- + ---------------------- +
    + ----------------------------------------------------------------------------- +
    | プロセス: GPUメモリ |
    | GPU PIDタイププロセス名使用法 |
    |=============================================================================|
    + ----------------------------------------------------------------------------- + 

関連ドキュメント