このトピックでは、Container Compute Service (ACS) で CPFS for Lingjun ファイルシステムを静的にマウントし、CPFS の共有ストレージと永続ストレージの機能を確認する方法について説明します。
背景情報
Container Compute Service (ACS) のストレージ機能は、Kubernetes Container Storage Interface (CSI) に基づいています。この機能は、クラウドディスク、NAS、OSS などの Alibaba Cloud ストレージサービスと統合されています。また、EmptyDir や ConfigMap などのネイティブ Kubernetes ボリュームとも互換性があります。AI 生成コンテンツ (AIGC) や自動運転などのインテリジェントコンピューティングシナリオでは、CPFS for Lingjun を永続ボリューム (PV) として使用できます。
CPFS for Lingjun は、AI サービス向けに設計された Alibaba Cloud のアップグレードされたストレージシステムです。革新的な分散並列ストレージアーキテクチャ、自社開発の高性能 RoCE RDMA ネットワークプロトコル、仮想ストレージチャネル技術、階層型キャッシュエラスティッククライアントを使用しています。これにより、高スループット、低レイテンシー、サーバーレスの高性能ストレージを提供できます。
前提条件
CPFS for Lingjun ファイルシステムを作成済みであること。詳細については、「ファイルシステムの作成」をご参照ください。
(オプション) VPC マウントポイントを作成済みであること。
VPC ネットワーク (標準マウント) 経由でファイルシステムにアクセスするには、VPC マウントポイントを作成する必要があります。
RDMA ネットワーク (ハイパフォーマンス高速マウント) 経由でファイルシステムにアクセスする場合、VPC マウントポイントを作成する必要はありません。
ACS クラスターに managed-csiprovisioner コンポーネントがインストールされていること。
説明ACS コンソールの ACS クラスター管理ページに移動します。クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。[ストレージ] タブで、managed-csiprovisioner がインストールされているかどうかを確認できます。
注意事項
CPFS は共有ストレージサービスです。1 つの CPFS ボリュームを複数の Pod にマウントできます。
CPFS for Lingjun は 2 つのネットワークアクセス方法を提供します。Pod のタイプに応じて適切な方法を選択してください:
VPC ネットワーク (汎用):この方法は高い互換性を持ち、ACS クラスター内の任意の CPU または GPU Pod へのマウントをサポートします。
RDMA ネットワーク (ハイパフォーマンス):この方法は、最大のストレージスループットと低レイテンシーを提供します。特定の GPU モデルを持つ ACS Pod へのマウントのみをサポートします。RDMA プロトコルをサポートする GPU モデルのリストについては、「ACS でサポートされる GPU カードタイプ」をご参照ください。
Lingjun GPU を使用する Pod に CPFS for Lingjun ファイルシステムをマウントする場合、CPFS for Lingjun ファイルシステムのゾーンとクラスター番号が Lingjun GPU のものと一致していることを確認してください。
静的にプロビジョニングされた CPFS ボリュームのマウント
ステップ 1:PV と PVC の作成
kubectl
次の YAML コンテンツを cpfs-pv-pvc.yaml として保存します。
ボリュームをマウントする Pod のコンピューティングタイプに基づいて、適切な YAML を選択します。
GPU Pod へのマウント
重要CPFS for Lingjun は、特定の GPU モデルを持つ Pod にのみマウントできます。詳細については、チケットを送信してください。
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 パラメーター
パラメーター
説明
labels永続ボリューム要求 (PVC) が
selectorを使用して PV に一致させてバインドできるようにラベルを設定します。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 の容量を超えることはできません。
CPU Pod へのマウント
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を使用して PV に一致させてバインドできるようにラベルを設定します。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 コンソールにログインします。
Clusters リストで、クラスター名をクリックしてクラスター管理ページに移動します。
クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム要求] ページで、[作成] をクリックします。
ダイアログボックスでパラメーターを設定し、[作成] をクリックします。
次の表は、PVC と PV を同時に作成するためのパラメーターを示しています。最初に PV を作成してから PVC を作成することもできます。
説明コンソールでは、VPC マウントポイントを使用して CPFS for Lingjun ファイルシステムを CPU アプリケーションにマウントすることはできません。
パラメーター
説明
例
PVC タイプ
[CPFS] を選択します。
CPFS
名前
PVC の名前を入力します。名前はインターフェイスに表示されるフォーマット要件を満たす必要があります。
cpfs-test
割り当てモード
必要に応じて [既存ボリューム] または [ボリュームの作成] を選択します。
ボリュームの作成
CPFS タイプ
[CPFS for Lingjun] を選択します。
CPFS for Lingjun
アクセスモード
オプションは [ReadWriteMany] と [ReadWriteOnce] です。
ReadWriteMany
ファイルシステム ID
マウントする CPFS for Lingjun ファイルシステムの ID。
bmcpfs-0115******13q5
作成された 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 # Set the compute class to GPU alibabacloud.com/compute-class: gpu # Specify the GPU model, fill in as needed, such as 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 を作成します。
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 for LINGJUN ファイルシステムのディレクトリ内のデータが返されることが想定されます。デフォルトでは空です。
kubectl exec cpfs-test-****-***a -- ls /data
コンソール
クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。
Deployments ページで、Create from Image をクリックします。
Deployment のパラメーターを設定し、[作成] をクリックします。
以下のパラメーターに注意してください。他のパラメーターはデフォルト設定のままにします。詳細については、「Deployment を使用したステートレスアプリケーションの作成」をご参照ください。
GPU 高速化アプリケーション
設定ページ
パラメーター
説明
例
基本情報
Name:
Deployment の名前。カスタム名を入力します。名前はインターフェイスに表示されるフォーマット要件に従う必要があります。
cpfs-test
Replicas:
Deployment のレプリカ数を設定します。
2
Type
Pod のコンピューティングタイプを選択します。
説明特定の GPU モデルについては、「ACS GPU 高速化 Pod の GPU モデルとドライバーバージョンの指定」をご参照ください。
GPU、T4
コンテナ
Image Name:
アプリケーションのデプロイに使用するイメージアドレスを入力します。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
必要な GPU、vCPU、およびメモリリソースを設定します。
GPU:1
CPU:2 vCPU
メモリ:2 GiB
Volume:
[PVC の追加] をクリックし、パラメーターを設定します。
Mount Source:以前に作成した PVC を選択します。
Container Path:CPFS ファイルシステムがマウントされるコンテナーパスを入力します。
マウントソース:pvc-cpfs
コンテナーパス:/data
CPU 高速化アプリケーション
設定ページ
パラメーター
説明
例
基本情報
アプリケーション名
Deployment の名前。カスタム名を入力します。名前はインターフェイスに表示されるフォーマット要件に従う必要があります。
cpfs-test
レプリカ
Deployment のレプリカ数を設定します。
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
アプリケーションのデプロイメントステータスを表示します。
Deployments ページで、アプリケーション名をクリックします。
[Pod] タブで、Pod が正常に実行されていること (ステータスが Running) を確認します。
共有ストレージと永続ストレージの確認
上記の例に従って作成された Deployment には 2 つの Pod が含まれており、両方とも同じ CPFS ファイルシステムをマウントします。以下の方法でこれを確認できます:
1 つの Pod でファイルを作成し、もう 1 つの 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共有ストレージを確認します。
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
永続ストレージを確認します。
Deployment を再作成します。
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