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

Container Service for Kubernetes:動的にプロビジョニングされた NAS ボリュームの使用

最終更新日:Jan 09, 2026

File Storage NAS ボリュームは、ビッグデータ分析、データ共有、Web アプリケーション、ログの永続化などのシナリオに最適です。静的にプロビジョニングされた永続ボリュームを使用することに加えて、永続ボリューム要求 (PVC) を作成し、StorageClass を設定してストレージリソースを動的に割り当てることができます。これにより、システムが自動的に永続ボリューム (PV) をプロビジョニングするため、事前にストレージリソースを手動で作成および設定する必要がなくなります。動的にプロビジョニングされた NAS ボリュームは、subpath、sharepath、または filesystem メソッドを使用してマウントできます。

前提条件

  • CSI コンポーネントは、デフォルトでクラスターにインストールされています。コンポーネントをアップグレードするには、「CSI コンポーネントのアップグレード」をご参照ください。

    説明

    FlexVolume は非推奨です。クラスターが FlexVolume コンポーネントを使用している場合、ボリュームをマウントする前に FlexVolume から CSI に移行する必要があります。詳細については、「FlexVolume から CSI への移行」をご参照ください。ストレージコンポーネントのタイプは、[運用管理] > [コンポーネント管理] ページの [ストレージ] タブで確認できます。

  • File Storage NAS サービスが有効化されています。

    初めて File Storage NAS を使用する場合は、File Storage NAS 製品ページ の画面上の指示に従ってサービスを有効化してください。

制限事項

  • SMB プロトコルを使用する NAS ファイルシステムのマウントはサポートされていません。

  • NAS ファイルシステムは、同じ VPC 内の Pod にのみマウントできます。VPC 間のマウントはサポートされていません。

    説明

    同じ VPC 内であれば、NAS ボリュームは異なるゾーンをまたいでマウントできます。

  • 汎用型 NAS と超高速型 NAS ファイルシステムでは、接続性、ファイルシステムの数、プロトコルタイプに関して異なる制約があります。詳細については、「制限事項」をご参照ください。

注意事項

マウント方法

StorageClass の volumeAs パラメーターは、PV と NAS ファイルシステムまたはそのサブディレクトリとの関係を定義します。要件に応じてマウント方法を選択できます。

マウント方法

説明

ユースケース

subpath メソッドを使用したマウント

サブディレクトリタイプの PV を作成します。各 PV は、同じ NAS ファイルシステム内の一意のサブディレクトリに対応します。

  • 複数の Pod が NAS ファイルシステムの同じサブディレクトリをマウントする場合。

  • 複数の Pod が同じ NAS ファイルシステムの異なるサブディレクトリをマウントする場合。

sharepath メソッドを使用したマウント

StorageClass で指定された同じ共有ディレクトリを指すすべての PV を作成します。PV ごとに新しいサブディレクトリは作成されません。

異なる名前空間にまたがる複数の Pod が、同じ NAS サブディレクトリをマウントする必要がある場合。

filesystem メソッドを使用したマウント (非推奨)

PV ごとに NAS ファイルシステムを自動的に作成します。1 つの PV は NAS ファイルシステム全体に対応します。

動的に作成および削除されるマウントポイントとともに、個別の NAS ファイルシステムが使用される場合。

subpath メソッドを使用したマウント

重要

subpath メソッドには、CSI コンポーネントのバージョン 1.31.4 以降が必要です。コンポーネントをアップグレードするには、「CSI コンポーネントのアップグレード」をご参照ください。

ステップ 1: NAS ファイルシステムとマウントポイント情報の取得

  1. NAS コンソールにログインします。左側のナビゲーションウィンドウで、[ファイルシステム] > [ファイルシステムリスト] を選択します。

  2. NAS ファイルシステムとマウントポイントを作成します。

    NFS プロトコルを使用する NAS ファイルシステムのみマウントできます。マウントポイントとクラスターノードは同じ VPC 内にある必要があります。

    • 既存の NAS ファイルシステムがある場合は、要件を満たしていることを確認してください。

    • 利用可能な NAS ファイルシステムがない場合は、要件を満たす NAS ファイルシステムとマウントポイントを作成してください。詳細については、「ファイルシステムの作成」および「マウントポイントの管理」をご参照ください。

  3. マウントポイント情報を取得します。

    1. ファイルシステム ID をクリックします。左側のナビゲーションウィンドウで、[マウントと使用] をクリックします。

    2. [マウントポイント] セクションで、マウントポイントのステータスが [利用可能] であることを確認し、マウントポイントアドレスを取得します。

ステップ 2: StorageClass の作成

kubectl

  1. 次の YAML コンテンツを変更し、alicloud-nas-subpath.yaml として保存します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-subpath
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: subpath
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s"
      archiveOnDelete: "true"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    allowVolumeExpansion: true

    パラメーター

    説明

    mountOptions

    NFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例: vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。

    parameters

    volumeAs

    マウント方法。この例では、値を subpath に設定して、サブディレクトリタイプの PV を作成します。1 つの PV は、NAS ファイルシステム内の 1 つのサブディレクトリに対応します。

    server

    マウントする NAS ファイルシステムのマウントポイントアドレスとサブディレクトリ。フォーマットは <NAS マウントポイントアドレス>:<マウントディレクトリ> です。サブディレクトリを指定しない場合、デフォルトでルートディレクトリ / がマウントされます。

    archiveOnDelete

    reclaimPolicyDelete に設定されている場合に、バックエンドのストレージデータを削除するかどうかを指定します。NAS は共有ストレージサービスであるため、このパラメーターは確認のために追加されています。

    • true (デフォルト): ディレクトリまたはファイルは保持され、archived-{pvName}.{timestamp} に名前が変更されます。

    • false: バックエンドのストレージリソースは完全に削除されます。

    説明

    provisioner

    ドライバーのタイプ。値は nasplugin.csi.alibabacloud.com に設定する必要があり、これは Alibaba Cloud NAS CSI プラグインが使用されることを示します。

    reclaimPolicy

    PV のリクレームポリシー。デフォルト値は Delete です。Retain もサポートされています。

    • Delete: この値は archiveOnDelete と一緒に使用する必要があります。

      • archiveOnDeletetrue の場合、PVC が削除されても NAS ファイルシステム内のファイルは名前が変更されるだけで削除されません。

      • archiveOnDeletefalse の場合、PVC が削除されると NAS ファイルシステム内のファイルも削除されます。

        重要

        NAS ファイルシステム内の subpath ディレクトリとそのファイルは削除されます。NAS ファイルシステム自体は保持されます。NAS ファイルシステムを削除するには、「ファイルシステムの削除」をご参照ください。

    • Retain: PVC が削除されても、PV と NAS ファイルシステム内のファイルは保持されます。手動で削除する必要があります。

    データのセキュリティが最優先事項である場合は、偶発的なデータ損失を防ぐために、このパラメーターを Retain に設定することを推奨します。

    allowVolumeExpansion

    このパラメーターは、汎用型 NAS ファイルシステムでのみサポートされます。このパラメーターを有効にすると、StorageClass によって動的に作成される PV にディレクトリクォータが設定され、利用可能な容量が制限されます。また、PVC を更新してボリューム容量を拡張することもできます。詳細については、「動的にプロビジョニングされた NAS ボリュームのディレクトリクォータの設定」をご参照ください。

    説明

    NAS クォータは非同期で有効になります。PV が動的に作成された後、ディレクトリクォータがすぐに有効にならない場合があります。短時間で大量のデータを書き込むと、ストレージ使用量が容量制限を超える可能性があります。NAS ディレクトリクォータの詳細については、「ディレクトリクォータ」をご参照ください。

  2. StorageClass を作成します。

    kubectl create -f alicloud-nas-subpath.yaml

コンソール

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [ストレージクラス] ページで、[作成] をクリックします。

  3. [作成] ダイアログボックスで、StorageClass のパラメーターを設定し、[作成] をクリックします。

    以下は主要な設定項目です。

    設定項目

    説明

    値の例

    名前

    StorageClass の名前。フォーマット要件の詳細については、コンソールの指示をご参照ください。

    alicloud-nas-subpath

    永続ボリュームタイプ

    [NAS] を選択します。

    NAS

    マウントターゲットの選択

    NAS ファイルシステムのマウントポイントのアドレス。

    0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com

    [ボリュームモード]

    ボリュームのアクセスモード。この例では、subpath メソッドを使用するために [サブディレクトリ] を選択します。各 PV に対して、マウントパスの下に一意のサブディレクトリが自動的に作成されます。データは <NAS マウントポイント>:<マウントパス>/<pv-name>/ に保存されます。

    説明

    [サブディレクトリ] モードには、CSI コンポーネントのバージョン 1.31.4 以降が必要です。それ以外の場合、システムはデフォルトで [共有ディレクトリ] モードになります。

    サブディレクトリ

    マウントパス

    マウントする NAS ファイルシステム上のサブディレクトリ。

    • 設定しない場合、デフォルトでルートディレクトリがマウントされます。

    • 指定したディレクトリが存在しない場合は、自動的に作成されてからマウントされます。

    説明

    汎用型 NAS ファイルシステムのルートディレクトリは / で、超高速型 NAS ファイルシステムのルートディレクトリは /share です。超高速型 NAS ファイルシステムにサブディレクトリをマウントする場合、path/share で始まる必要があります (例: /share/data)。

    /k8s

    回収ポリシー

    PV のリクレームポリシー。偶発的なデータ損失を防ぐために、[保持] を選択することを推奨します。

    • [削除]: このパラメーターは archiveOnDelete と一緒に設定する必要があります。コンソールで [削除] を選択しても有効になりません。これは、PVC を削除しても PV と NAS ボリューム上のデータが削除されないことを意味します。これは、基盤となる archiveOnDelete パラメーターを UI から設定できないためです。archiveOnDelete を設定するには、YAML マニフェストを使用して PV を作成します。YAML テンプレートについては、kubectl タブをご参照ください。

    • [保持]: PVC が削除されても、PV と NAS ボリューム上のデータは削除されません。手動で削除する必要があります。

    保持

    [マウントオプション]

    NFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例: vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。

    デフォルト値を保持

    StorageClass が作成された後、[ストレージクラス] リストで表示できます。

ステップ 3: PVC の作成

kubectl

  1. YAML コンテンツを変更し、nas-pvc.yaml として保存します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-subpath
      resources: 
        requests:
          storage: 20Gi

    パラメーター

    説明

    accessModes

    ボリュームのアクセスモード。デフォルト値は ReadWriteMany です。ReadWriteOnce および ReadOnlyMany もサポートされています。

    storageClassName

    バインドする StorageClass の名前。

    storage

    リクエストするボリュームの容量。

    重要
    • デフォルトでは、NAS ボリュームの実際の利用可能容量はこの設定によって制限されません。容量は NAS ファイルシステムの仕様によって決まります。詳細については、「汎用型 NAS」および「超高速型 NAS」をご参照ください。

    • 汎用型 NAS ファイルシステムを使用し、StorageClass の allowVolumeExpansiontrue に設定した場合、CSI コンポーネントはこの設定に基づいてディレクトリクォータを設定し、NAS ボリュームの利用可能容量を制限します。

  2. PVC を作成します。

    kubectl create -f nas-pvc.yaml
  3. PV を表示します。

    kubectl get pvc

    出力は、CSI コンポーネントが StorageClass に基づいて自動的に PV を作成し、その PV を PVC にバインドしたことを示しています。

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS             VOLUMEATTRIBUTESCLASS   REASON   AGE
    nas-a7540d97-0f53-4e05-b7d9-557309******   20Gi       RWX            Retain           Bound    default/nas-csi-pvc   alicloud-nas-subpath     <unset>                          5m

コンソール

  1. 詳細ページの左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム要求] を選択します。

  2. [永続ボリューム要求] ページで、[作成] をクリックします。

  3. [PVC の作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックします。

    設定項目

    説明

    値の例

    PVC タイプ

    NAS を選択します。

    NAS

    名前

    PVC の名前。名前は名前空間内で一意である必要があります。

    pvc-nas

    割り当てモード

    この例では、[StorageClass を使用] を選択します。

    StorageClass を使用

    既存のストレージクラス

    [StorageClass を選択] をクリックし、前のステップで作成した StorageClass を選択します。

    alicloud-nas-subpath

    容量

    ボリュームの容量。この設定は、アプリケーションが使用できる最大容量を制限するものではありません。

    重要
    • デフォルトでは、NAS ボリュームの実際の利用可能容量はこの設定によって制限されません。容量は NAS ファイルシステムの仕様によって決まります。詳細については、「汎用型 NAS」および「超高速型 NAS」をご参照ください。

    • 汎用型 NAS ファイルシステムを使用し、StorageClass の allowVolumeExpansiontrue に設定した場合、CSI コンポーネントはこの設定に基づいてディレクトリクォータを設定し、NAS ボリュームの利用可能容量を制限します。

    20Gi

    アクセスモード

    デフォルト値は [ReadWriteMany] です。[ReadWriteOnce] または [ReadOnlyMany] を選択することもできます。

    ReadWriteMany

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

kubectl

2 つのデプロイメントを作成し、同じ PVC をマウントします。これにより、同じ NAS ファイルシステム内の同じサブディレクトリを共有できます。

説明

同じ NAS ファイルシステムの異なるサブディレクトリを複数の Pod にマウントするには、サブディレクトリごとに異なる StorageClass と PVC を作成し、それらの PVC を Pod にマウントします。

  1. 次の YAML コンテンツを変更し、ファイルを nginx-1.yaml と nginx-2.yaml として保存します。

    次の YAML テンプレートは、nginx-1.yaml と nginx-2.yaml の設定が metadata.name の値を除いて同じであることを示しています。2 つのアプリケーションは同じ PVC にバインドされています。

    nginx-1.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test-1     
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nas-pvc
                mountPath: "/data"           # NAS ボリュームがコンテナーにマウントされるパス。
          volumes:
            - name: nas-pvc                 
              persistentVolumeClaim:
                claimName: nas-csi-pvc       # PVC をバインドします。

    nginx-2.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test-2     
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nas-pvc
                mountPath: "/data"           # NAS ボリュームがコンテナーにマウントされるパス。
          volumes:
            - name: nas-pvc                 
              persistentVolumeClaim:
                claimName: nas-csi-pvc       # PVC をバインドします。
  2. 2 つのデプロイメントを作成します。

    kubectl create -f nginx-1.yaml -f nginx-2.yaml
  3. Pod 情報を表示します。

    kubectl get pod -l app=nginx

    出力は、同じ NAS ファイルシステムの同じサブディレクトリが異なるアプリケーションにマウントされていることを示しています。

    NAME                         READY   STATUS    RESTARTS   AGE
    nas-test-1-b75d5b6bc-vqwq9   1/1     Running   0          51s
    nas-test-2-b75d5b6bc-8k9vx   1/1     Running   0          44s

コンソール

次の手順を繰り返して、同じ PVC をマウントする 2 つのデプロイメントを作成します。これにより、NAS ファイルシステム内の単一のサブディレクトリを共有できます。

  1. 左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。

  2. [ステートレス] ページで、[イメージから作成] をクリックします。

  3. パラメーターを設定してアプリケーションを作成します。

    次の表に主要なパラメーターを示します。他のパラメーターはデフォルト設定のままにできます。詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。

    設定項目

    パラメーター

    説明

    基本情報

    名前

    デプロイメントのカスタム名を入力します。名前はコンソールに表示されるフォーマット要件を満たす必要があります。

    deployment-nas-1

    [レプリカ数]

    デプロイメントのレプリカ数。

    1

    コンテナ設定

    イメージ名

    アプリケーションのデプロイに使用するイメージのアドレス。

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    [必須リソース]

    必要な vCPU とメモリリソース。

    0.25 vCPU, 512 MiB

    ボリューム

    [PVC の追加] をクリックし、パラメーターを設定します。

    • [マウントソース]: 作成した PVC を選択します。

    • [コンテナーパス]: NAS ファイルシステムをマウントするコンテナーパスを指定します。

    • マウントソース: pvc-nas

    • コンテナーパス: /data

    nas1.png

  4. アプリケーションのデプロイメントステータスを表示します。

    1. [ステートレス] ページで、アプリケーション名をクリックします。

    2. [Pod] タブで、Pod が [実行中] 状態であることを確認します。

sharepath メソッドを使用したマウント

ステップ 1: NAS ファイルシステムとマウントポイント情報の取得

  1. NAS コンソールにログインします。左側のナビゲーションウィンドウで、[ファイルシステム] > [ファイルシステムリスト] を選択します。

  2. NAS ファイルシステムとマウントポイントを作成します。

    NFS プロトコルを使用する NAS ファイルシステムのみマウントできます。マウントポイントとクラスターノードは同じ VPC 内にある必要があります。

    • 既存の NAS ファイルシステムがある場合は、要件を満たしていることを確認してください。

    • 利用可能な NAS ファイルシステムがない場合は、要件を満たす NAS ファイルシステムとマウントポイントを作成してください。詳細については、「ファイルシステムの作成」および「マウントポイントの管理」をご参照ください。

  3. マウントポイント情報を取得します。

    1. ファイルシステム ID をクリックします。左側のナビゲーションウィンドウで、[マウントと使用] をクリックします。

    2. [マウントポイント] セクションで、マウントポイントのステータスが [利用可能] であることを確認し、マウントポイントアドレスを取得します。

ステップ 2: StorageClass の作成

kubectl

  1. 次の内容を alicloud-nas-sharepath.yaml ファイルに保存し、必要に応じてパラメーターを変更します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-sharepath
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: sharepath
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/sharepath"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    パラメーター

    説明

    mountOptions

    NFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例: vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。

    parameters

    volumeAs

    マウント方法。この例では、値を sharepath に設定します。これは、PV が作成されるときに実際のディレクトリは作成されず、代わりに StorageClass で指定されたパスが使用されることを示します。つまり、各 PV は同じ NAS ディレクトリにマッピングされます。

    server

    マウントする NAS ファイルシステムのマウントポイントアドレスとサブディレクトリ。フォーマットは <NAS マウントポイントアドレス>:<マウントディレクトリ> です。

    • サブディレクトリを指定しない場合、デフォルトでルートディレクトリ / がマウントされます。

    • NAS ファイルシステムにディレクトリが存在しない場合は、自動的に作成されてからマウントされます。

    汎用型 NAS ファイルシステムのルートディレクトリは / で、超高速型 NAS ファイルシステムのルートディレクトリは /share です。超高速型 NAS ファイルシステムのサブディレクトリをマウントする場合、path/share で始まる必要があります (例: /share/data)。

    provisioner

    ドライバーのタイプ。値は nasplugin.csi.alibabacloud.com に設定する必要があり、これは Alibaba Cloud NAS CSI プラグインが使用されることを示します。

    reclaimPolicy

    PV のリクレームポリシー。sharepath メソッドを使用する場合、このパラメーターを Retain に設定する必要があります。

  2. StorageClass を作成します。

    kubectl create -f alicloud-nas-sharepath.yaml

コンソール

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [ストレージクラス] ページで、[作成] をクリックします。

  3. [作成] ダイアログボックスで、StorageClass のパラメーターを設定し、[作成] をクリックします。

    主要な設定項目は以下の通りです。

    設定項目

    説明

    例の値

    名前

    StorageClass の名前。フォーマット要件の詳細については、コンソールの指示をご参照ください。

    alicloud-nas-sharepath

    PV タイプ

    [NAS] を選択します。

    NAS

    マウントターゲットの選択

    NAS ファイルシステムのマウントポイントのアドレス。

    0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com

    [ボリュームモード]

    ボリュームのアクセスモード。この例では、sharepath メソッドを使用するために [共有ディレクトリ] を選択します。PV が作成されるとき、実際のディレクトリは作成されず、代わりに StorageClass で指定されたパスが使用されます。つまり、各 PV は同じ NAS ディレクトリにマッピングされます。この方法は、名前空間をまたいでディレクトリを共有する必要があるシナリオに最適です。

    共有ディレクトリ

    マウントパス

    マウントする NAS ファイルシステム上のサブディレクトリ。

    • 設定しない場合、デフォルトでルートディレクトリがマウントされます。

    • 指定したディレクトリが存在しない場合は、自動的に作成されてからマウントされます。

    説明

    汎用型 NAS ファイルシステムのルートディレクトリは / で、超高速型 NAS ファイルシステムのルートディレクトリは /share です。超高速型 NAS ファイルシステムにサブディレクトリをマウントする場合、path/share で始まる必要があります (例: /share/data)。

    /sharepath

    再利用ポリシー

    sharepath メソッドを使用する場合、このパラメーターを Retain に設定する必要があります。

    保持

    [マウントオプション]

    NFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例: vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。

    デフォルト値を保持

    StorageClass が作成された後、[ストレージクラス] リストで表示できます。

ステップ 3: PVC の作成

次の例では、2 つの異なる名前空間に PVC を作成する方法を示します。

kubectl

NAS ボリュームを異なる名前空間の Pod にマウントするには、まず 2 つの名前空間を作成します。

  1. ns1 と ns2 の名前空間を作成します。

    kubectl create ns ns1
    kubectl create ns ns2
  2. 以下の YAML コンテンツを変更し、pvc.yaml として保存してください。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
      namespace: ns1
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-sharepath
      resources: 
        requests:
          storage: 20Gi
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
      namespace: ns2
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-sharepath
      resources: 
        requests:
          storage: 20Gi

    パラメーター

    説明

    accessModes

    ボリュームのアクセスモードです。デフォルト値は ReadWriteMany です。ReadWriteOnce および ReadOnlyMany もサポートされています。

    storageClassName

    バインドする StorageClass の名前です。

    storage

    要求するボリュームの容量です。

    重要
    • デフォルトでは、NAS ボリュームの実際に利用可能な容量は、この構成によって制限されません。容量は NAS ファイルシステムの仕様によって決まります。詳細については、「汎用型 NAS」および「Extreme NAS」をご参照ください。

    • 汎用型 NAS ファイルシステムを使用し、StorageClass の allowVolumeExpansiontrue に設定した場合、CSI コンポーネントはこの構成に基づいてディレクトリクォータを設定し、NAS ボリュームの利用可能な容量を制限します。

  3. PVC を作成します。

    kubectl create -f pvc.yaml
  4. PV を表示します。

    kubectl get pv

    出力は、CSI コンポーネントが StorageClass に基づいて自動的に 2 つの PV を作成し、それらを異なる名前空間の 2 つの PVC にバインドしたことを示しています。

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS             VOLUMEATTRIBUTESCLASS   REASON   AGE
    nas-0b448885-6226-4d22-8a5b-d0768c******   20Gi       RWX            Retain           Bound    ns1/nas-csi-pvc       alicloud-nas-sharepath   <unset>                          74s
    nas-bcd21c93-8219-4a11-986b-fd934a******   20Gi       RWX            Retain           Bound    ns2/nas-csi-pvc       alicloud-nas-sharepath   <unset>                          74s

コンソール

  1. ns1 と ns2 の名前空間を作成します。詳細については、「名前空間の作成」をご参照ください。

  2. 詳細ページの左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム要求] を選択します。

  3. ns 名前空間に永続ボリューム要求 (PVC) を作成します。

    1. [永続ボリューム要求] ページで、[名前空間][ns1] に設定し、[作成] をクリックします。

    2. [PVC の作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックします。

      設定項目

      説明

      値の例

      PVC タイプ

      NAS を選択します。

      NAS

      名前

      PVC の名前。名前は名前空間内で一意である必要があります。

      pvc-nas

      割り当てモード

      この例では、[StorageClass を使用] を選択します。

      StorageClass による動的プロビジョニング

      既存のストレージクラス

      [StorageClass を選択] をクリックし、作成した StorageClass を選択します。

      alicloud-nas-sharepath

      容量

      ボリュームの容量。

      20Gi

      アクセスモード

      デフォルト値は [ReadWriteMany] です。[ReadWriteOnce] または [ReadOnlyMany] を選択することもできます。

      ReadWriteMany

  4. 前の手順を繰り返して、ns2 名前空間に別の PVC を作成します。

  5. [永続ボリューム要求] ページに戻ります。ns1 と ns2 の名前空間で、2 つの PVC が自動的に作成された PV にバインドされていることを確認します。

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

2 つの異なる名前空間にアプリケーションを作成し、対応する名前空間の PVC をマウントします。アプリケーションは、StorageClass で定義された NAS ディレクトリを共有します。

kubectl

  1. 次の YAML コンテンツを変更し、ファイルを nginx-ns1.yaml と nginx-ns2.yaml として保存します。

    次の YAML テンプレートは、nginx-ns1.yaml と nginx-ns2.yaml の設定が metadata.namespace の値を除いて同じであることを示しています。2 つのアプリケーションは、それぞれの名前空間の PVC にバインドされています。

    nginx-ns1.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      namespace: ns1   
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nas-pvc
                mountPath: "/data"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc

    nginx-ns2.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      namespace: ns2   
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nas-pvc
                mountPath: "/data"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc
  2. 2 つのデプロイメントを作成します。

    kubectl create -f nginx-ns1.yaml -f nginx-ns2.yaml
  3. Pod 情報を表示します。

    kubectl get pod -A -l app=nginx

    出力は、同じ NAS ファイルシステムの同じサブディレクトリが、異なる名前空間の Pod にマウントされていることを示しています。

    NAMESPACE   NAME                         READY   STATUS    RESTARTS   AGE
    ns1         nas-test-b75d5b6bc-ljvfd     1/1     Running   0          2m19s
    ns2         nas-test-b75d5b6bc-666hn     1/1     Running   0          2m11s

コンソール

  1. 左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。

  2. ns1 名前空間にデプロイメントを作成し、対応する PVC をマウントします。

    1. [名前空間][ns1] に設定し、[イメージから作成] をクリックします。

    2. パラメーターを設定してアプリケーションを作成します。

      次の表に主要なパラメーターを示します。他のパラメーターはデフォルト設定のままにできます。詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。

      設定項目

      パラメーター

      説明

      基本情報

      名前

      デプロイメントのカスタム名を入力します。名前はコンソールに表示されるフォーマット要件を満たす必要があります。

      nginx

      レプリカ

      デプロイメントのレプリカ数。

      2

      コンテナ設定

      イメージ名

      アプリケーションのデプロイに使用するイメージのアドレス。

      anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      必要なリソース

      必要な vCPU とメモリリソース。

      0.25 vCPU, 512 MiB

      ボリューム

      [PVC の追加] をクリックし、パラメーターを設定します。

      • マウントソース:作成した PVC を選択します。

      • [コンテナーパス]: NAS ファイルシステムをマウントするコンテナーパスを指定します。

      • マウントソース: pvc-nas

      • コンテナーパス: /data

      nas1.png

  3. 前の手順を繰り返して、ns2 名前空間に別のデプロイメントを作成し、対応する PVC をマウントします。

  4. [ステートレス] ページに戻り、ns1 と ns2 名前空間の 2 つのデプロイメントのステータスを確認して、Pod が実行中であり、対応する PVC がアタッチされていることを確認します。

filesystem メソッドを使用したマウント

アプリケーションが NAS ファイルシステムとマウントポイントを動的に作成および削除する必要がある場合は、filesystem メソッドを使用して NAS ボリュームをマウントします。filesystem メソッドを使用する場合、各 PV は新しい NAS ファイルシステムとマウントポイントに対応します。

重要

デフォルトでは、filesystem タイプの動的にプロビジョニングされた PV が削除されると、対応する NAS ファイルシステムとマウントポイントは保持されます。PV が削除されたときにファイルシステムとマウントポイントを自動的に削除するには、StorageClass で reclaimPolicyDelete に、deleteVolumetrue に設定する必要があります。

ステップ 1: RAM 権限の設定と付与 (ACK 専用クラスター のみ必須)

filesystem タイプの NAS ボリュームは、NAS ファイルシステムとマウントポイントの動的な作成と削除を伴います。したがって、ACK 専用クラスターの csi-provisioner コンポーネントに必要な権限を付与する必要があります。

次のコードブロックは、RAM ポリシーで要求される最小限の権限セットを示しています。

{
    "Action": [
        "nas:DescribeMountTargets",
        "nas:CreateMountTarget",
        "nas:DeleteFileSystem",
        "nas:DeleteMountTarget",
        "nas:CreateFileSystem"
    ],
    "Resource": [
        "*"
    ],
    "Effect": "Allow"
}

権限は、次のいずれかの方法で付与できます:

  • ACK 専用クラスターの Master RAM ロールのカスタムポリシーを編集して、NAS 関連の権限を追加します。詳細については、「カスタムポリシーのドキュメントと説明の変更」をご参照ください。自定义授权

  • RAM ユーザーを作成し、RAM ポリシーを付与し、AccessKey を生成して、その AccessKey を csi-provisioner の env 変数に追加します。

    env:
    - name: CSI_ENDPOINT
      value: unix://socketDir/csi.sock
    - name: ACCESS_KEY_ID
      value: ""
    - name: ACCESS_KEY_SECRET
      value: ""

ステップ 2: StorageClass の作成

  1. 次の YAML コンテンツを変更し、alicloud-nas-fs.yaml として保存します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-fs
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: filesystem
      fileSystemType: standard
      storageType: Performance
      regionId: cn-beijing
      zoneId: cn-beijing-e
      vpcId: "vpc-2ze2fxn6popm8c2mzm****"
      vSwitchId: "vsw-2zwdg25a2b4y5juy****"
      accessGroupName: DEFAULT_VPC_GROUP_NAME
      deleteVolume: "false"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    パラメーター

    説明

    mountOptions

    NFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例: vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。

    parameters

    volumeAs

    マウント方法。この例では、値を filesystem に設定して、NAS ファイルシステムを自動的に作成します。1 つの PV は 1 つの NAS ファイルシステムに対応します。

    fileSystemType

    NAS ファイルシステムのタイプ。有効な値:

    • standard (デフォルト): 汎用型 NAS ファイルシステム。

    • extreme: 超高速型 NAS ファイルシステム。

    storageType

    NAS ファイルシステムのストレージタイプ。

    • 汎用型 NAS ファイルシステムの場合、有効な値は次のとおりです:

      • Performance (デフォルト): パフォーマンス

      • Capacity: ストレージ最適化

    • 超高速型 NAS ファイルシステムの場合、有効な値は次のとおりです:

      • standard (デフォルト): 標準

      • advance:高度な

    regionId

    NAS ファイルシステムが存在するリージョン。リージョンはクラスターのリージョンと同じである必要があります。

    zoneId

    NAS ファイルシステムが存在するゾーン。

    説明

    同じ VPC 内であれば、NAS ファイルシステムをゾーン間でマウントできます。

    vpcId

    NAS ファイルシステムのマウントポイントが存在する VPC。VPC はクラスターの VPC と同じである必要があります。

    vSwitchId

    NAS ファイルシステムのマウントポイントが存在する vSwitch の ID。

    accessGroupName

    マウントポイントの権限グループ。デフォルト値は DEFAULT_VPC_GROUP_NAME です。

    deleteVolume

    PVC が削除されたときに PV と対応する NAS ファイルシステムおよびマウントポイントを削除するかどうかを指定します。NAS は共有ファイルシステムであるため、セキュリティ上の理由から deleteVolumereclaimPolicy の両方を設定する必要があります。

    provisioner

    ドライバーのタイプ。値は nasplugin.csi.alibabacloud.com に設定する必要があり、これは Alibaba Cloud NAS CSI コンポーネントが使用されることを示します。

    reclaimPolicy

    PV のリクレームポリシー。このパラメーターが Delete に設定され、deleteVolumetrue に設定されている場合にのみ、PVC が削除されると PV と対応する NAS ファイルシステムおよびマウントポイントが削除されます。

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

    kubectl create -f alicloud-nas-fs.yaml

ステップ 3: PVC の作成

  1. 次の YAML コンテンツを変更し、nas-pvc-fs.yaml として保存します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-csi-pvc-fs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alicloud-nas-fs
      resources:
        requests:
          storage: 20Gi
  2. PVC を作成します。

    kubectl create -f nas-pvc-fs.yaml

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

  1. 次の YAML コンテンツを変更し、nas-fs.yaml として保存します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nas-fs
      labels:
        app: nginx-test
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nas-pvc
                mountPath: "/data"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc-fs
  2. デプロイメントを作成します。

    kubectl create -f nas-fs.yaml

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

前の例で作成した Pod は、同じ NAS ファイルシステムをマウントします。次の操作を実行してストレージを検証できます:

  • 1 つの Pod にファイルを作成し、別の Pod からそのファイルを表示して、共有ストレージを検証します。

  • デプロイメントを再作成し、新しく作成された Pod でファイルシステム内のデータがまだ存在するかどうかを確認して、永続ストレージを検証します。

  1. Pod 情報を照会します。

    kubectl get pod | grep nas-test

    出力例:

    nas-test-*****a   1/1     Running   0          40s
    nas-test-*****b   1/1     Running   0          40s
  2. 共有ストレージ機能を検証します。

    1. Pod にファイルを作成します。

      次の例では、nas-test-*****a という名前の Pod を使用します:

      kubectl exec nas-test-*****a -- touch /data/test.txt
    2. 他の Pod からファイルを表示します。

      次の例では、nas-test-*****b という名前の Pod を使用します:

      kubectl exec nas-test-*****b -- ls /data

      期待される出力は、新しいファイル test.txt が共有されていることを示しています:

      test.txt
  3. 永続ストレージ機能を検証します。

    1. デプロイメントを再作成します。

      kubectl rollout restart deploy nas-test
    2. Pod を照会し、新しい Pod が作成されるのを待ちます。

      kubectl get pod | grep nas-test

      出力例:

      nas-test-*****c   1/1     Running   0          67s
      nas-test-*****d   1/1     Running   0          49s
    3. ファイルシステム内のデータが新しい Pod に存在するかどうかを確認します。

      次の例では、nas-test-*****c という名前の Pod を使用します:

      kubectl exec nas-test-*****c -- ls /data

      期待される出力は、NAS ファイルシステム内のデータがまだ存在し、新しい Pod のマウントディレクトリから取得できることを示しています:

      test.txt

よくある質問

NAS ボリュームのマウントまたは使用中に問題が発生した場合は、トラブルシューティングのために次のトピックをご参照ください。

関連ドキュメント