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の作成
ACSクラスターに接続します。詳細については、クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続するおよびCloud Shellでkubectlを使用してACSクラスターを管理するを参照してください。
次のサンプルコードを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の
namespace
とname
。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
に設定します。永続ボリューム(PV)を作成します。
kubectl create -f pv.yaml
手順2:PVCの作成
次のサンプルコードを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の容量以下にする必要があります。
PVCを作成します。
kubectl create -f pvc.yaml
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ファイルシステムをアプリケーションにマウントする
次の内容に基づいて、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
Deploymentを作成し、CPFSボリュームをマウントします。
kubectl create -f cpfs-test.yaml
Deploymentによって作成されたポッドのステータスを表示します。
kubectl get pod | grep cpfs-test
次の出力が返された場合、ポッドは作成されています。
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s
マウントパスを表示します。
次のコマンドを実行します。CPFS for LINGJUNファイルシステムのマウントパスにあるデータが返されます。デフォルトでは、データは返されません。
kubectl exec cpfs-test-****-***a -- ls /data
共有ストレージと永続ストレージの検証
CPFS for LINGJUNファイルシステムは、Deploymentによって作成されたポッドにマウントされます。次の方法を使用して検証できます。
1つのポッドにファイルを作成し、別のポッドからファイルを表示して、共有ストレージを検証します。
Deploymentを再作成します。次に、新しく作成されたポッドからファイルシステムに保存されているデータが存在するかどうかを確認して、永続ストレージを検証します。
ポッド情報を表示します。
kubectl get pod | grep cpfs-test
期待される出力:
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s
共有ストレージを検証します。
ポッドにファイルを作成します。
ポッド
cpfs-test-****-***a
を例として使用します。kubectl exec cpfs-test-****-***a -- touch /data/test.txt
別のポッドからファイルを表示します。
ポッド
cpfs-test-****-***b
を例として使用します。kubectl exec cpfs-test-****-***b -- ls /data
期待される出力は次のとおりです。ファイル
test.txt
が共有されています。test.txt
永続ストレージを検証します。
Deploymentを再作成します。
kubectl rollout restart deploy cpfs-test
ポッドが再作成されるまで待ちます。
kubectl get pod | grep cpfs-test
期待される出力:
cpfs-test-****-***c 1/1 Running 0 78s cpfs-test-****-***d 1/1 Running 0 52s
新しく作成されたポッドからファイルシステムに保存されているデータが存在するかどうかを確認します。
ポッド
cpfs-test-c***
を例として使用します。kubectl exec cpfs-test-****-***c -- ls /data
期待される出力は次のとおりです。CPFS for LINGJUNファイルシステムに保存されているデータは、ポッドのマウントパスから取得できます。
test.txt