本トピックでは、Container Service for Kubernetes (ACS) で CPFS for Lingjun ファイルシステムをマウントする方法について説明します。これにより、複数の Pod が同一ファイルシステム上でデータを共有できます。
前提条件
CPFS for Lingjun ファイルシステムを作成しました。詳細については、「ファイルシステムを作成する」をご参照ください。
「managed-csiprovisioner」コンポーネントは、ACS クラスターにインストールされています。
説明ACS コンソールで ACS クラスター管理ページを開きます。クラスター管理ページの左側ナビゲーションウィンドウで、 を選択します。ストレージ タブで、managed-csiprovisioner のインストール状況を確認できます。
ステップ 1:マウント方法の決定
ご利用の計算リソースの種類に応じて、ネットワークタイプを特定し、前提条件を完了してください。
リソース | ネットワークタイプ | 前提条件 |
GPU Pod(RDMA 対応:GU8TF、GU8TEF、L20X、P16EN など) | RDMA | CPFS for Lingjun ファイルシステムと Lingjun GPU が同一ゾーンおよび同一クラスター内にあることを確認してください。 |
GPU Pod(RDMA 非対応:L20、G49E、T4、A10、G59 など) | VPC | |
CPU Pod | VPC |
GPU の種類がわからない場合は、「ACS でサポートされている GPU モデル」をご参照ください。
ステップ 2:永続ボリューム (PV) および永続ボリューム要求 (PVC) の作成
CPFS for Lingjun では静的プロビジョニングを使用するため、永続ボリューム (PV) および永続ボリューム要求 (PVC) を手動で作成する必要があります。
PV(永続ボリューム):クラスター内のストレージ領域です。CPFS ファイルシステムへの接続情報を定義します(例:ファイルシステム ID、ネットワークタイプ、マウントパスなど)。
PVC(永続ボリューム要求):Pod が行うストレージのリクエストです。PVC を使用することで、アプリケーションと基盤となるストレージインフラストラクチャが分離されます。
ご希望に応じて、kubectl またはコンソールのいずれかの方法を選択してください。
Kubectl
ステップ 1 で特定したネットワークタイプに合致する構成を選択してください。
RDMA ネットワーク
本方法は GU8TF、GU8TEF、L20X、P16EN などの Lingjun GPU に適用されます。
PV および PVC を定義するため、
cpfs-pv-pvc.yamlという名前のファイルを作成します。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: 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: 10Tiパラメーターの説明
PV のパラメーター
パラメーター
説明
labelsLabel を設定し、PVC が
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 のラベルを使用して、一致する PV を検索・バインドします。
resources.requests.storagePod が要求するストレージ量です。この値は PV の容量を超えることはできません。
以下のコマンドを実行してリソースを作成します:
kubectl create -f cpfs-pv-pvc.yamlPVC が PV にバインドされていることを確認します。
kubectl get pvc cpfs-test出力に
Boundステータスが表示されれば、PVC が正常にバインドされたことを示します:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
VPC ネットワーク
本方法は CPU Pod および T4、A10 などの汎用 GPU Pod に適用されます。
PV および PVC を定義するため、
cpfs-pv-pvc.yamlという名前のファイルを作成します。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: 10Tiパラメーターの説明
PV のパラメーター
パラメーター
説明
labelsラベルを設定し、PVC が
selectorを使用して一致・バインドできるようにします。accessModesPV のアクセスモードです。
capacity.storageボリュームの容量です。
csi.driverドライバータイプ を
nasplugin.csi.alibabacloud.comに設定します。csi.volumeAttributesCPFS ボリュームの属性です。
mountProtocol:マウントプロトコルです。efcを指定します。server:CPFS ファイルシステムの VPC マウントポイントのドメイン名です。path:デフォルト値は/(マウントされた CPFS ファイルシステムのルートディレクトリ)です。サブディレクトリ(例:/dir)を指定することも可能です。
csi.volumeHandleCPFS for LINGJUN ファイルシステムの ID です。
PVC のパラメーター
パラメーター
説明
accessModesPV から要求するアクセスモードです。
selectorPV のラベルを使用して、一致する PV を検索・バインドします。
resources.requests.storagePod が要求するストレージ量です。この値は PV の容量を超えることはできません。
以下のコマンドを実行してリソースを作成します:
kubectl create -f cpfs-pv-pvc.yamlPVC が PV にバインドされていることを確認します。
kubectl get pvc cpfs-test出力に
Boundステータスが表示されれば、PVC が正常にバインドされたことを示します:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
コンソール
コンソールによるマウントは RDMA ネットワークのみをサポートしています。VPC ネットワークを利用する場合は、kubectl を使用してください。
ACS コンソール にログインします。
Clusters 一覧から、対象のクラスター名をクリックしてクラスター管理ページを開きます。
左側ナビゲーションウィンドウで、 を選択し、作成 をクリックします。以下のパラメーターを設定します。
パラメーター
説明
例
PVC の種類
CPFS を選択します。
CPFS
パラメーター
PVC のカスタム名を入力します。画面上に表示されるフォーマット要件に従ってください。
cpfs-pvc
割り当てモード
既存の PV を使用 または PV の作成 のいずれかを選択します。
PV の作成
CPFS の種類
CPFS for Lingjun を選択します。
CPFS for Lingjun
アクセスモード
ReadWriteMany および ReadWriteOnce をサポートしています。
ReadWriteMany
ファイルシステム ID
マウントする CPFS for Lingjun ファイルシステムの ID です。
bmcpfs-0115******13q5
作成された PV および PVC を確認します。
新規リソースは 永続ボリューム要求 (PVC) および 永続ボリューム (PV) ページに表示されます。それらが正しくバインドされていることを確認してください。
ステップ 3:アプリケーションの作成および CPFS のマウント
PVC を参照する Deployment を作成し、ストレージをコンテナ内の指定ディレクトリにマウントします。kubectl またはコンソールのいずれかの方法に従って操作してください。
Kubectl
ご利用のアプリケーションの種類に合致する構成を選択してください。
GPU アプリケーション
本方法は GU8TF などの Lingjun GPU および T4、A10 などの汎用 GPU の両方に適用されます。
PVC を参照する Deployment を定義するため、
cpfs-test.yamlという名前のファイルを作成します。この YAML マニフェストは 2 つの Pod を含む Deployment を作成します。両方の Pod は、GPU リソースを要求するために
alibabacloud.com/compute-class: gpuラベルを使用します。また、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 # 計算タイプを 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-test # [Deployment] PVC 名と一致させる必要があります。アプリケーションを作成します。
kubectl create -f cpfs-test.yamlPod が正常に実行中であることを確認します。
kubectl get pod | grep cpfs-test出力には、
Runningステータスの Pod が 2 つ表示されます:cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45sマウントが成功したことを確認します。
Pod 内のマウントディレクトリの内容を一覧表示します。デフォルトでは空のディレクトリです。
kubectl exec cpfs-test-****-***a -- ls /data
CPU アプリケーション
cpfs-test.yaml という名前のファイルを作成します。
次の 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-test # [Deployment] PVC 名と一致させる必要があります。Deployment を作成します。
kubectl create -f cpfs-test.yamlDeployment 内の Pod のステータスを確認します。
kubectl get pod | grep cpfs-test出力には、
Runningステータスの Pod が 2 つ表示されます:cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45sマウントパスを確認します。
Pod 内のマウントディレクトリの内容を一覧表示します。デフォルトでは空のディレクトリです。
kubectl exec cpfs-test-****-***a -- ls /data
コンソール
クラスター管理ページの左側ナビゲーションウィンドウで、 を選択します。
デプロイメント ページで、イメージからの作成 をクリックします。
Deployment のパラメーターを設定し、作成 をクリックします。
以下のパラメーターに注意し、その他のパラメーターはデフォルト値のままにしてください。詳細については、「デプロイメントによるステートレスアプリケーションの作成」をご参照ください。
GPU アプリケーション
構成セクション
パラメーター
説明
例
基本情報
アプリケーション名
Deployment のカスタム名です。命名規則については、コンソールのプロンプトをご確認ください。
cpfs-test
レプリカ
Deployment の Pod 数です。
2
タイプ
Pod の計算タイプです。
説明詳細については、「ACS Pod 用の GPU モデルおよびドライバーのバージョンを指定する」をご参照ください。
GPU、T4
コンテナ
イメージ名
アプリケーションをデプロイするために使用するイメージのアドレスです。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
必要なリソース
要求する GPU、vCPU、およびメモリリソースの量です。
GPU:1
CPU:2 vCPU
メモリ:2 GiB
ボリューム
PVC の追加 をクリックし、パラメーターを設定します。
マウント元:作成済みの PVC を選択します。
コンテナパス:コンテナ内のマウントパスです。
マウント元:pvc-cpfs
コンテナパス:/data
CPU アプリケーション
構成セクション
パラメーター
説明
例
基本情報
アプリケーション名
Deployment のカスタム名です。命名規則については、コンソールのプロンプトをご確認ください。
cpfs-test
レプリカ数
Deployment の Pod 数です。
2
タイプ
Pod の計算タイプです。
CPU、汎用
コンテナ
イメージ名
アプリケーションをデプロイするために使用するイメージのアドレスです。
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
必要なリソース
要求する vCPU およびメモリリソースの量です。
CPU:0.25 vCPU
メモリ:0.5 GiB
ボリューム
PVC の追加 をクリックし、パラメーターを設定します。
マウント元:作成済みの PVC を選択します。
コンテナパス:コンテナ内のマウントパスです。
マウント元:pvc-cpfs
コンテナパス:/data
アプリケーションのステータスを確認します。
デプロイメント ページで、アプリケーション名をクリックします。
Pod タブをクリックし、Pod が実行中であることを確認します。
ステップ 4:マウント結果の検証
この例で作成された Deployment には 2 つの Pod が含まれており、どちらの Pod も同一の CPFS ファイルシステムをマウントします。以下のようにしてこの構成を検証できます。
永続ストレージを検証するには、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