Cloud Parallel File Storage (CPFS) は、Alibaba Cloud が提供するフルマネージドで拡張可能な並列ファイルシステムであり、ハイパフォーマンスコンピューティングシナリオの要件を満たします。CPFS は、数千台のサーバーからの同時アクセスを可能にします。サブミリ秒という非常に低いレイテンシーで、数十 GB/s のスループットと数百万の IOPS (input/output operations per second) を提供します。このトピックでは、静的にプロビジョニングされた CPFS ボリュームをアプリケーションにマウントする方法と、ボリュームを使用してデータを共有および永続化できることを確認する方法について説明します。
概要
CPFS for LINGJUN (招待プレビュー) は、AIGC や自動運転などのインテリジェントコンピューティングシナリオに適しています。マウントする前に、次の項目に注意してください。
CPFS for LINGJUN は、エンドツーエンドの RDMA ネットワークをサポートしており、現在招待プレビュー中です。特定のリージョンとゾーンのみが CPFS for LINGJUN をサポートしています。
RDMA ネットワーク経由で CPFS for LINGJUN にアクセスする場合、Pod の hpn-zone は CPFS for LINGJUN の hpn-zone と同じである必要があります。
CPFS は共有ストレージファイルシステムです。CPFS ボリュームを複数の Pod にマウントできます。
CPFS ボリュームは、任意の CPU アクセラレーション ACS Pod にマウントできます。ただし、特定の GPU モデルを搭載した ACS Pod のみが CPFS ボリュームをサポートします。詳細については、チケットを送信してください。
前提条件
ACS クラスターに managed-csiprovisioner コンポーネントがインストールされていること。
ACS コンソールで ACS クラスター管理ページに移動します。クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。[ストレージ] タブで、managed-csiprovisioner がインストールされているかどうかを確認できます。
CPFS ファイルシステムの作成
CPFS インテリジェントコンピューティングエディション
CPFS for LINGJUN ファイルシステムを作成する。
ファイルシステム ID を記録します。
(オプション) VPC マウントポイントを作成する。
RDMA プロトコルをサポートしない Pod (CPU Pod や一部の GPU Pod など) の場合、VPC ネットワーク経由で CPFS にアクセスするために VPC マウントポイントを作成する必要があります。
ACS クラスターの VPC と vSwitch を使用して VPC マウントポイントを作成し、マウントアドレスを生成します。マウントポイントのドメイン名を
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.comの形式で記録します。
CPFS ボリュームのマウント
ステップ 1: PV と PVC の作成
kubectl
次の YAML コンテンツを cpfs-pv-pvc.yaml として保存します。
使用する マウント先の Pod のコンピューティングタイプに基づいて、対応する YAML を選択します。
CPFS for LINGJUN (RDMA ネットワーク)
重要特定の GPU モデルを搭載した Pod のみがサポートされます。RDMA プロトコルをサポートする GPU モデルの詳細については、「ACS でサポートされている GPU モデル」をご参照ください。
apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: povplugin.csi.alibabacloud.com volumeAttributes: filesystemId: bmcpfs-***** path: / volumeHandle: bmcpfs-***** --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test resources: requests: storage: 10TiPV パラメーター
パラメーター
説明
labelsPVC が
selectorを使用して照合およびバインドできるようにラベルを設定します。accessModesPV のアクセスモード。
capacity.storage宣言されたボリューム容量。
csi.driverドライバーのタイプ。
povplugin.csi.alibabacloud.comに設定します。csi.volumeAttributesCPFS ボリュームの属性。
filesystemId: CPFS for LINGJUN ファイルシステム ID。path: デフォルトは/で、CPFS ファイルシステムのルートディレクトリを示します。サブディレクトリ (例:/dir) に設定することもできます。サブディレクトリが存在しない場合、ボリュームのマウント時に自動的に作成されます。
csi.volumeHandleCPFS for LINGJUN ファイルシステム ID。
PVC パラメーター
パラメーター
説明
accessModesPVC が PV に要求するアクセスモード。
selectorPV のラベルを使用して照合およびバインドします。
resources.requests.storagePod に割り当てられるストレージ容量。PV 容量を超えてはなりません。
CPFS for LINGJUN (VPC ネットワーク)
apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: mountProtocol: efc server: cpfs-***-vpc-***.cn-wulanchabu.cpfs.aliyuncs.com path: / volumeHandle: bmcpfs-***** --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test resources: requests: storage: 10TiPV パラメーター
パラメーター
説明
labelsPVC が
selectorを使用して照合およびバインドできるようにラベルを設定します。accessModesアクセスモード。
capacity.storage宣言されたボリューム容量。
csi.driverドライバーのタイプ。
povplugin.csi.alibabacloud.comに設定します。csi.volumeAttributesCPFS ボリュームの属性。
mountProtocol: マウントプロトコル。efcに設定します。server: CPFS ファイルシステムの VPC マウントポイントのドメイン名。path: デフォルトは/で、CPFS ファイルシステムのルートディレクトリを示します。サブディレクトリ (例:/dir) に設定することもできます。
csi.volumeHandleCPFS for LINGJUN ファイルシステム ID。
PVC パラメーター
パラメーター
説明
accessModesPVC が PV に要求するアクセスモード。
selectorPV のラベルを使用して照合およびバインドします。
resources.requests.storagePod に割り当てられるストレージ容量。PV 容量を超えてはなりません。
PV と PVC を作成します。
kubectl create -f cpfs-pv-pvc.yamlPVC が PV にバインドされていることを確認します。
kubectl get pvc cpfs-test期待される出力:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
コンソール
ACS コンソールにログインします。
[クラスター] で、クラスターの名前をクリックしてクラスター管理ページに移動します。
クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム要求] ページで、[作成] をクリックします。
表示されるダイアログボックスでパラメーターを設定し、[作成] をクリックします。
次のパラメーターは、PVC と PV を同時に作成するように設定されています。PV を最初に作成してから PVC を作成することもできます。
説明コンソールを使用する場合、VPC マウントポイントを介して CPFS for LINGJUN を CPU アプリケーションにマウントすることは現在サポートされていません。
パラメーター
説明
例
ストレージ要求タイプ
[CPFS] を選択します。
CPFS
名前
PVC のカスタム名を入力します。名前は、インターフェイスに表示されるフォーマット要件に従う必要があります。
cpfs-test
割り当てモード
必要に応じて [既存ボリューム] または [ボリュームの作成] を選択します。
[ボリュームの作成]
CPFS タイプ
[CPFS AI コンピューティングエディション] を選択します。
CPFS AI コンピューティングエディション
アクセスモード
[ReadWriteMany] と [ReadWriteOnce] をサポートします。
[ReadWriteMany]
ファイルシステム ID
マウントする CPFS for AI Computing ファイルシステムの ID を指定します。
bmcpfs-0115******13q5
作成された PVC と PV を表示します。
[永続ボリューム要求] ページと [永続ボリューム] ページで、新しく作成された PVC と PV を確認し、それらが相互にバインドされていることを確認できます。
ステップ 2: アプリケーションを作成し、CPFS ボリュームをマウントする
kubectl
次の YAML コンテンツを使用して、cpfs-test.yaml という名前のファイルを作成します。
GPU アクセラレーションアプリケーション
次の YAML の例では、2 つの Pod で構成されるデプロイメントを作成します。両方の Pod は、
alibabacloud.com/compute-class: gpuラベルを介して GPU 計算能力を使用することを宣言し、cpfs-testという名前の PVC を介してストレージリソースを要求します。両方のマウントパスは/dataです。説明特定の GPU モデルの詳細については、「ACS GPU アクセラレーション Pod の GPU モデルとドライバーバージョンを指定する」をご参照ください。
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 # コンピューティングクラスを GPU に設定 alibabacloud.com/compute-class: gpu # GPU モデルを指定します。必要に応じて T4 などを入力します alibabacloud.com/gpu-model-series: T4 alibabacloud.com/compute-qos: default 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: cpfs-testCPU アクセラレーションアプリケーション
次の YAML の例では、2 つの Pod で構成されるデプロイメントを作成します。
cpfs-testという名前の 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 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: cpfs-testデプロイメントを作成し、CPFS ボリュームをマウントします。
kubectl create -f cpfs-test.yamlデプロイメント内の Pod のデプロイメントステータスを表示します。
kubectl get pod | grep cpfs-test期待される出力は、2 つの Pod が作成されたことを示しています。
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
コンソール
クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページで、[イメージから作成] をクリックします。
デプロイメントパラメーターを設定し、[作成] をクリックします。
次のパラメーターに注意してください。他のパラメーターはデフォルト設定のままにします。詳細については、「デプロイメントを使用してステートレスアプリケーションを作成する」をご参照ください。
GPU アクセラレーションアプリケーション
設定ページ
パラメーター
説明
例
基本情報
名前
デプロイメントの名前。カスタム名を入力します。名前は、インターフェイスに表示されるフォーマット要件に従う必要があります。
cpfs-test
レプリカ
デプロイメントのレプリカ数を設定します。
2
タイプ
Pod のコンピューティングタイプを選択します。
説明特定の GPU モデルの詳細については、「ACS GPU アクセラレーション Pod の GPU モデルとドライバーバージョンを指定する」をご参照ください。
GPU, T4
コンテナー
イメージ名
アプリケーションのデプロイに使用するイメージアドレスを入力します。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
必須リソース
必要な GPU、vCPU、およびメモリリソースを設定します。
GPU: 1
CPU: 2 vCPU
メモリ: 2 GiB
ボリューム
[PVC の追加] をクリックし、パラメーターを設定します。
マウントソース: 先ほど作成した PVC を選択します。
コンテナーパス: CPFS ファイルシステムがマウントされるコンテナーパスを入力します。
マウントソース: pvc-cpfs
コンテナーパス: /data
CPU アクセラレーションアプリケーション
設定ページ
パラメーター
説明
例
基本情報
アプリケーション名
デプロイメントの名前。カスタム名を入力します。名前は、インターフェイスに表示されるフォーマット要件に従う必要があります。
cpfs-test
レプリカ
デプロイメントのレプリカ数を設定します。
2
タイプ
Pod のコンピューティングタイプを選択します。
CPU, 汎用
コンテナー
イメージ名
アプリケーションのデプロイに使用するイメージアドレスを入力します。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
必須リソース
必要な vCPU とメモリリソースを設定します。
CPU: 0.25 vCPU
メモリ: 0.5 GiB
ボリューム
[PVC の追加] をクリックし、パラメーターを設定します。
マウントソース: 先ほど作成した PVC を選択します。
コンテナーパス: CPFS ファイルシステムがマウントされるコンテナーパスを入力します。
マウントソース: pvc-cpfs
コンテナーパス: /data
アプリケーションのデプロイメントステータスを表示します。
[デプロイメント] ページで、アプリケーション名をクリックします。
[Pod] タブで、Pod が正常に実行されていること (ステータスが [実行中]) を確認します。
共有ストレージと永続ストレージの確認
上記の例に従って作成されたデプロイメントには 2 つの Pod が含まれており、どちらも同じ CPFS ファイルシステムをマウントします。次の方法でこれを確認できます。
1 つの Pod にファイルを作成し、もう 1 つの Pod でそのファイルを表示して、共有ストレージを確認します。
デプロイメントを再作成し、新しく作成された Pod にファイルシステム内のデータがまだ存在するかどうかを確認して、永続ストレージを確認します。
Pod 情報を表示します。
kubectl get pod | grep cpfs-test期待される出力:
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s共有ストレージを確認します。
1 つの Pod にファイルを作成します。
cpfs-test-****-***aという名前の Pod を例として使用します。kubectl exec cpfs-test-****-***a -- touch /data/test.txtもう 1 つの Pod でファイルを表示します。
cpfs-test-****-***bという名前の Pod を例として使用します。kubectl exec cpfs-test-****-***b -- ls /data期待される出力は次のとおりで、新しく作成されたファイル
test.txtが共有されていることを示しています。test.txt
永続ストレージを確認します。
デプロイメントを再作成します。
kubectl rollout restart deploy cpfs-testPod を表示し、新しい Pod が正常に作成されるのを待ちます。
kubectl get pod | grep cpfs-test期待される出力:
cpfs-test-****-***c 1/1 Running 0 78s cpfs-test-****-***d 1/1 Running 0 52sファイルシステム内のデータが新しい Pod にまだ存在するかどうかを確認します。
cpfs-test-c***という名前の Pod を例として使用します。kubectl exec cpfs-test-****-***c -- ls /data期待される出力は次のとおりで、CPFS ファイルシステム内のデータがまだ存在し、新しい Pod のマウントディレクトリから取得できることを示しています。
test.txt