NVIDIA GPU 管理ダッシュボード

OpenShift Console NVIDIA GPU プラグインをインストールすると、OpenShift Container Platform (OCP) コンソールから NVIDIA GPU の使用状況を確認できるようになります。

https://docs.redhat.com/ja/documentation/openshift_container_platform/4.12/html/monitoring/nvidia-gpu-admin-dashboard#nvidia-gpu-admin-dashboard-introduction_nvidia-gpu-admin-dashboard

2024年6月、OCP4.12に当プラグインをインストールした時の記録です。

# NVIDIA GPU 管理ダッシュボードのインストール
 OpenShift Container Platform (OCP) コンソールで Helm を使用して NVIDIA GPU プラグインをインストールし、GPU 機能を追加します。

OpenShift Console NVIDIA GPU プラグインは、OCP コンソールのリモートバンドルとして機能します。OpenShift Console NVIDIA GPU プラグインを実行するには、OCP コンソールのインスタンスが稼働している必要があります。 

1. Helmのインストール
    ```
    # ls -l helm-v3.15.2-linux-amd64.tar.gz
    -rw-r--r--. 1 root root 16624839 Jun 25 11:45 helm-v3.15.2-linux-amd64.tar.gz
    # tar zxvf helm-v3.15.2-linux-amd64.tar.gz
    linux-amd64/
    linux-amd64/README.md
    linux-amd64/LICENSE
    linux-amd64/helm
    # mv linux-amd64/helm /usr/local/bin/helm
    # helm version
    version.BuildInfo{Version:"v3.15.2", GitCommit:"1a500d5625419a524fdae4b33de351cc4f58ec35", GitTreeState:"clean", GoVersion:"go1.22.4"}
    ```

2. Helm リポジトリーを追加します。

    ```
    # helm repo add rh-ecosystem-edge https://rh-ecosystem-edge.github.io/console-plugin-nvidia-gpu
    "rh-ecosystem-edge" has been added to your repositories
    # helm repo update
    Hang tight while we grab the latest from your chart repositories...
    ...Successfully got an update from the "rh-ecosystem-edge" chart repository
    Update Complete. ⎈Happy Helming!⎈
    ```

3. デフォルトの NVIDIA GPU Operator namespace に Helm チャートをインストールします。 
    ```
    # helm install -n nvidia-gpu-operator console-plugin-nvidia-gpu rh-ecosystem-edge/console-plugin-nvidia-gpu
    NAME: console-plugin-nvidia-gpu
    LAST DEPLOYED: Tue Jun 25 11:49:38 2024
    NAMESPACE: nvidia-gpu-operator
    STATUS: deployed
    REVISION: 1
    NOTES:
    View the Console Plugin NVIDIA GPU deployed resources by running the following command:
    
    $ kubectl -n nvidia-gpu-operator get all -l app.kubernetes.io/name=console-plugin-nvidia-gpu
    
    Enable the plugin by running the following commands:
    
    # check if a plugins field is specified
    $ oc get consoles.operator.openshift.io cluster --output=jsonpath="{.spec.plugins}"
    
    # if not, then run the following to enable the plugin
    $ oc patch consoles.operator.openshift.io cluster --patch '{ "spec": { "plugins": ["console-plugin-nvidia-gpu"] } }' --type=merge
    
    # if yes, then run the following to enable the plugin
    $ oc patch consoles.operator.openshift.io cluster --patch '[{"op": "add", "path": "/spec/plugins/-", "value": "console-plugin-nvidia-gpu" }]' --type=json
    
    # add the required DCGM Exporter metrics ConfigMap to the existing NVIDIA operator ClusterPolicy CR
    $ oc patch clusterpolicies.nvidia.com gpu-cluster-policy --patch '{ "spec": { "dcgmExporter": { "config": { "name": "console-plugin-nvidia-gpu" } } } }' --type=merge
    ```

4. デプロイされたリソースを表示します。
    ```
    # oc -n nvidia-gpu-operator get all -l app.kubernetes.io/name=console-plugin-nvidia-gpu
    NAME                                            READY   STATUS    RESTARTS   AGE
    pod/console-plugin-nvidia-gpu-ff74f6687-kc69r   1/1     Running   0          16m
    
    NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/console-plugin-nvidia-gpu   ClusterIP   172.30.230.198   <none>        9443/TCP   16m
    
    NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/console-plugin-nvidia-gpu   1/1     1            1           16m
    
    NAME                                                  DESIRED   CURRENT   READY   AGE
    replicaset.apps/console-plugin-nvidia-gpu-ff74f6687   1         1         1       16m
    ```

# NVIDIA GPU 管理ダッシュボードの使用

OpenShift Container Platform Web コンソールにログインし、Administrator パースペクティブにて、ホーム > 概要にて、`動的プラグイン` をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/5ec580e8-47b6-a901-e32e-338249b8a022.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/0a3e2bf0-9da3-db7a-d921-c79c58a188ca.png)

コンソールプラグインに無効状態の `console-plugin-nvidia-gpu` があります。これを `有効` にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/6484de74-883f-89bf-3075-9e87c8b694ef.png)

`console-plugin-nvidia-gpu` を有効にすると、「Webコンソールの更新を利用できます」のポップアップが表示されます。`Web コンソールの更新` をクリックし、Web コンソールを更新します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/50268583-656a-4c60-6c50-2f55cf51ea07.png)

Web コンソールを更新すると、コンピュートに `GPUs` が追加されます。ここをクリックすると`NVIDIA GPU 管理ダッシュボード` にアクセスできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/3abdeffb-878a-df3a-bfc8-a828c546dd9b.png)

## クラスター GPU の概要の表示

ホーム > 概要にて、GPUに関する次の情報を確認できるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/3ca243fc-7bcf-d304-108b-727464590c34.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/90860a61-8b8d-85b7-0498-5a29e7b70ac8.png)