クラウド並列ファイルストレージ (CPFS) は、ハイパフォーマンスコンピューティング (HPC) シナリオ向けのフルマネージド並列ファイルシステムで、オンデマンド拡張をサポートします。CPFS は、数百から数千台のマシンからの同時アクセスをサポートし、数十 GB のスループット、数百万の IOPS、およびミリ秒未満のレイテンシーを実現します。CPFS 静的ボリュームを ACS Pod にマウントすることで、アプリケーションに共有の永続的な高性能ストレージを提供できます。
注意事項
CPFS for Lingjun (招待制プレビュー) は、AI 生成コンテンツ (AIGC) や自動運転などの AI コンピューティングシナリオに適しています。ボリュームをマウントする前に、次の項目にご注意ください:
招待制プレビュー: CPFS for Lingjun は、エンドツーエンドのリモートダイレクトメモリアクセス (RDMA) ネットワークをサポートしています。このエディションは、特定のリージョンとゾーンでのみ利用可能です。
RDMA ネットワーク要件: RDMA ネットワーク経由で CPFS for Lingjun にアクセスする場合、Pod とファイルシステムは同じ hpn-zone に存在する必要があります。
共有ストレージ: 1 つの CPFS ボリュームを複数の Pod にマウントできます。
サポートされるコンピューティングクラス: CPFS は、任意の CPU タイプの ACS Pod にマウントできますが、特定の GPU モデルの ACS Pod にのみマウントできます。詳細については、チケットを送信してください。
前提条件
managed-csiprovisioner アドオンが ACS クラスターにインストールされていること。
ACS コンソールの ACS クラスター管理ページに移動します。左側メニューで、[Components and Add-ons] をクリックします。[Storage] タブで、managed-csiprovisioner がインストールされていることを確認します。
CPFS ファイルシステムの作成
CPFS for Lingjun
CPFS for Lingjun ファイルシステムを作成します。
ファイルシステムを作成したら、ファイルシステム ID を記録します。
(オプション) VPC マウントターゲットを作成します。
CPU Pod や一部の GPU Pod など、RDMA プロトコルをサポートしていない Pod では、VPC マウントターゲットを作成して VPC 経由で CPFS にアクセスします。
ACS クラスターの Virtual Private Cloud (VPC) と vSwitch を使用して VPC マウントターゲットを作成し、マウントアドレスを生成します。マウントターゲットを作成したら、マウントターゲットドメイン名を記録します。ドメイン名は
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.comという形式です。ファイルシステムの詳細ページで、左側メニューの [Mounting] をクリックします。[Mount Target] タブで、作成した VPC マウントターゲットを見つけます。マウントアドレスの右側にある詳細表示アイコンをクリックして、完全なマウントアドレスを取得し、コピーします。
CPFS ボリュームのマウント
ステップ 1: PV と PVC の作成
kubectl
次の YAML コンテンツを
cpfs-pv-pvc.yamlという名前のファイルに保存します。また、マウントする Pod のコンピューティングクラスに基づいて YAML を選択します。
CPFS for Lingjun
重要CPFS for Lingjun は、特定の GPU モデルの Pod にのみマウントできます。RDMA プロトコルをサポートする GPU モデルについては、「サポートされる GPU タイプ」をご参照ください。
apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: bmcpfsplugin.csi.alibabacloud.com volumeAttributes: # RDMA マウントアドレスと VPC マウントアドレス間の自動切り替えを有効にします mountpointAutoSwitch: "true" vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com 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を使用して PV を照合し、バインドするためのラベルを設定します。accessModesPV のアクセスモード。
capacity.storageボリュームの容量。
csi.driverドライバーの種類。値を
bmcpfsplugin.csi.alibabacloud.comに設定します。csi.volumeAttributesCPFS ボリュームの属性。
filesystemId: CPFS for Lingjun ファイルシステムの ID。path: デフォルト値/は CPFS ファイルシステムのルートディレクトリをマウントします。オプションとして、/dirのようなサブディレクトリを指定することもできます。サブディレクトリが存在しない場合、ボリュームのマウント時に自動的に作成されます。csi.volumeHandleCPFS for Lingjun ファイルシステムの ID。
PVC パラメーター:
パラメーター
説明
accessModesPVC が PV に要求するアクセスモード。
selectorPV のラベルに基づいて PV を照合し、バインドします。
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 for Lingjun を選択します。
[CPFS for Lingjun]
[アクセスモード]
ReadWriteMany と ReadWriteOnce の両方がサポートされています。
ReadWriteMany
[マウントポイントドメイン名:]
汎用 CPFS を使用する場合、マウントする CPFS ファイルシステムディレクトリを指定します。
cpfs-***-***.cn-wulanchabu.cpfs.aliyuncs.comのようなマウントアドレスのみを入力した場合、CPFS ファイルシステムのルートディレクトリ (/) がマウントされます。cpfs-***-***.cn-wulanchabu.cpfs.aliyuncs.com:/dirのようにマウントアドレスとサブディレクトリを入力した場合、CPFS ファイルシステムの/dirディレクトリがマウントされます。/dirディレクトリが存在しない場合は、自動的に作成されます。cpfs-***-vpc-***.cn-wulanchabu.cpfs.aliyuncs.com作成した PVC と PV を表示します。
ボリュームクレーム ページと ボリューム ページに、新しい PVC と PV が表示されます。それらがバインドされていることを確認します。
ステップ 2: アプリケーションを作成して CPFS をマウントする
kubectl
次の YAML コンテンツを
cpfs-test.yamlという名前のファイルに保存します。GPU アプリケーション
次の YAML の例では、2 つの Pod を含む Deployment を作成します。両方の 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 を含む Deployment を作成します。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-testDeployment を作成し、CPFS をマウントします。
kubectl create -f cpfs-test.yamlDeployment 内の 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 ファイルシステムのマウントディレクトリの内容を一覧表示します。新しいファイルシステムの場合、ディレクトリはデフォルトで空であり、出力は返されません。
kubectl exec cpfs-test-****-***a -- ls /data
コンソール
クラスター管理ページの左側メニューで、ワークロード > 展開 を選択します。
展開 ページで、イメージによる作成 をクリックします。
Deployment パラメーターを設定し、作成する をクリックします。
次の表では、注意が必要なパラメーターについて説明します。他のパラメーターにはデフォルト値を使用します。詳細については、「ステートレスワークロード Deployment の作成」をご参照ください。
GPU アプリケーション
設定ページ
パラメーター
説明
例
[基本情報]
[名前]
Deployment の名前。任意の名前を入力します。形式の要件については、ページ上のヒントをご参照ください。
cpfs-test
[Replicas:]
Deployment のレプリカ数。
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 アプリケーション
設定ページ
パラメーター
説明
例
[基本情報]
[名前]
Deployment の名前。任意の名前を入力します。形式の要件については、ページ上のヒントをご参照ください。
cpfs-test
[Replicas:]
Deployment のレプリカ数。
2
[インスタンスタイプ]
Pod のコンピューティングクラスを選択します。
CPU, general-purpose
[コンテナー]
[イメージ名]
アプリケーションのデプロイに使用するイメージのアドレスを入力します。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
[リソースリクエスト]
必要な vCPU とメモリリソースを設定します。
CPU: 0.25 vCPU、メモリ: 0.5 GiB
[ボリューム]
PVC を追加 をクリックし、パラメーターを設定します。マウントソース : 作成した PVC を選択します。コンテナーパス : CPFS ファイルシステムをマウントするコンテナーパスを入力します。
マウントソース : pvc-cpfs、コンテナーパス : /data
アプリケーションのステータスを確認します。
展開 ページで、アプリケーション名をクリックします。
ポッド タブで、Pod のステータスが Running であることを確認します。
CPFS の共有ストレージと永続ストレージの検証
前の例で作成した Deployment には、同じ CPFS ファイルシステムをマウントする 2 つの Pod が含まれています。次の方法でストレージ機能を検証します:
一方の Pod でファイルを作成し、もう一方の Pod でそのファイルを表示して、共有ストレージを検証します。
Deployment を再起動し、ファイルシステム内のデータが新しい Pod にまだ存在するかどうかを確認して、永続ストレージを検証します。
Pod の情報を表示します。
kubectl get pod | grep cpfs-test次の出力が返されます:
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s共有ストレージを検証します。
一方の Pod でファイルを作成します。
次の例では、
cpfs-test-****-***aという名前の Pod を使用します:kubectl exec cpfs-test-****-***a -- touch /data/test.txtもう一方の Pod でファイルを表示します。
次の例では、
cpfs-test-****-***bという名前の Pod を使用します:kubectl exec cpfs-test-****-***b -- ls /data次の出力が返されます。新しいファイル
test.txtが共有されていることがわかります。test.txt永続ストレージを検証します。
Deployment をロールアウト再起動して、その Pod を再作成します。
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