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

Container Compute Service:NAS ボリュームの使用

最終更新日:Mar 27, 2026

Apsara File Storage NAS (NAS) は、複数の Pod 間で共有アクセスを提供する分散ファイルシステムです。アプリケーションで永続的かつパフォーマンス専有型の共有ストレージが必要な場合 (たとえば、複数の Pod が同じデータに同時に読み書きする必要がある場合など) に、NAS 永続ボリュームを使用します。

3 つのプロビジョニングアプローチが利用可能です:

アプローチ 使用する状況
静的プロビジョニング すでに NAS ファイルシステムがあり、PVC アノテーションを介して直接参照する場合。
動的プロビジョニング NAS ファイルシステムがない場合。StorageClass が構成を定義し、PVC が作成されるとシステムが自動的にファイルシステムを作成します。
インライン NFS ボリューム PVC や PV を使用せずに、Pod spec で NAS ファイルシステムを直接マウントする場合。PVC と PV の管理オーバーヘッドがなく、構成が簡単です。

ほとんどのユースケースでは、ストレージ構成とアプリケーションのデプロイメントを分離できるため、静的または動的プロビジョニングが推奨されます。

前提条件

開始する前に、以下を確認してください:

  • お使いの ACS クラスターに managed-csiprovisioner コンポーネントがインストールされています。確認するには、ACS コンソール でクラスター管理ページに移動し、[運用] > [アドオン] を選択して、[ストレージ] タブで managed-csiprovisioner を探してください。

制限事項

制限事項 詳細
プロトコル NFSv3 のみがサポートされています。SMB プロトコルによるマウントはサポートされていません。
ネットワーク範囲 NAS ファイルシステムは、同じ VPC 内の Pod にのみマウントできます。VPC 間のマウントはサポートされていません。同じ VPC 内でゾーン間のアクセスが必要な場合、ゾーン間のマウントはサポートされています。

注意事項

  • 共有書き込みにはアプリケーションレベルの同期が必要です。NAS は共有ストレージを提供し、単一の NAS ボリュームを複数の Pod に同時にマウントできます。複数の Pod が同時に同じデータに書き込む場合、アプリケーションでデータ同期を処理する必要があります。

  • securityContext.fsgroup を設定しないでください。 NASファイルシステムの / ルートディレクトリでは、権限、所有者、またはグループの変更をサポートしていません。Pod仕様で fsgroup を設定すると、マウントが失敗します。

  • 使用中のマウントターゲットを削除しないでください。アクティブなマウントターゲットを削除すると、ノードのオペレーティングシステムが応答しなくなる可能性があります。

既存の NAS ファイルシステムを永続ボリュームとして使用

すでに NAS ファイルシステムがある場合は、静的プロビジョニングを使用します。システムは PVC アノテーションのマウントターゲットアドレスに基づいて静的永続ボリューム (PV) を作成し、PVC を自動的にバインドします。

ステップ 1: NAS ファイルシステム情報の取得

  1. ACS Pod で使用されている VPC ID と vSwitch ID を取得します。次のコマンドを実行して acs-profile ConfigMap を読み取ります:

    1. ACS コンソールにログインします。

    2. [クラスター]」ページで、クラスター名をクリックします。

    3. 左側のナビゲーションウィンドウで、[設定][ConfigMap] を選択します。

    4. 名前空間を [kube-system] に設定し、acs-profile を見つけ、[YAML の編集] をクリックします。

    5. vpcId および vSwitchIds の値をコピーします。

    kubectl get cm -n kube-system acs-profile -o yaml

    出力で vpcId フィールドと vSwitchIds フィールドを探します。または、ACS コンソールからこれらの値を取得します:

  2. NAS ファイルシステムに互換性があることを確認し、そのマウントターゲットアドレスを取得します。

    1. NAS コンソール」にログインし、[ファイルシステム一覧] をクリックします。

    2. ご利用の NAS ファイルシステムを見つけ、以下を確認します: nas

      • NAS ファイルシステムが ACS クラスターと同じリージョンにあること。NAS ファイルシステムは、リージョンや VPC をまたいでマウントすることはできません。

      • NAS ファイルシステムは、[NFS] プロトコルを使用します。SMB はサポートされていません。

      • 最高のパフォーマンスを得るには、NAS ファイルシステムが Pod と同じゾーンにあることが推奨されます。同じ VPC 内であれば、ゾーン間のマウントはサポートされています。

    3. マウントターゲットアドレスを取得します:

      1. ファイルシステム ID をクリックして、ファイルシステムの詳細ページを開きます。

      2. 左側のナビゲーションウィンドウで、[マウントターゲット] をクリックします。

      3. マウントポイントが以下の要件を満たしていることを確認し、そのアドレスをコピーします。> [注意] 汎用型 NAS では、マウントポイントが自動的に作成されます。超高速型 NAS ファイルシステムでは、マウントポイントを手動で作成する必要があります。適切なマウントポイントがない場合は、「マウントポイントの管理」をご参照ください。 NAS挂载点.png

        • マウントターゲットが Pod と同じ VPC にあること。VPC が異なる場合、マウントは失敗します。

        • 最高のパフォーマンスを得るには、マウントターゲットの vSwitch が Pod で使用されている vSwitch と一致することが推奨されます。

        • マウントポイントのステータスは [利用可能] です。

ステップ 2: PVC の作成

kubectl

  1. 次の内容を nas-pvc.yaml として保存します。 *****-mw*.cn-shanghai.nas.aliyuncs.com を実際の マウントターゲットアドレス に置き換えます。

    重要

    この PVC を適用すると、システムはまず、アノテーション 内の NAS 構成に基づいて静的 PV を作成し、その後、PVC を作成してその PV にバインドします。

    パラメーター 説明
    csi.alibabacloud.com/mountpoint マウントする NAS ディレクトリを指定します。 ルートディレクトリ (/) をマウントする場合は、マウントターゲットアドレス (例:<b>-.region.nas.aliyuncs.com`) を入力します。 特定のサブディレクトリをマウントする場合は、サブディレクトリのパス (例:`-**.region.nas.aliyuncs.com:/dir) を追加します。 指定したサブディレクトリが存在しない場合は、自動的に作成されます。
    csi.alibabacloud.com/mount-options マウントオプションです。 nolock,tcp,noresvport を使用します。
    accessModes アクセスモードです。 ReadWriteMany を指定すると、複数の Pod による同時読み書きが可能になります。
    storage Pod に割り当てられるストレージ容量です。
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-pvc
      annotations:
        csi.alibabacloud.com/mountpoint: *******-mw***.cn-shanghai.nas.aliyuncs.com
        csi.alibabacloud.com/mount-options: nolock,tcp,noresvport
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      storageClassName: alibaba-cloud-nas

    主要なパラメーター:

  2. PVC を作成します:

    kubectl create -f nas-pvc.yaml
  3. PV が作成されたことを確認します:

    kubectl get pvc

    期待される出力:

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS        REASON   AGE
    nas-ea7a0b6a-bec2-4e56-b767-47222d3a****   20Gi       RWX            Retain           Bound    default/nas-pvc   alibaba-cloud-nas            1m58s
  4. PVC が PV にバインドされていることを確認します:

    kubectl get pvc

    期待される出力:

    NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        VOLUMEATTRIBUTESCLASS  AGE
    nas-pvc   Bound    nas-ea7a0b6a-bec2-4e56-b767-47222d3a****   20Gi       RWX            alibaba-cloud-nas   <unset>                2m14s

コンソール

  1. ACS コンソールにログインします。

  2. [クラスター] ページで、クラスター名をクリックします。

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

  4. [作成] をクリックします。

  5. 以下のパラメーターを設定し、[作成] をクリックします。PVC が作成されると、その PVC は [永続ボリューム要求] ページに「[バインド済み]」のステータスで表示され、自動的に作成された PV にリンクされます。

    パラメーター 説明
    PVC タイプ NAS を選択します。 NAS
    名前 PVC の名前を指定します。 nas-pvc
    割り当てモード マウントターゲットドメイン名を使用 を選択します。 マウントターゲットドメイン名で作成
    ボリュームプラグイン CSI がデフォルトで選択されます。 CSI
    容量 Pod に割り当てるストレージ容量です。 20 GiB
    アクセスモード ReadWriteMany または ReadWriteOnce です。 ReadWriteMany
    マウントターゲットドメイン名 マウントする NAS ディレクトリです。ルートディレクトリ (/) をマウントする場合はマウントターゲットアドレスを入力し、サブディレクトリをマウントする場合はサブディレクトリパスを追加します (例: **-**.region.nas.aliyuncs.com:/dir)。指定したサブディレクトリが存在しない場合、自動的に作成されます。 350514**-mw*.cn-shanghai.nas.aliyuncs.com

    nas-pvc.png

    nas-pv.png

ステップ 3: デプロイメントを作成し、NAS ボリュームをマウント

kubectl

  1. 次の内容を nas-test.yaml として保存します。このデプロイメントは、両方とも nas-pvc PVC を /data にマウントする 2 つの Pod を作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-nas
                mountPath: /data
          volumes:
            - name: pvc-nas
              persistentVolumeClaim:
                claimName: nas-pvc
  2. デプロイメントを作成します:

    kubectl create -f nas-test.yaml
  3. 両方の Pod が実行中であることを確認します:

    kubectl get pod | grep nas-test

    期待される出力:

    nas-test-****-***a   1/1     Running   0          40s
    nas-test-****-***b   1/1     Running   0          40s
  4. NAS ファイルシステムがマウントされていることを確認します:

    kubectl exec nas-test-****-***a -- df -h /data

    期待される出力:

    Filesystem                                        Size  Used Avail Use% Mounted on
    350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/   10P     0   10P   0% /data

コンソール

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

  2. [イメージから作成] をクリックします。

  3. 次の主要なパラメーターを設定し、[作成] をクリックします。その他のパラメーターについては、デフォルトのままにします。詳細については、「デプロイメントを使用してステートレスアプリケーションを作成する」をご参照ください。

    設定ページ パラメーター 説明
    [基本情報] [名前] デプロイメントの名前です。 nas-test
    [基本情報] [レプリカ] Pod レプリカの数です。 2
    [コンテナ] [イメージ名] コンテナイメージのアドレスです。 registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
    [コンテナ] [必須リソース] vCPU とメモリリソースです。 0.25 vCPU、0.5 GiB
    [ボリューム] [PVC の追加] をクリックします。[マウントソース] を作成した PVC に設定し、[コンテナパス] をマウントパスに設定します。 マウントソース: nas-pvc、コンテナパス: /data
  4. デプロイメントを確認します:

    1. [デプロイメント] ページで、デプロイメント名をクリックします。

    2. [Pods] タブで、すべての Pod のステータスが [実行中] であることを確認します。

新しい NAS ファイルシステムを永続ボリュームとして作成

既存の NAS ファイルシステムがない場合は、動的プロビジョニングを使用します。StorageClass がファイルシステム構成を定義し、永続ボリューム要求 (PVC) が作成されるとシステムが自動的に作成します。

重要

NAS ファイルシステムタイプ、ストレージクラス、およびプロトコルサポートは、リージョンとゾーンによって異なります。StorageClass を構成する前に、選択した NAS タイプでサポートされているリージョンとゾーンを確認してください:

ステップ 1: StorageClass の作成

  1. 以下の内容を nas-sc.yaml として保存し、プレースホルダー値をお客様の ACS クラスターの値に置き換えます。VPC ID および vSwitch ID を取得するには、次のコマンドを実行します:

    パラメーター 必須 説明
    volumeAs 必須 filesystem である必要があります。各 NAS ボリュームは、1 つの NAS ファイルシステムに対応します。
    fileSystemType 必須 standard(デフォルト)、エクストリーム NAS の場合は extreme を指定します。
    storageType 必須 ファイルシステムタイプ内のストレージクラスです。 汎用 NAS: Performance(デフォルト、コンピューティング最適化)または Capacity(ストレージ最適化)。 エクストリーム NAS: standard(デフォルト、中間)または advanced
    regionId 必須 NAS ファイルシステムのリージョンです。ご利用の ACK クラスターのリージョンと一致させる必要があります。
    zoneId 必須 NAS ファイルシステムのゾーンです。Pod で使用する vSwitch に基づいてゾーンを選択してください。同一 VPC 内でのクロスゾーンマウントはサポートされていますが、同一ゾーンを使用することで、より高いパフォーマンスが得られます。
    vpcIdvSwitchId 必須 NAS マウントポイントの VPC および vSwitch ID です。ご利用の Pod で使用する VPC および vSwitch と一致させる必要があります。
    accessGroupName 任意 マウントポイントのアクセス許可グループです。デフォルト値は DEFAULT_VPC_GROUP_NAME です。
    provisioner 必須 nasplugin.csi.alibabacloud.com である必要があります。
    reclaimPolicy 必須 有効な値は Retain のみです。PV が削除された場合、NAS ファイルシステムおよびマウントポイントは保持されます。
    kubectl get cm -n kube-system acs-profile -o 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-shanghai
      zoneId: cn-shanghai-e
      vpcId: "vpc-2ze2fxn6popm8c2mzm****"
      vSwitchId: "vsw-2zwdg25a2b4y5juy****"
      accessGroupName: DEFAULT_VPC_GROUP_NAME
      deleteVolume: "false"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    主要なパラメーター:

  2. StorageClass を作成します:

    kubectl create -f nas-sc.yaml
  3. StorageClass が作成されたことを確認します:

    kubectl get sc

    期待される出力:

    NAME                             PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    alicloud-nas-fs                  nasplugin.csi.alibabacloud.com    Retain          Immediate              false                  13m
    ......

ステップ 2: PVC の作成

  1. 以下の内容を nas-pvc-fs.yaml として保存します。

    パラメーター 説明
    accessModes アクセスモード。
    storageClassName 作成した StorageClass の名前と一致する必要があります。
    storage NAS ボリュームのストレージ容量。超高速型 NAS ファイルシステムの場合、最小値は 100 GiB です。より小さい値を設定すると、PV の作成が妨げられます。
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-pvc-fs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alicloud-nas-fs
      resources:
        requests:
          storage: 20Gi

    主要なフィールド:

  2. PVC を作成します:

    kubectl create -f nas-pvc-fs.yaml
  3. PVC がバインドされていることを確認します:

    kubectl get pvc

    期待される出力:

    NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      VOLUMEATTRIBUTESCLASS  AGE
    nas-pvc-fs   Bound    nas-04a730ba-010d-4fb1-9043-476d8c38****   20Gi       RWX            alicloud-nas-fs   <unset>                14s

    PVC は自動的にプロビジョニングされた PV にバインドされます。対応する NAS ファイルシステムは NAS コンソールで確認できます。

ステップ 3: デプロイメントを作成し、NAS ボリュームをマウント

  1. 以下の内容を nas-test-fs.yaml として保存します。このデプロイメントでは、nas-pvc-fs PVC を /data にマウントする 2 つの Pod が作成されます。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nfs-nas
                mountPath: /data
          volumes:
          - name: nfs-nas
            nfs:
              server: file-system-id.region.nas.aliyuncs.com    # マウント先アドレス。例: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com
              path: /    # NASファイルシステム内のディレクトリのパス。このディレクトリは既存のディレクトリかルートディレクトリである必要があります。汎用型 NAS のルートディレクトリは "/" です。超高速型 NAS ファイルシステムのルートディレクトリは "/share" です。
  2. デプロイメントを作成します:

    kubectl create -f nas-test-fs.yaml
  3. 両方の Pod が実行中であることを確認します:

    kubectl get pod | grep nas-test

    期待される出力:

    nas-test-****-***a   1/1     Running   0          40s
    nas-test-****-***b   1/1     Running   0          40s
  4. NAS ファイルシステムがマウントされていることを確認します:

    kubectl exec nas-test-****-***a -- df -h /data

    期待される出力:

    Filesystem                                        Size  Used Avail Use% Mounted on
    350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/   10P     0   10P   0% /data

NFS ボリュームを使用して既存の NAS ファイルシステムをマウント

PVC や PV を作成せずに、Pod spec で直接 NAS ファイルシステムをマウントしたい場合は、インライン NFS ボリュームを使用します。このアプローチは、構成に必要なリソースが少なくて済みます。

ステップ 1: NAS マウントターゲットアドレスの取得

ステップ 1: NAS ファイルシステム情報の取得」の手順に従って、マウントターゲットアドレスを取得します。

ステップ 2: デプロイメントの作成

  1. 次の内容を nas-test-nfs.yaml として保存し、server の値を実際の マウントターゲットアドレス に置き換えてください。この デプロイメント は、インライン NFS ボリューム を使用して NAS ファイルシステム を /data にマウントする 2 つの Pod を作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nfs-nas
                mountPath: /data
          volumes:
          - name: nfs-nas
            nfs:
              server: file-system-id.region.nas.aliyuncs.com    # マウントターゲットアドレス。例: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com
              path: /    # NAS ファイルシステム内のディレクトリのパス。ディレクトリは既存のディレクトリまたはルートディレクトリである必要があります。汎用型 NAS ファイルシステムのルートディレクトリは "/" です。超高速型 NAS ファイルシステムのルートディレクトリは "/share" です。
  2. デプロイメントを作成します:

    kubectl create -f nas-test-nfs.yaml
  3. 両方の Pod が実行中であることを確認します:

    kubectl get pod | grep nas-test

    期待される出力:

    nas-test-****-***a   1/1     Running   0          40s
    nas-test-****-***b   1/1     Running   0          40s
  4. NAS ファイルシステムがマウントされていることを確認します:

    kubectl exec nas-test-****-***a -- df -h /data

    期待される出力:

    Filesystem                                        Size  Used Avail Use% Mounted on
    350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/   10P     0   10P   0% /data

共有ストレージとデータの永続性の確認

上記の例のデプロイメントは、同じ NAS ファイルシステムを共有する 2 つの 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. 一方の Pod からファイルを作成します:

    test.txt
  3. もう一方の Pod からファイルを読み取ります:

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

    期待される出力:

    test.txt

    test.txt は両方の Pod から表示され、共有ストレージが機能していることを確認できます。

データの永続性の確認

  1. デプロイメントを再起動して新しい Pod を作成します:

    kubectl rollout restart deploy nas-test
  2. 新しい 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 からファイルを読み取ります:

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

    期待される出力:

    test.txt

    test.txt は Pod が置き換えられた後も存在することから、NAS ファイルシステムが Pod の再起動をまたいでデータを永続化することが確認できます。