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

Container Compute Service:静的にプロビジョニングされたCPFS for LINGJUNボリュームのマウント

最終更新日:Dec 27, 2024

AIGCおよび自動運転のシナリオでは、CPFS for LINGJUNを使用してデータを永続化できます。このトピックでは、静的にプロビジョニングされたCPFSボリュームをマウントし、ボリュームを使用してデータを共有および永続化できることを確認する方法について説明します。

背景情報

CPFS for LINGJUNは、Alibaba Cloudによって開発された超高性能のファイルストレージサービスです。CPFS for LINGJUNはエンドツーエンドのRDMAを提供し、AIGCや自動運転などのインテリジェントコンピューティングシナリオで使用できます。詳細については、ボリュームの概要を参照してください。

重要

ACSはCPFS for LINGJUNのみをサポートしています。CPFS汎用エディションはサポートしていません。CPFS for LINGJUNは招待プレビュー中です。詳細については、CPFS for LINGJUNを参照してください。

前提条件

Alibaba Cloud Container Compute Service(ACS)クラスターに最新バージョンのmanaged-csiprovisionerがインストールされていること。

説明

ACSコンソールのACSクラスター管理ページに移動します。クラスター管理ページの左側のナビゲーションペインで、操作 > アドオンを選択します。ストレージタブで、managed-csiprovisionerがインストールされているかどうかを確認できます。

制限事項

  • CPFS for LINGJUNボリュームは、高性能ネットワークにデプロイされたGPUアクセラレーションワークロードにのみマウントできます。

  • 一部のリージョンとゾーンのみがCPFS for LINGJUNをサポートしています。詳細については、CPFS for LINGJUNを参照してください。

注意事項

  • CPFSは共有ストレージファイルシステムです。CPFSボリュームは複数のポッドにマウントできます。

  • CPFS for LINGJUNは従量課金制を使用します。詳細については、CPFS for LINGJUNを参照してください。

CPFS for LINGJUNファイルシステムの作成

CPFS for LINGJUNは招待プレビュー中です。使用するには、チケットを送信してホワイトリストに追加申請する必要があります。詳細については、CPFS for LINGJUNファイルシステムの作成を参照してください。

静的にプロビジョニングされたCPFSボリュームのマウント

手順1:PVの作成

  1. ACSクラスターに接続します。詳細については、クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続するおよびCloud Shellでkubectlを使用してACSクラスターを管理するを参照してください。

  2. 次のサンプルコードをpv.yamlという名前のYAMLファイルに保存します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: bmcpfs-gpu-hpn
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 10Ti
      claimRef:
        name: bmcpfs-gpu-hpn
        namespace: default
      csi:
        driver: povplugin.csi.alibabacloud.com
        volumeAttributes:
          filesystemId: bmcpfs-*****
          path: /
        volumeHandle: bmcpfs-*****
      persistentVolumeReclaimPolicy: Retain
      storageClassName: alibaba-cloud-cpfs-premium

    次の表にパラメーターを示します。

    パラメーター

    説明

    accessModes

    PVCのアクセスモード。

    capacity

    ボリュームのサイズを宣言します。

    claimRef

    PVCのnamespacename

    csi.driver

    ドライバの種類。povplugin.csi.alibabacloud.comに設定する必要があります。

    csi.volumeAttributes

    • filesystemIdは、CPFS for LINGJUNファイルシステムのID(bmcpfs-*****など)を指定します。

    • pathのデフォルトは/で、CPFSファイルシステムのルートディレクトリを示します。/dirなどのサブディレクトリを指定できます。サブディレクトリが存在しない場合は、自動的に作成されます。

    csi.volumeHandle

    CPFS for LINGJUNファイルシステムのIDを指定します。

    persistentVolumeReclaimPolicy

    再利用ポリシー。Retainに設定します。

  3. 永続ボリューム(PV)を作成します。

    kubectl create -f pv.yaml

手順2:PVCの作成

  1. 次のサンプルコードをpvc.yamlという名前のYAMLファイルに保存します。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bmcpfs-gpu-hpn
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: alibaba-cloud-cpfs-premium
      volumeName: bmcpfs-gpu-hpn
      resources:
        requests:
          storage: 10Ti

    次の表にパラメーターを示します。

    パラメーター

    説明

    accessModes

    PVCのアクセスモード。

    volumeName

    PVの名前に設定します。

    resources.requests

    容量はPVの容量以下にする必要があります。

  2. PVCを作成します。

    kubectl create -f pvc.yaml
  3. PVCを確認し、PVにバインドします。

    kubectl get pvc bmcpfs-gpu-hpn

    期待される出力:

    NAME             STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS                 VOLUMEATTRIBUTESCLASS   AGE
    bmcpfs-gpu-hpn   Bound    bmcpfs-gpu-hpn   10Ti       RWX            alibaba-cloud-cpfs-premium   <unset>                 10s

手順3:アプリケーションを作成し、CPFSファイルシステムをアプリケーションにマウントする

  1. 次の内容に基づいて、cpfs-test.yamlという名前のファイルを作成します。

    YAMLファイルは、2つのポッドのDeploymentを作成します。2つのポッドは、alibabacloud.com/compute-class: gpu-hpnを使用してGPU計算能力を要求し、cpfs-pvc PVCを使用してストレージリソースを要求します。マウントパスは両方のポッドで/dataです。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpfs-test
      labels:
        app: cpfs-test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: cpfs-test
      template:
        metadata:
          labels:
            app: cpfs-test
            alibabacloud.com/compute-class: gpu-hpn
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-cpfs
                mountPath: /data
          volumes:
            - name: pvc-cpfs
              persistentVolumeClaim:
                claimName: bmcpfs-gpu-hpn
  2. Deploymentを作成し、CPFSボリュームをマウントします。

    kubectl create -f cpfs-test.yaml
  3. Deploymentによって作成されたポッドのステータスを表示します。

    kubectl get pod | grep cpfs-test

    次の出力が返された場合、ポッドは作成されています。

    cpfs-test-****-***a   1/1     Running   0          45s
    cpfs-test-****-***b   1/1     Running   0          45s
  4. マウントパスを表示します。

    次のコマンドを実行します。CPFS for LINGJUNファイルシステムのマウントパスにあるデータが返されます。デフォルトでは、データは返されません。

    kubectl exec cpfs-test-****-***a -- ls /data

共有ストレージと永続ストレージの検証

CPFS for LINGJUNファイルシステムは、Deploymentによって作成されたポッドにマウントされます。次の方法を使用して検証できます。

  • 1つのポッドにファイルを作成し、別のポッドからファイルを表示して、共有ストレージを検証します。

  • Deploymentを再作成します。次に、新しく作成されたポッドからファイルシステムに保存されているデータが存在するかどうかを確認して、永続ストレージを検証します。

  1. ポッド情報を表示します。

    kubectl get pod | grep cpfs-test

    期待される出力:

    cpfs-test-****-***a   1/1     Running   0          45s
    cpfs-test-****-***b   1/1     Running   0          45s
  2. 共有ストレージを検証します。

    1. ポッドにファイルを作成します。

      ポッドcpfs-test-****-***aを例として使用します。

      kubectl exec cpfs-test-****-***a -- touch /data/test.txt
    2. 別のポッドからファイルを表示します。

      ポッドcpfs-test-****-***bを例として使用します。

      kubectl exec cpfs-test-****-***b -- ls /data

      期待される出力は次のとおりです。ファイルtest.txtが共有されています。

      test.txt
  3. 永続ストレージを検証します。

    1. Deploymentを再作成します。

      kubectl rollout restart deploy cpfs-test
    2. ポッドが再作成されるまで待ちます。

      kubectl get pod | grep cpfs-test

      期待される出力:

      cpfs-test-****-***c   1/1     Running   0          78s
      cpfs-test-****-***d   1/1     Running   0          52s
    3. 新しく作成されたポッドからファイルシステムに保存されているデータが存在するかどうかを確認します。

      ポッドcpfs-test-c***を例として使用します。

      kubectl exec cpfs-test-****-***c -- ls /data

      期待される出力は次のとおりです。CPFS for LINGJUNファイルシステムに保存されているデータは、ポッドのマウントパスから取得できます。

      test.txt