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

Container Service for Kubernetes:静的にプロビジョニングされた NAS ボリュームをマウントする

最終更新日:Nov 09, 2025

NAS ボリュームは、共有アクセス、スケーラビリティ、高い信頼性、および高いパフォーマンスを提供する分散ファイルシステムです。このトピックでは、静的にプロビジョニングされた Alibaba Cloud NAS ボリュームを使用して、永続的な共有ストレージを実装する方法について説明します。

前提条件

シナリオ

  • ディスク I/O に対する要件が高いアプリケーション。

  • ホスト間でファイル共有を実装できます。たとえば、NAS ボリュームをファイルサーバとして使用できます。

考慮事項

  • 超高速型 NAS ファイルシステムを使用する場合、ボリュームの path/share のサブディレクトリである必要があります。たとえば、Pod にマウントされる NAS ファイルシステムのサブディレクトリを /share/path1 に設定できます。

  • NAS ファイルシステムは、同時に複数の Pod にマウントできます。この場合、Pod が同じデータを変更する可能性があります。アプリケーションはデータを同期できる必要があります。

    説明

    NAS ファイルシステムの / ディレクトリの権限、オーナー、またはグループは変更できません。

  • アプリケーションテンプレートで securityContext.fsgroup パラメーターを設定すると、Kubelet はボリュームがマウントされた後に chmod または chown 操作を実行します。これにより、マウント時間が長くなります。

    説明

    securityContext.fsgroup パラメーターを設定し、マウント時間を短縮したい場合、詳細については、「NAS ボリュームのマウント時間が長くなる」をご参照ください。

コンソールで静的にプロビジョニングされた NAS ボリュームを使用する

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

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

  2. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、[アクション] 列の [詳細] をクリックします。クラスターの詳細ページが表示されます。

  3. クラスター詳細ページの左側のナビゲーションウィンドウで、[ボリューム] > [Persistent Volume] を選択します。

  4. [Persistent Volume] ページで、右上隅にある [作成] をクリックします。

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

    パラメーター

    説明

    ボリュームタイプ

    この例では、NAS を選択します。

    名前

    PV の名前。名前はクラスター内で一意である必要があります。この例では、pv-nas が使用されます。

    容量

    PV の容量。NAS ファイルシステムには容量制限がないことに注意してください。このパラメーターは、NAS ファイルシステムの容量制限ではなく、PV の容量を指定します。

    アクセスモード

    ReadWriteMany または ReadWriteOnce を選択します。デフォルト値は ReadWriteMany です。

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

    [マウントターゲットの選択] を行うか、[カスタム] マウントターゲットをクラスターが NAS ファイルシステムにアクセスするためのマウントアドレスとして指定できます。

    詳細オプション (オプション)

    マウントパス

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

    • 設定しない場合、デフォルトはルート (/ (汎用 NAS)、/share (超高速型 NAS)) になります。

    • ディレクトリが存在しない場合は作成されます。

    説明

    超高速型 NAS の場合、パスは /share で始まる必要があります (例: /share/data)。

    リクレームポリシー

    デフォルト値は Retain です。これは、PVC が削除されても、関連する PV と NAS ファイルシステムは保持され、手動でのみ削除できることを示します。

    マウントオプション

    NFS プロトコルのバージョンを含む NAS マウントパラメーター。超高速型 NAS は NFS v3 のみをサポートするため、NFS v3 プロトコルの使用を推奨します。NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。

    ラベル

    PV にラベルを追加します。

  6. パラメーターを設定したら、[作成] をクリックします。

ステップ 2: Persistent Volume Claim (PVC) の作成

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

  2. [Persistent Volume Claim] ページで、右上隅にある [作成] をクリックします。

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

    パラメーター

    説明

    ストレージ要求タイプ

    この例では、NAS を選択します。

    名前

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

    割り当てモード

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

    説明

    PV が作成されていない場合は、[割り当てモード][ボリュームの作成] に設定し、パラメーターを設定して PV を作成できます。詳細については、「PV の作成」をご参照ください。

    既存のボリューム

    [既存ボリュームの選択] をクリックし、ターゲット PV を見つけて、[アクション] 列の [選択] をクリックします。

    容量

    PV の容量。

    説明

    PVC によって要求される容量は、PVC にバインドされている PV の容量を超えることはできません。

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

    PVC が作成されると、リストで表示できます。PVC のステータスが [Bound] に変わり、対応する PV にバインドされていることを示します。

ステップ 3: アプリケーションの作成

  1. クラスター詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] に移動します。

  2. [デプロイメント] ページで、[イメージから作成] をクリックします。

  3. アプリケーションのパラメーターを設定します。設定後、[作成] をクリックします。

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

    セクション

    パラメーター

    説明

    基本情報

    名前

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

    nas-test

    レプリカ

    Pod レプリカの数。

    2

    コンテナー

    イメージ名

    コンテナーイメージ。

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

    必須リソース

    CPU とメモリ。

    0.25 Core, 512 MiB

    ボリューム

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

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

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

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

    • コンテナーパス: /data

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

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

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

kubectl を使用して静的にプロビジョニングされた NAS ボリュームを使用する

  1. 次のコマンドを実行して、静的にプロビジョニングされた PV を作成します。

    kubectl create -f pv-nas.yaml

    次のコードは、静的にプロビジョニングされた PV を作成するためのサンプル YAML ファイルです。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nas
      labels:
        alicloud-pvname: pv-nas
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      csi:
        driver: nasplugin.csi.alibabacloud.com
        volumeHandle: pv-nas
        volumeAttributes:
          server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com"
          path: "/csi"
      mountOptions:
      - nolock,tcp,noresvport
      - vers=3

    パラメーター

    説明

    name

    PV の名前。

    labels

    PV のラベル。

    storage

    NAS ファイルシステムの利用可能な容量。

    accessModes

    アクセスモード。

    driver

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

    volumeHandle

    PV の一意の ID。複数の PV を同時に使用する場合、このパラメーターの値は各 PV で一意である必要があります。

    server

    NAS マウントポイント。

    path

    マウントするサブディレクトリ。超高速型 NAS ファイルシステムの場合、サブディレクトリは /share のサブディレクトリである必要があります。

    vers

    NAS ボリュームのマウントに使用される NFS プロトコルのバージョン番号。v3 の使用を推奨します。超高速型 NAS ファイルシステムは v3 のみをサポートします。

  2. 次のコマンドを実行して、静的にプロビジョニングされた PVC を作成します。

    NAS ファイルシステム用の PVC を作成します。selector フィールドを使用して PV をフィルターし、PVC を特定の PV にバインドします。

    kubectl create -f pvc-nas.yaml

    次のコードは、静的にプロビジョニングされた PVC を作成するためのサンプル YAML ファイルです。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nas
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas

    パラメーター

    説明

    name

    PVC の名前。

    accessModes

    アクセスモード。

    storage

    アプリケーションによって要求される容量。値は PV の総容量より大きくすることはできません。

    matchLabels

    関連付ける PV のラベル。

  3. 次のコマンドを実行して、nas-static という名前のアプリケーションを作成し、PVC をマウントします。

    kubectl create -f nas.yaml

    次のコードは、nas-static アプリケーションを作成するためのサンプル nas.yaml ファイルです。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-static
      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: pvc-nas

    パラメーター

    説明

    mountPath

    コンテナー内で NAS ボリュームがマウントされるパス。

    claimName

    バインドする PVC の名前。

  4. 次のコマンドを実行して、Pod 情報を表示します。

    kubectl get pod

    期待される出力:

    NAME                          READY   STATUS    RESTARTS   AGE
    nas-static-5b5cdb85f6-n****   1/1     Running   0          32s
    nas-static-c5bb4746c-4****    1/1     Running   0          32s

NAS ボリュームの永続化の確認

  1. デプロイされたアプリケーションと NAS ファイルを表示します。

    1. 次のコマンドを実行して、デプロイされたアプリケーションの Pod の名前を表示します。

      kubectl get pod 

      期待される出力:

      NAME                          READY   STATUS    RESTARTS   AGE
      nas-static-5b5cdb85f6-n****   1/1     Running   0          32s
      nas-static-c5bb4746c-4****    1/1     Running   0          32s
    2. 次のコマンドを実行して、アプリケーション Pod の 1 つの /data パスにあるファイルを表示します。このトピックでは、nas-static-5b5cdb85f6-n**** という名前の Pod を例として使用します。

      kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data

      コマンドは出力を返しません。これは、/data パスにファイルが存在しないことを示します。

  2. 次のコマンドを実行して、nas-static-5b5cdb85f6-n**** Pod の /data パスに nas という名前のファイルを作成します。

    kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
  3. 次のコマンドを実行して、nas-static-5b5cdb85f6-n**** Pod の /data パスにあるファイルを表示します。

    kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data

    期待される出力:

    nas
  4. 次のコマンドを実行して Pod を削除します。

    kubectl delete pod nas-static-5b5cdb85f6-n****
  5. 別のウィンドウで、次のコマンドを実行して、Pod の削除と Kubernetes による新しい Pod の作成を監視します。

    kubectl get pod -w -l app=nginx
  6. Pod が削除された後も、NAS ボリュームに作成されたファイルがまだ存在することを確認します。

    1. 次のコマンドを実行して、Kubernetes によって再作成された Pod の名前を表示します。

      kubectl get pod

      期待される出力:

      NAME                                READY   STATUS    RESTARTS   AGE
      nas-static-5b5cdb85f6-n****   1/1     Running   0          32s
      nas-static-c5bb4746c-4****    1/1     Running   0          32s
    2. 次のコマンドを実行して、nas-static-5b5cdb85f6-n**** Pod の /data パスにあるファイルを表示します。

      kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data

      期待される出力:

      nas

      nas ファイルはまだ存在しており、NAS ボリューム内のデータが永続的であることを示しています。

NAS ボリュームの共有ストレージの確認

  1. アプリケーションがデプロイされている Pod と NAS ファイルを表示します。

    1. 次のコマンドを実行して、アプリケーションがデプロイされている Pod の名前を表示します。

      kubectl get pod 

      期待される出力:

      NAME                          READY   STATUS    RESTARTS   AGE
      nas-static-5b5cdb85f6-n****   1/1     Running   0          32s
      nas-static-c5bb4746c-4****    1/1     Running   0          32s
    2. 次のコマンドを実行して、2 つの Pod の /data パスにあるファイルを表示します。

      kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data
      kubectl exec nas-static-c5bb4746c-4**** -- ls /data
  2. 次のコマンドを実行して、Pod の 1 つの /data パスに nas という名前のファイルを作成します。

     kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
  3. 次のコマンドを実行して、2 つの Pod の /data パスにあるファイルを表示します。

    1. 次のコマンドを実行して、nas-static-5b5cdb85f6-n**** という名前の Pod の /data パスにあるファイルを表示します。

      kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data

      期待される出力:

      nas
    2. 次のコマンドを実行して、nas-static-c5bb4746c-4**** という名前の Pod の /data パスにあるファイルを表示します。

      kubectl exec nas-static-c5bb4746c-4**** -- ls /data

      期待される出力:

      nas

      1 つの Pod の /data パスに作成されたファイルが、もう 1 つの Pod の /data パスにも存在する場合、2 つの Pod が同じ NAS ボリュームを共有していることを示します。