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

Container Service for Kubernetes:静的 NAS ボリュームの使用

最終更新日:Mar 25, 2026

NAS ボリュームは、ポッドが再作成されてもデータが失われない**永続ストレージ**と、複数のポッドが同時にデータを読み書きできる**共有ストレージ**を提供します。ACK では、既存の NAS ファイルシステムをワークロードに静的ボリュームとしてマウントできます。

  • 静的ボリュームでは、NAS ファイルシステムなどの既存のストレージリソースを表す永続ボリューム (PV) を事前に作成する必要があります。その後、アプリケーションがこの PV と一致・利用するための永続ボリューム要求 (PVC) を作成します。この方法は、既存のストレージリソースを管理する場合に最適です。ただし、バインド済みの PVC はデフォルトでオンラインでのサイズ変更をサポートしません。

    自動ボリュームサイズ変更が必要な場合は、「動的 NAS ボリュームの使用」または「CNFS を使用した NAS ボリュームの自動サイズ変更」をご参照ください。
  • 動的ボリュームでは、事前に PV を作成する必要はありません。アプリケーションが StorageClass を指定した PVC を作成すると、システムがオンデマンドで新しいストレージボリュームおよび対応する PV を自動的にプロビジョニングします。このアプローチは柔軟性が高く、ボリュームのサイズ変更もサポートします。

仕組み

以下の図は、ACK クラスター内での静的 NAS ボリュームのマウント手順を示しています。

image
  1. PV の作成:既存の NAS ファイルシステムのマウントターゲットアドレス(ルートディレクトリまたは特定のサブディレクトリ)、容量、アクセスモードを宣言することで、クラスター内に登録します。

  2. PVC の作成:アプリケーションがストレージをリクエストするために PVC を作成します。PVC は自動的に一致する PV にバインドされます。

  3. アプリケーションへのマウント:バインド済みの PVC を、コンテナ内の永続ディレクトリとしてアプリケーションのポッドにマウントします。

前提条件

  • csi-plugin と csi-provisioner コンポーネントがインストールされています。

    Container Storage Interface (CSI) コンポーネントはデフォルトでインストールされています。手動でアンインストールしていないことを確認してください。インストール状況は、アドオン管理ページで確認できます。CSI コンポーネントは最新バージョンへアップグレードすることを推奨します
  • 以下の条件を満たす既存の NAS ファイルシステムが必要です。該当しない場合は、新しいファイルシステムを作成するか、動的 NAS ボリュームを使用する必要があります。

    NAS には、マウント接続性、ファイルシステム数、プロトコルの種類に関する制限事項があります。
    • プロトコルの種類:NFS のみがサポートされています。

    • VPC:NAS ファイルシステムはクラスターと同じ VPC 内にある必要があります。NAS は可用性ゾーン間のマウントをサポートしますが、VPC 間のマウントはサポートしません。

    • マウントポイント:クラスターと同じ VPC 内にあり、利用可能な状態のマウントポイントを追加します。詳細については、「マウントポイントの管理」をご参照ください。マウントターゲットアドレスを記録します。

    • (任意)暗号化の種類:ストレージボリュームのデータを暗号化する必要がある場合は、NAS ファイルシステムの作成時に暗号化の種類を設定します。

注意事項

ステップ 1:PV の作成

既存の NAS ファイルシステムをクラスター内に登録するために PV を作成します。

kubectl

  1. 以下の内容で pv-nas.yaml というファイルを作成します。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # PV の名前。クラスター内で一意である必要があります。
      name: pv-nas  
      # 後続の PVC とのマッチングに使用される PV のラベル。
      labels:  
        alicloud-pvname: pv-nas
    spec:
      capacity:
        # この容量宣言は識別子にすぎません。実際の容量は NAS ファイルシステムによって決定されます。
        storage: 5Gi  
      accessModes:
        - ReadWriteMany
      # PV の再利用ポリシー。
      persistentVolumeReclaimPolicy: Retain
      csi:
        # ドライバーの種類。NAS ボリュームを使用する場合、この値は固定です。
        driver: nasplugin.csi.alibabacloud.com  
        # metadata.name と同一である必要があります。
        volumeHandle: pv-nas   
        volumeAttributes:
          server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com"  # ご利用の NAS マウントターゲットアドレスに置き換えてください。
          # マウントする NAS のサブディレクトリ。存在しない場合は自動的に作成されます。
          path: "/csi"
      mountOptions:
      - nolock,tcp,noresvport
      - vers=3

    パラメーター

    説明

    storage

    PV の容量宣言です。この値は PVC とのマッチングに使用され、実際の利用可能な容量を制限するものではありません。アプリケーションが利用可能な最大ストレージ容量は、NAS ファイルシステムの合計容量です。

    NAS の実際の容量制限は、その仕様によって決定されます。詳細については、「汎用 NAS」および「エクストリーム NAS」をご参照ください。

    accessModes

    アクセスモードを指定します。有効な値は以下のとおりです。

    • ReadWriteMany(デフォルト):ボリュームを複数のノードで読み書き可能としてマウントできます。

    • ReadWriteOnce:ボリュームを単一のノードで読み書き可能としてマウントできます。

    • ReadOnlyMany:ボリュームを複数のノードで読み取り専用としてマウントできます。

    persistentVolumeReclaimPolicy

    PV の再利用ポリシーです。PVC が削除された後の PV およびバックエンドの NAS データの処理方法を定義します。

    • Retain(推奨):PVC が削除されると、PV は Released 状態になります。バックエンドの NAS データは完全に保持され、手動で削除する必要があります。

    • Delete:PVC を削除すると、対応する PV も削除されます。このポリシーは archiveOnDelete パラメーターとともに使用する必要があります。静的 PV は archiveOnDelete をサポートしないため、静的 PV の場合、このポリシーを Delete に設定しても、PVC の削除時に PV や NAS ファイルは実際に削除されません。

      archiveOnDelete の設定については、「動的 NAS ボリュームの使用」をご参照ください。

    driver

    ドライバーの種類です。Alibaba Cloud NAS CSI コンポーネントを使用する場合、この値は nasplugin.csi.alibabacloud.com に固定されます。

    volumeHandle

    バックエンドストレージシステムにおける PV の一意の識別子です。metadata.name の値と同一である必要があります。複数の PV を使用する場合、各 PV に対してこの値は一意である必要があります。

    server

    NAS のマウントターゲットアドレスです。

    マウントターゲットアドレスの確認方法については、「マウントポイントの管理」をご参照ください。

    path

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

    ディレクトリが NAS ファイルシステムに存在しない場合、マウント前にシステムが自動的に作成します。
    • 汎用 NAS:ルートディレクトリは / です。

    • エクストリーム NAS:ルートディレクトリは /share です。サブディレクトリをマウントする場合、path/share で始める必要があります(例:/share/data)。

    mountOptions

  2. PV を作成します。

    kubectl create -f pv-nas.yaml
  3. PV のステータスおよびプロパティを確認します。

    kubectl get pv

    期待される出力:

    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM    STORAGECLASS     VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-nas   5Gi        RWX            Retain           Available                             <unset>                          25s

    出力から、PV が 5 GiB の容量で正常に作成され、Available 状態(まだ PVC によって要求されていない状態)であることが確認できます。

コンソール

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

  2. クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、ボリューム > ボリューム をクリックします。

  3. 永続ボリューム ページで、作成する をクリックします。表示されるダイアログボックスでパラメーターを設定し、作成する をクリックします。

    パラメーター

    説明

    ストレージタイプ

    NAS を選択します。

    ボリューム名:

    PV の名前です。クラスター内で一意である必要があります。

    容量

    PV の容量宣言です。この値は PVC とのマッチングに使用され、実際の利用可能な容量を制限するものではありません。アプリケーションが利用可能な最大ストレージ容量は、NAS ファイルシステムの合計容量です。

    NAS の実際の容量制限は、その仕様によって決定されます。詳細については、「汎用 NAS」および「エクストリーム NAS」をご参照ください。

    アクセスモード

    アクセスモードを指定します。有効な値は以下のとおりです。

    • ReadWriteMany:ボリュームを複数のノードで読み書き可能としてマウントできます。

    • ReadWriteOnce:ボリュームを単一のノードで読み書き可能としてマウントできます。

    CNFS の使用

    CNFS を使用するかどうかを指定します。CNFS は、自動化された運用管理、キャッシュアクセラレーション、パフォーマンスモニタリングなどの高度な機能を提供します。

    既存の NAS ファイルシステムを CNFS で管理する方法については、「CNFS で管理される NAS ファイルシステムの作成(推奨)」をご参照ください。

    マウントポイントドメイン名:

    CNFS が無効化されている場合のみ、このパラメーターを設定できます。

    NAS のマウントターゲットアドレスです。

    アドレスの取得方法については、「マウントポイントの管理」をご参照ください。
    • アタッチポイントの選択:事前に追加したマウントターゲットアドレスを選択します。

    • カスタム:カスタムドメイン名をマウントアドレスとして使用します。カスタムドメイン名から対象の NAS マウントターゲットへの DNS 解決が設定済みであることを確認してください。

    高度なオプション(任意)

    マウントパス

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

    ディレクトリが NAS ファイルシステムに存在しない場合、マウント前にシステムが自動的に作成します。
    • 汎用 NAS:ルートディレクトリは / です。

    • エクストリーム NAS:ルートディレクトリは /share です。サブディレクトリをマウントする場合、path/share で始める必要があります(例:/share/data)。

    回収ポリシー

    • Retain(デフォルト):PVC が削除されると、PV は「Released」状態になりますが、バックエンドの NAS データは保持されます。PV オブジェクトとデータの両方を手動でクリーンアップする必要があります。

    • Delete:PVC が削除されると、対応する PV も削除されます。このポリシーは archiveOnDelete とともに使用する必要があります。ただし、静的 PV は archiveOnDelete をサポートしないため、静的 PV の場合、ポリシーを Delete に設定しても、PVC の削除時に PV や NAS ファイルは実際に削除されません。

      archiveOnDelete の設定については、「動的 NAS ボリュームの使用」をご参照ください。

    マウントオプション

    ラベル

    PV のラベルです。

    作成が完了すると、永続ボリューム ページで新しく作成された PV を確認できます。

ステップ 2:PVC の作成

PV からストレージを要求するために PVC を作成します。

kubectl

  1. PV にバインドするための pvc-nas.yaml というファイルを作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nas  # PVC の名前。名前空間内で一意である必要があります。
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas   # ラベルを使用して、先ほど作成した PV と正確に一致させます。

    パラメーター

    説明

    accessModes

    アクセスモードです。有効な値は以下のとおりです。

    • ReadWriteMany(デフォルト):ボリュームを複数のノードで読み書き可能としてマウントできます。

    • ReadWriteOnce:ボリュームを単一のノードで読み書き可能としてマウントできます。

    • ReadOnlyMany:ボリュームを複数のノードで読み取り専用としてマウントできます。

    storage

    要求するストレージ容量です。この値は PV とのマッチングに使用され、実際の容量を制限するものではありません。

    NAS の実際の容量制限は、その仕様によって決定されます。詳細については、「汎用 NAS」および「エクストリーム NAS」をご参照ください。

    matchLabels

    特定の PV にバインドするためのラベルセレクターを指定します。これは PV に設定されたラベルと一致する必要があります。

  2. PVC を作成します。

    kubectl create -f pvc-nas.yaml
  3. PVC のステータスを確認します。

    kubectl get pvc

    期待される出力:

    NAME       STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-nas    Bound    pv-nas    5Gi        RWX                           <unset>                 5s

    出力から、PVC が 5 GiB のストレージを正常に要求し、pv-nas PV にバインドされた Bound 状態であることが確認できます。これで、アプリケーションでマウントおよび利用する準備が整いました。

コンソール

  1. クラスター管理ページの左側ナビゲーションウィンドウで、ストレージ > ボリュームクレーム を選択します。

  2. 永続ボリュームクレーム ページで、作成する をクリックし、プロンプトに従って PVC を設定します。

    パラメーター

    説明

    ボリュームタイプ

    NAS を選択します。

    名前

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

    割り当てモード

    既存のボリューム を選択します。

    本トピックでは、先ほど作成した PV を使用します。PV を作成していない場合は、割り当てモード割り当てモード として選択できます。

    既存ボリューム

    先ほど作成した PV を選択します。

    容量

    要求するストレージ容量です。この値は PV とのマッチングに使用され、実際の容量を制限するものではありません。

    NAS の実際の容量制限は、その仕様によって決定されます。詳細については、「汎用 NAS」および「エクストリーム NAS」をご参照ください。

    アクセスモード

    アクセスモードです。有効な値は以下のとおりです。

    • ReadWriteMany(デフォルト):ボリュームを複数のノードで読み書き可能としてマウントできます。

    • ReadWriteOnce:ボリュームを単一のノードで読み書き可能としてマウントできます。

    • ReadOnlyMany:ボリュームを複数のノードで読み取り専用としてマウントできます。

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

PVC を作成した後、この PVC を使用して NAS ボリュームをマウントするアプリケーションを作成できます。

kubectl

  1. PVC を参照する deploy.yaml というファイルを作成します。

    このアプリケーションは、同一の NAS ファイルシステムをマウントする 2 つの Pod を作成し、後続の共有ストレージの検証を可能にします。

    YAML

    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: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-nas
                # コンテナ内での NAS ボリュームのマウントパス。
                mountPath: "/data"  
          volumes:
            # 使用する PVC。
            - name: pvc-nas  
              persistentVolumeClaim:
                claimName: pvc-nas
  2. Deployment を作成します。

    kubectl create -f deploy.yaml
  3. アプリケーション Pod のデプロイメントステータスを確認します。

    kubectl get pod -l app=nginx

    期待される出力:

    NAME                  READY   STATUS    RESTARTS   AGE
    nas-test-****-***a    1/1     Running   0          32s
    nas-test-****-***b    1/1     Running   0          32s

コンソール

  1. クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、ワークロード > デプロイメント をクリックします。

  2. デプロイメント ページで、イメージによる作成 をクリックし、プロンプトに従ってアプリケーションを設定します。

    以下の表は主なパラメーターを示しています。その他のパラメーターはデフォルト値のままにしてください。「デプロイメントの作成」をご参照ください。

    セクション

    パラメーター

    説明

    基本情報

    名前

    デプロイメントの名前です。

    Replicas:

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

    複数のレプリカが同一の NAS ファイルシステムをマウントし、後続の共有ストレージの検証を可能にします。

    コンテナー

    イメージ名

    アプリケーションイメージのアドレスです。

    リソースリクエスト

    必要な vCPU およびメモリリソースです。

    ボリューム

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

    • マウントソース:先ほど作成した PVC を指定します。

    • コンテナー内のパス:NAS ファイルシステムをマウントするコンテナー内のパス(例:/data)です。

    デプロイ後、ステートレス ページでアプリケーション名をクリックし、ポッド タブで、Pod のステータスが Running であることを確認します。

共有ストレージおよび永続ストレージの検証

アプリケーションをデプロイした後、ボリュームが想定通りに動作することを検証できます。

共有ストレージ

永続ストレージ

1 つの 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. いずれかの Pod でファイルを作成します。

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

    kubectl exec nas-test-*****a -- touch /data/test.txt
  3. 別の Pod でファイルが存在するか確認します。

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

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

    期待される出力:

    test.txt

    ファイルが表示されることから、Pod 間でデータを共有できることを確認できます。

Deployment の Pod を再起動し、新しい Pod でデータが存在するか確認することで、データの永続性を検証します。

  1. アプリケーション Pod のローリングリスタートを実行します。

    kubectl rollout restart deploy nas-test
  2. Pod を確認し、新しい Pod が起動して Running 状態になるまで待ちます。

    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

    期待される出力:

    test.txt

    ファイルが引き続き存在することから、データが永続的に保存されていることを確認できます。

本番環境での検討事項

  • セキュリティおよび権限管理

    • 権限グループによるアクセス制御:NAS は権限グループを使用してネットワークアクセスを管理します。最小権限の原則に従い、クラスターのノードのプライベート IP アドレスまたはその vSwitch CIDR ブロックのみを追加してください。例えば 0.0.0.0/0 のような過度に広範な権限付与は避けてください。

  • パフォーマンスおよびコスト最適化

    • 適切な NAS の種類の選択:アプリケーションの IOPS およびスループット要件に基づいて NAS の種類を選択するには、「ファイルシステムの種類の選択」をご参照ください。

    • マウントオプション (mountOptions) の最適化:ワークロードの特性に応じて NFS のマウントパラメーターを調整します。たとえば、vers=4.0vers=4.1 のようなプロトコルバージョンを使用すると、一部のシナリオでパフォーマンスやファイルロック機能が向上する可能性があります。大規模なファイル I/O の場合、rsize および wsize パラメーターを調整して読み書き性能を最適化できます。

  • 運用および信頼性

    • ヘルスチェックの設定:アプリケーション Pod に対して liveness プローブを設定し、マウントポイントが正しく機能しているかを確認します。マウントが失敗した場合、Kubernetes が自動的に Pod を再起動し、ボリュームの再マウントをトリガーします。

    • モニタリングおよびアラート機能:アラートを設定してボリュームの異常やパフォーマンスボトルネックを迅速に検出できるよう、「コンテナストレージモニタリング」をご利用ください。

    • Retain 再利用ポリシーの使用:本番環境のデータの場合、PV の persistentVolumeReclaimPolicyRetain に設定します。これにより、誤って PVC を削除した場合でも、バックエンドの NAS ファイルシステムにおけるデータ損失を防ぐことができます。

リソースのクリーンアップ

予期しない課金を回避するため、NAS ボリュームが不要になった場合、以下の順序でリソースを解放してください。

  1. ワークロードの削除

    • 操作:NAS ボリュームを使用するすべてのアプリケーション(例:デプロイメントまたは StatefulSet)を削除します。これにより、アプリケーション Pod からのボリュームのマウントが解除されます。

    • 実行例kubectl delete deployment <your-deployment-name>

  2. PVC の削除

    • [操作]: アプリケーション に関連付けられた PVC を削除します。そのバインドされた PV のその後の動作は、PV の persistentVolumeReclaimPolicy によって異なります。

    • 再利用ポリシーの動作

      • Retain(推奨):PVC が削除されると、バインド済みの PV は Released 状態になります。PV オブジェクトおよびバックエンドの NAS データは完全に保持され、手動で削除する必要があります。

      • Delete:PVC が削除されると、対応する PV オブジェクトも削除されます。以下の点にご注意ください。

        • PV が NAS のルートディレクトリを指している場合、バックエンドの NAS データは誤った削除を防ぐために保持されます。

        • 静的 PV の volumeHandlepath 値の末尾と一致する場合(例:volumeHandleapp で、path/exports/app の場合)、PVC の削除によりバックエンドの NAS サブディレクトリが自動的に削除されます。この設定は慎重に使用してください。

    • 実行例kubectl delete pvc <your-pvc-name>

  3. PV の削除

    • 操作:PV が Available または Released 状態のときに PV を削除できます。この操作は Kubernetes クラスター内での PV 定義のみを削除し、バックエンドの NAS ファイルシステム上のデータは削除しません。

    • 実行例kubectl delete pv <your-pv-name>

  4. バックエンドの NAS ファイルシステムの削除(任意)

    • 操作:「ファイルシステムの削除」をご参照ください。この操作は NAS ファイルシステム上のすべてのデータを完全に削除し、元に戻すことはできません。実行にあたっては極めて慎重に進めてください。実行前に、この NAS ファイルシステムに依存するサービスがないことを確認してください。

参照