すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:CPFS 汎用版で静的ボリュームを使用する

最終更新日:Sep 01, 2026

このトピックでは、静的にプロビジョニングされた Cloud Parallel File System (CPFS) 汎用版のボリュームを Container Service for Kubernetes (ACK) クラスター内のワークロードにマウントする方法について説明します。CPFS は、AI トレーニング、自動運転、遺伝子コンピューティング、ビデオレンダリングなどのハイパフォーマンスコンピューティング (HPC) ワークロード向けに設計されています。

仕組み

ACK クラスターに CPFS 汎用版の静的ストレージボリュームをマウントする主なワークフローは次のとおりです。

image
  1. PersistentVolume (PV) の作成:既存の CPFS 汎用版ファイルシステムのマウントアドレス、容量、アクセスモード、その他のパラメーターを宣言して、クラスターに「登録」します。

  2. PersistentVolumeClaim (PVC) の作成:アプリケーションは PVC を通じて登録済みのストレージリソースを「要求」します。PVC は、指定された条件を満たす PV に自動的にバインドされます。

  3. アプリケーションでのマウント:バインドされた PVC を、コンテナ内の永続ディレクトリとしてアプリケーション Pod にマウントします。

前提条件

  • CSI コンポーネントの確認とアップグレード:csi-plugin と csi-provisioner コンポーネントのバージョンが v1.22.11-abbb810e-aliyun 以降であることを確認します。

    アップグレードについては、「CSI コンポーネントのアップグレード」をご参照ください。
  • ストレージコンポーネントが CPFS のマウントをサポートするように設定されていること。

    設定手順

    設定方法は csi-plugin のバージョンによって異なります。

    csi-plugin 1.33 以降

    CSI がマウントのために cnfs-nas-daemon を呼び出すように、cnfs-nas-daemon コンポーネントをインストールし、csi-plugin を設定して AlinasMountProxy=true FeatureGate を有効にします。詳細な手順については、「cnfs-nas-daemon アドオンを管理する」をご参照ください。

    csi-plugin 1.33 未満

    1. ConfigMap を設定して、CPFS 汎用版のマウント時に使用される NFS プロトコルを有効にします。

      cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: csi-plugin
        namespace: kube-system
      data:
        cpfs-nas-enable: "true"
      EOF
    2. csi-plugin を再起動して、関連する依存関係をインストールします。

      この操作は、通常のビジネスオペレーションには影響しません。

      kubectl -n kube-system rollout restart daemonset csi-plugin

      実行結果の例:

      daemonset.apps/csi-plugin restarted
  • ACK クラスターからアクセス可能な CPFS 汎用版ファイルシステム、プロトコルサービス、およびマウントアドレスが準備されていること。

    まだ作成していない場合は、クラスターが存在するリージョンでCPFS 汎用版ファイルシステムを作成し、クラスターに対応する VPC と vSwitch を使用してプロトコルサービスを作成し、マウントポイントを生成します。

    • ファイルシステム:クラスターと同じリージョンにあり、バージョンが 2.3.0 以降である必要があります。CPFS 汎用版がサポートされているリージョンをご参照ください。

      NAS コンソールのファイルシステムリスト ページで、目的の CPFS ファイルシステムをクリックし、基本情報 ページで CPFS のバージョン番号を確認します。
    • プロトコルサービス:CPFS は VPC をまたいだマウントをサポートしていません。使用する VPC はクラスターの VPC と同じである必要があります。

    • プロトコルサービスのマウントアドレス (マウントポイントドメイン名とエクスポートディレクトリで構成) を取得します。エクスポートディレクトリとして / が指定されている場合、マウントアドレスは cpfs-****.<Region ID>.cpfs.aliyuncs.com:/share です。

      プロトコルサービス ページで、ディレクトリのエクスポート をクリックし、マウントアドレス 列のマウントアドレスをコピーして保存します。
  • CPFS 汎用版の制限事項を理解していること。

ステップ 1:PersistentVolume (PV) の作成

クラスターに PV を作成して、既存の CPFS ファイルシステムを「登録」します。

  1. 次の内容を cpfs-pv.yaml ファイルとして保存します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: cpfs-pv
      labels:  # 後続の PVC バインド用にラベルを定義します
        alicloud-pvname: cpfs-pv
    spec:
      accessModes:  # アクセスモード
      - ReadWriteMany
      capacity:
        storage: 20Gi  # PV の総容量を定義します
      csi:
        driver: nasplugin.csi.alibabacloud.com  # この値に固定します
        volumeAttributes:
          mountProtocol: cpfs-nfs   # NFS プロトコルを使用してマウントします
          path: "/share"    # マウントアドレスのマウントディレクトリ
          volumeAs: subpath    # サブディレクトリ
          server: "cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com" # マウントアドレスのマウントポイントドメイン名
        volumeHandle: cpfs-pv  # ボリュームの一意の識別子。metadata.name と一致させる必要があります
      mountOptions:  # NFS マウントオプション
      - rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport
      - vers=3

    主なパラメーターの説明:

    パラメーター

    説明

    accessModes

    PV のアクセスモード。

    capacity.storage

    ボリュームのストレージ容量。

    csi.driver

    ドライバータイプ。CPFS General Purpose を使用する場合、nasplugin.csi.alibabacloud.com に固定されます。

    csi.volumeAttributes.server

    CPFS 汎用版のプロトコルサービスのエクスポートディレクトリのマウントアドレスにおけるマウントポイントドメイン名。

    csi.volumeAttributes.path

    CPFS 汎用プロトコルサービスのエクスポートディレクトリのマウントアドレス内のマウントディレクトリです (例: /share)。 /share/dir のように、サブディレクトリに設定することもできます。

    csi.volumeAttributes.mountProtocol

    cpfs-nfs は、NFS プロトコルを使用して CPFS をマウントすることを示します。

    csi.volumeAttributes.volumeAs

    subpath は、サブディレクトリタイプの PV を作成することを示します。

    csi.volumeHandle

    PV 名と一致させる必要があります。

  2. 次のコマンドを実行して PV を作成します。

    kubectl apply -f cpfs-pv.yaml
  3. PV のステータスを表示します。

    kubectl get pv cpfs-pv

    実行結果の例:

    NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    cpfs-pv   20Gi       RWX            Retain           Available                                   2s

ステップ 2:PersistentVolumeClaim (PVC) の作成

PVC を作成して、前の手順で登録したストレージリソースの使用を「要求」します。

  1. 次の内容を cpfs-pvc.yaml として保存します。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: cpfs-pvc
    spec:
      accessModes:
      - ReadWriteMany  # アクセスモード
      resources:
        requests: 
          storage: 20Gi  # 要求するストレージ容量
      selector:  # 
        matchLabels:
          alicloud-pvname: cpfs-pv  # 前に作成した PV にバインドします

    PVC パラメーター

    説明

    accessModes

    PVC が PV に要求するアクセスモード。

    セレクター

    PV のラベルを使用してマッチングとバインドを行います。

    resources.requests.storage

    Pod に割り当てられるストレージ容量。PV の容量を超えてはなりません。

  2. PVC を作成します。

    kubectl apply -f cpfs-pvc.yaml
  3. PVC のステータスを表示して、PV に正常にバインドされていることを確認します。

    kubectl get pvc cpfs-pvc

    出力例は次のとおりです。

    NAME       STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    cpfs-pvc   Bound    cpfs-pv   20Gi       RWX                           <unset>                 18m

ステップ 3:アプリケーションの作成とボリュームのマウント

アプリケーションワークロードを作成し、その設定で以前に作成した PVC の使用を宣言します。

  1. 次の内容を cpfs-test.yaml として保存します。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cpfs-sts
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            volumeMounts:
            - name: cpfs-pvc
              mountPath: /data
          volumes:
          - name: cpfs-pvc
            persistentVolumeClaim:
              claimName: cpfs-pvc
  2. StatefulSet を作成します。

    kubectl apply -f cpfs-test.yaml
  3. Pod のステータスを表示します。

    kubectl get pods -l app=nginx

    実行結果の例:

    NAME         READY   STATUS    RESTARTS   AGE
    cpfs-sts-0   1/1     Running   0          58s
    cpfs-sts-1   1/1     Running   0          50s
  4. コンテナ内のマウントポイントを確認して、CPFS が正常にマウントされたことを確認します。

    kubectl exec cpfs-sts-0 -- mount | grep /data

    次の実行結果例は、CPFS 汎用版の静的ボリュームが正常にマウントされたことを示しています。

    cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com:/share on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,port=30000,timeo=600,retrans=2,sec=sys,mountaddr=127.0.1.255,mountvers=3,mountport=30000,mountproto=tcp,local_lock=all,addr=127.0.1.255)

共有ストレージと永続ストレージの検証

アプリケーションが正常にデプロイされた後、ストレージボリュームが期待どおりに機能するかどうかを検証できます。

共有ストレージ

1 つの Pod でファイルを作成し、別の Pod でそれを表示して、データの共有ストレージを検証します。

  1. Pod 情報を表示して Pod 名を取得します。

    kubectl get pod -l app=nginx

    実行結果の例:

    NAME         READY   STATUS    RESTARTS   AGE
    cpfs-sts-0   1/1     Running   0          10s
    cpfs-sts-1   1/1     Running   0          5s
  2. 1 つの Pod にファイルを作成します。

    以下では、Pod cpfs-sts-0 を例に説明します:

    kubectl exec cpfs-sts-0 -- touch /data/test.txt
  3. 別の Pod にファイルが存在するかどうかを確認します。

    以下では、cpfs-sts-1 という名前の Pod を例に説明します。

    kubectl exec cpfs-sts-1 -- ls /data

    実行結果の例:

    test.txt

    以前に作成したファイルが表示され、データが複数の Pod 間で共有できることを示しています。

永続ストレージ

StatefulSet を再構築し、ファイルシステム内のデータが新しい Pod に存在するかどうかを確認して、データの永続ストレージを検証します。

  1. StatefulSet を再起動して再構築をトリガーします。

    kubectl rollout restart sts cpfs-sts
  2. Pod を表示し、新しい Pod が起動して実行中の状態になるまで待ちます。

    kubectl get pod -l app=nginx

    実行結果の例:

    >NAME         READY   STATUS    RESTARTS   AGE
    cpfs-sts-0   1/1     Running   0          1s
    cpfs-sts-1   1/1     Running   0          10s
  3. 以前に作成したファイルが新しい Pod に存在するかどうかを確認します。

    以下では、cpfs-sts-0 という名前の Pod を例に説明します。

    kubectl exec cpfs-sts-0 -- ls /data

    実行結果の例:

    test.txt

    以前に書き込まれたファイルが表示され、データが永続的に保存されていることを示しています。

本番環境の推奨事項

  • パフォーマンスチューニング: CPFS は、高スループットおよび高 IOPS のシナリオに適しています。PV の mountOptions で NFS マウントオプション (rsize や wsize など) を調整することで、パフォーマンスを最適化し、特定のワークロード要件を満たすことができます。

  • データ一貫性:共有ストレージとして、CPFS は複数の Pod が同じファイルに同時に書き込む際のデータ一貫性を保証しません。ファイルの破損を避けるためには、アプリケーション層で分散ロックを実装するか、追記専用書き込みモードを使用する必要があります。

  • ストレージボリューム管理:静的ストレージボリュームを使用する場合、手動での PV 管理が必要です。複数のアプリケーション用にストレージボリュームを自動的に作成および分離する必要があるシナリオでは、CNFS を使用して CPFS の動的ストレージボリュームを管理することを推奨します。詳細については、「汎用 CPFS 動的ボリュームの管理」をご参照ください。