このトピックでは、Alibaba Cloud Container Service (ACS) で CPFS for Lingjun ファイルシステムを静的にマウントし、CPFS の共有ストレージと永続ストレージの機能を確認する方法について説明します。
背景情報
Alibaba Cloud Container Service (ACS) クラスターのストレージ機能は、Kubernetes Container Storage Interface (CSI) プラグインに基づいています。この機能は、ディスク、NAS、OSS などのストレージサービスと統合されており、EmptyDir や ConfigMaps などのネイティブ Kubernetes ボリュームと互換性があります。AI 生成コンテンツ (AIGC) や自動運転などのインテリジェントコンピューティングシナリオでは、永続ボリュームとして CPFS for Lingjun を使用することをお勧めします。
CPFS for Lingjun は、AI サービス向けに設計された Alibaba Cloud のアップグレードされたストレージシステムです。革新的な分散並列ストレージアーキテクチャ、自社開発のパフォーマンス専有型 RoCE RDMA ネットワークプロトコル、仮想ストレージチャンネル技術、およびマルチレベルキャッシュエラスティッククライアントを使用しています。これにより、高スループット、低レイテンシー、およびサーバーレスのパフォーマンス専有型ストレージを提供できます。
前提条件
CPFS for Lingjun ファイルシステムが作成されていること。詳細については、「ファイルシステムを作成する」をご参照ください。
(オプション) VPC マウントポイントが作成されていること。
説明CPFS for Lingjun ファイルシステムを CPU Pod にマウントするには、VPC マウントポイントを作成する必要があります。
CPFS for Lingjun ファイルシステムを GPU Pod にマウントする場合、VPC マウントポイントを作成する必要はありません。
managed-csiprovisioner コンポーネントが ACS クラスターにインストールされていること。
説明ACS コンソールの ACS クラスター管理ページに移動します。クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。[ストレージ] タブで、managed-csiprovisioner がインストールされているかどうかを確認できます。
注意事項
CPFS は共有ファイルシステムです。CPFS ボリュームは複数の Pod にマウントできます。
CPFS for Lingjun は、ACS クラスター内の任意の CPU Pod にマウントできますが、特定の GPU モデルを持つ ACS Pod にのみマウントできます。詳細については、チケットを送信してください。
CPFS for Lingjun ファイルシステムを LINGJUN GPU を使用する Pod にマウントする場合、CPFS for Lingjun ファイルシステムのゾーン (AZ) とクラスター番号が 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 パラメーター
パラメーター
説明
labelsPVC が
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 容量を超えてはなりません。
PersistentVolume (PV) と PersistentVolumeClaim (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 アプリケーションにマウントすることはできません。
パラメーター
説明
例
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 # 計算クラスを 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 を作成します。
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
コンソール
クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページで、[イメージから作成] をクリックします。
Deployment パラメーターを設定し、[作成] をクリックします。
次のパラメーターに注意してください。他のパラメーターはデフォルト設定のままにします。詳細については、「Deployment を使用してステートレスアプリケーションを作成する」をご参照ください。
GPU アクセラレーションアプリケーション
設定ページ
パラメーター
説明
例
基本情報
名前
Deployment の名前。カスタム名を入力します。名前は、インターフェイスに表示されるフォーマット要件に従う必要があります。
cpfs-test
レプリカ
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
レプリカ
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
アプリケーションのデプロイメントステータスを表示します。
[デプロイメント] ページで、アプリケーション名をクリックします。
[Pod] タブで、Pod が正常に実行されていること (ステータスが Running) を確認します。
共有ストレージと永続ストレージの確認
上記の例に従って作成された Deployment には 2 つの Pod が含まれており、両方とも同じ CPFS ファイルシステムをマウントします。これは、次の方法で確認できます:
一方の 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 を再作成します。
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