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

Container Service for Kubernetes:Mount a dynamically provisioned NAS volume

最終更新日:Jun 09, 2025

ファイルストレージ NAS (NAS) ボリュームは、ビッグデータ分析、データ共有、Web アプリケーション、ログストレージなどのシナリオに適しています。静的プロビジョニングに加えて、動的プロビジョニングを使用して、永続ボリューム要求 (PVC) と StorageClass に基づいて永続ボリューム (PV) を自動的に予約するようにシステムを構成できます。 subpath、sharepath、または filesystem モードを使用して、動的にプロビジョニングされた NAS ボリュームをマウントできます。

前提条件

  • CSI プラグインがクラスターにインストールされています。 csi-plugin と csi-provisioner の更新方法の詳細については、「csi-plugin と csi-provisioner を更新する」をご参照ください。

    説明

    クラスターで FlexVolume を使用している場合は、FlexVolume は非推奨であるため、FlexVolume を CSI にアップグレードしてください。詳細については、「FlexVolume から CSI へのアップグレード」をご参照ください。 [操作] > [アドオン] を選択し、[ストレージ] タブをクリックして、ストレージコンポーネントの種類を確認します。

制限事項

  • サーバー メッセージ ブロック (SMB) プロトコルを使用する NAS ファイルシステムはマウントできません。

  • NAS ファイルシステムを複数のポッドにマウントする場合、ポッドは同じ仮想プライベートクラウド (VPC) にデプロイする必要があります。異なる VPC のポッドに NAS ファイルシステムをマウントすることはできません。

    説明

    NAS ファイルシステムは、同じ VPC 内の異なるゾーンにあるポッドにマウントできます。

  • 汎用 NAS ファイルシステムと超高速型 NAS ファイルシステムでは、マウントのシナリオ、ファイルシステムの数、ファイル共有プロトコルに異なる制限があります。サポートされている状態の詳細については、「制限」をご参照ください。

使用上の注意

マウントの説明

subpath、sharepath、または filesystem モードを使用して、動的にプロビジョニングされた NAS ボリュームをマウントできます。 subpath モードまたは sharepath モードを使用する場合は、事前に NAS ファイルシステムとマウントポイントを作成する必要があります。 filesystem モードを使用する場合は、事前に NAS ファイルシステムまたはマウントポイントを作成する必要はありません。

  • subpath モード: 複数のアプリケーションまたはポッドが同じ NAS ファイルシステムを使用してデータを共有する必要がある場合、または NAS ファイルシステムの異なるサブディレクトリを異なるポッドにマウントする場合は、subpath モードを使用します。

  • sharepath モード: NAS ファイルシステムを異なる名前空間に属する複数のポッドにマウントする場合は、sharepath モードを使用します。

  • filesystem モード: アプリケーションが NAS ファイルシステムとマウントポイントを動的に作成または削除する必要がある場合、コンテナー ストレージ インターフェース (CSI) プラグインは、PVC が作成されるときに NAS ファイルシステムとマウントポイントを自動的に作成します。 PVC が作成されると、NAS ファイルシステムが作成されます。 PVC が削除されると、マウントポイントと NAS ファイルシステムは動的に削除されます。 filesystem モードで NAS ボリュームをマウントするには、kubectl のみを使用できます。

手順 1: NAS ファイルシステムとマウントポイントを作成する

さまざまなタイプの NAS ファイルシステムが、さまざまなリージョンとゾーンで利用可能です。ビジネス要件、Container Service for Kubernetes (ACK) クラスターのリージョン、および ACK クラスター内のポッドで使用される VPC と vSwitch に基づいて、作成する NAS ファイルシステムとマウントポイントを指定します。

  • さまざまなタイプの NAS ファイルシステムの仕様、パフォーマンス、課金、およびサポートされているリージョンとゾーンの詳細については、「汎用 NAS ファイルシステム」および「超高速型 NAS ファイルシステム」をご参照ください。

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

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

  2. NAS ファイルシステムを作成します。詳細については、「ファイルシステムを作成する」をご参照ください。

    1. [ファイルシステムリスト] ページで、[ファイルシステムの作成] をクリックします。次に、[汎用 NAS ファイルシステムの作成] または [超高速型 NAS ファイルシステムの作成] を選択します。

    2. 表示されるパネルで、ファイルシステムパラメーターを構成し、[今すぐ購入] をクリックします。

      この例では、汎用 NAS ファイルシステムが作成されます。次の表に、ファイルシステムパラメーターの一部を示します。詳細については、「ファイルシステムを作成する」をご参照ください。

      パラメーター

      説明

      [リージョン]

      クラスターが配置されているリージョンを選択します。

      [ゾーン]

      ゾーンを選択します。

      説明

      NAS ファイルシステムは、同じ VPC 内の異なるゾーンにあるポッドにマウントできます。パフォーマンスを向上させるために、1 つのゾーンのみを選択することをお勧めします。

      [プロトコルタイプ]

      [NFS] を選択します。 SMB プロトコルを使用する NAS ファイルシステムはマウントできません。

      [VPC][vSwitch]

      このパラメーターは、汎用 NAS ファイルシステムでのみ使用できます。

      クラスター内のポッドで使用される VPC と vSwitch を選択します。

手順 2: 動的にプロビジョニングされた NAS ボリュームをマウントする

subpath モードを使用する

kubectl を使用する

1. StorageClass を作成する

  1. alicloud-nas-subpath.yaml という名前のファイルを作成し、次の内容をファイルにコピーして、ビジネス要件に基づいてパラメーターを変更します。

    allowVolumeExpansion: true
    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/"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    /* パラメーターの説明 */
    /* allowVolumeExpansion: このパラメーターは、汎用 NAS ファイルシステムでのみ使用できます。このパラメーターを true に設定すると、StorageClass に基づいて動的にプロビジョニングされた PV に NAS ディレクトリクォータが構成されます。 PVC を変更してボリュームを拡張できます。 */
    /* mountOptions: mountOptions フィールドに NAS ファイルシステムの options を設定します。たとえば、使用する NFS バージョンを指定できます。 */
    /* volumeAs: subpath に設定します。有効な値: subpath: NAS ファイルシステムのサブディレクトリを PV としてマウントします。NAS ファイルシステムとマウントポイントを手動で作成する必要があります。PV は、NAS ファイルシステムのサブディレクトリに対応します。 */
    /* server: NAS ファイルシステムのサブディレクトリを PV としてマウントする場合、NAS ファイルシステムのマウントポイント。このパラメーターを空のままにすると、デフォルトで / が使用されます。 */
    /* provisioner: ドライバーのタイプ。この例では、パラメーターは nasplugin.csi.alibabacloud.com に設定されています。これは、Alibaba Cloud が提供する NAS CSI プラグインが使用されていることを示します。 */
    /* reclaimPolicy: PV の再利用ポリシー。デフォルト値: Delete。値を Retain に設定することもできます。 */
    

    パラメーター

    説明

    allowVolumeExpansion

    このパラメーターは、パフォーマンス汎用型 NAS ファイルシステムでのみ使用できます。このパラメーターを true に設定すると、NAS ディレクトリクォータが StorageClass に基づいて動的にプロビジョニングされた PV に対して構成されます。PVC を変更してボリュームを拡張できます。

    説明

    NAS ディレクトリクォータは非同期的に有効になります。 PV が動的にプロビジョニングされた後、ディレクトリクォータはすぐに有効にならず、短期間に大量のデータが書き込まれた場合、クォータを超える可能性があります。 NAS ディレクトリクォータの詳細については、「ディレクトリクォータを管理する」をご参照ください。

    mountOptions

    mountOptions フィールドに NAS ファイルシステムの options を設定します。たとえば、使用する NFS バージョンを指定できます。

    volumeAs

    subpath に設定します。有効な値:

    • subpath: NAS ファイルシステムのサブディレクトリを PV としてマウントします。 NAS ファイルシステムとマウントポイントを手動で作成する必要があります。 PV は NAS ファイルシステムのサブディレクトリに対応します。

    • sharepath: PV の作成時にディレクトリは作成されませんが、StorageClass で指定されたパスが使用されます。つまり、各 PV は同じ NAS ディレクトリに対応します。これは、名前空間間でディレクトリを共有するシナリオに適しています。

    • filesystem: プロビジョナーが NAS ファイルシステムを自動的に作成します。各 PV は NAS ファイルシステムに対応します。

    server

    NAS ファイルシステムのサブディレクトリを PV としてマウントする場合、NAS ファイルシステムのマウントポイント。このパラメーターを空のままにすると、デフォルトで / が使用されます。

    重要

    実際のマウントポイントを指定する必要があります。マウントポイントのドメイン名のクエリ方法の詳細については、「マウントポイントを管理する」をご参照ください。

    provisioner

    ドライバーのタイプ。この例では、パラメーターは nasplugin.csi.alibabacloud.com に設定されています。これは、Alibaba Cloud が提供する NAS CSI プラグインが使用されていることを示します。

    reclaimPolicy

    PV の再利用ポリシー。デフォルト値: Delete。値を Retain に設定することもできます。

    • Delete: このポリシーを使用する場合は、archiveOnDelete パラメーターも指定する必要があります。

      • archiveOnDelete パラメーターを true に設定すると、PVC を削除した後、PVC に関連付けられた PV および NAS ファイルシステム内のファイルの名前が変更され、保持されます。

      • archiveOnDelete パラメーターを false に設定すると、PVC を削除した後、PVC に関連付けられた PV および NAS ファイルシステム内のファイルが削除されます。

        説明

        NAS サブパスディレクトリとその中のファイルのみが削除されます。 NAS ファイルシステムを削除するには、「ファイルシステムを削除する」をご参照ください。

    • Retain: PVC が削除されると、関連付けられた PV および NAS ファイルシステム内のファイルは保持され、手動でのみ削除できます。

    データセキュリティの要件が高い場合は、ユーザーエラーによるデータ損失を防ぐために、Retain ポリシーを使用することをお勧めします。

    archiveOnDelete

    reclaimPolicy パラメーターが Delete に設定されている場合に、バックエンドストレージ内のファイルを削除するかどうかを指定します。 NAS は共有ストレージサービスです。データセキュリティを確保するには、reclaimPolicy パラメーターと archiveOnDelete パラメーターの両方を指定する必要があります。 parameters セクションでポリシーを構成します。

    • デフォルト値: true。これは、PVC が削除されたときにサブディレクトリまたはファイルが削除されないことを示します。代わりに、サブディレクトリまたはファイルの名前は archived-{pvName}.{timestamp} の形式に変更されます。

    • このパラメーターを false に設定すると、PVC が削除されたときにバックエンドストレージが削除されます。

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

    kubectl create -f alicloud-nas-subpath.yaml

2. PVC を作成する

  1. pvc.yaml という名前のファイルを作成し、次の内容をファイルにコピーして、ビジネス要件に基づいてパラメーターを変更します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-csi-pvc
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: alicloud-nas-subpath
      resources:
        requests:
          storage: 20Gi
    /* パラメーターの説明 */
    /* name: PVC の名前。 */
    /* accessModes: PV のアクセスモード。デフォルト値は ReadWriteMany です。値を ReadWriteOnce または ReadOnlyMany に設定することもできます。 */
    /* storageClassName: PVC に関連付ける StorageClass の名前。 */
    /* storage: PVC によって要求されるストレージ。 */
    

    パラメーター

    説明

    name

    PVC の名前。

    accessModes

    PV のアクセスモード。デフォルト値は ReadWriteMany です。値を ReadWriteOnce または ReadOnlyMany に設定することもできます。

    storageClassName

    PVC に関連付ける StorageClass の名前。

    storage

    PVC によって要求されるストレージ。

    重要
    • このパラメーターで設定された容量は、アプリケーションが使用できる実際の容量を制限するものではなく、自動スケーリングも許可しません。 NAS ディレクトリのクォータは、NAS ファイルシステムが汎用であり、StorageClass の allowVolumeExpansion パラメーターが true に設定されている場合にのみ設定されます。詳細については、「動的にプロビジョニングされた NAS ボリュームを拡張する」をご参照ください。

    • ディレクトリのクォータが有効になると、CSI は PVC 容量に基づいて NAS ディレクトリのクォータを設定します。 NAS ディレクトリクォータは GiB 単位で測定され、実際のクォータは PVC 容量を GiB 単位の最も近い整数に切り上げて計算されます。

  2. PVC を作成します。

    kubectl create -f pvc.yaml

3. アプリケーションを作成し、NAS ファイルシステムをアプリケーションにマウントする

nginx-1 と nginx-2 という名前の 2 つのアプリケーションをデプロイして、NAS ファイルシステムの同じサブディレクトリを共有します。

  1. nginx-1.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nas-1
      labels:
        app: nginx-1
    spec:
      selector:
        matchLabels:
          app: nginx-1
      template:
        metadata:
          labels:
            app: nginx-1
        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
    /* mountPath: コンテナ内の NAS ファイルシステムのマウントパス。 */
    /* claimName: アプリケーションが NAS ファイルシステムのマウントに使用する PVC の名前。この例では、nas-csi-pvc が使用されています。 */
    
    • mountPath: コンテナ内の NAS ファイルシステムのマウントパス。

    • claimName: アプリケーションが NAS ファイルシステムのマウントに使用する PVC の名前。この例では、nas-csi-pvc が使用されています。

  2. nginx-2.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nas-2
      labels:
        app: nginx-2
    spec:
      selector:
        matchLabels:
          app: nginx-2
      template:
        metadata:
          labels:
            app: nginx-2
        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
    /* mountPath: コンテナ内の NAS ファイルシステムのマウントパス。この例では、/data が使用されています。 */
    /* claimName: nginx-1 で使用されている PVC の名前を入力します。この例では、値は nas-csi-pvc に設定されています。 */
    
    • mountPath: コンテナ内の NAS ファイルシステムのマウントパス。この例では、/data が使用されています。

    • claimName: nginx-1 で使用されている PVC の名前を入力します。この例では、値は nas-csi-pvc に設定されています。

  3. nginx-1 アプリケーションと nginx-2 アプリケーションをデプロイします。

    kubectl create -f nginx-1.yaml -f nginx-2.yaml
  4. ポッド情報を確認します。

    kubectl get pod

    期待される出力:

    NAME                                READY   STATUS    RESTARTS   AGE
    deployment-nas-1-5b5cdb85f6-a****   1/1     Running   0          32s
    deployment-nas-2-c5bb4746c-b****    1/1     Running   0          32s

    NAS ファイルシステムの /data サブディレクトリは異なるポッドにマウントされます。マウントポイントが 0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s/nas-79438493-f3e0-11e9-bbe5-00163e09**** である NAS ボリュームは、/データdeployment-nas-1-5b5cdb85f6-a**** アプリケーションと deployment-nas-2-c5bb4746c-b**** アプリケーションの /data ディレクトリにマウントされます。

    • /k8s: StorageClass の構成で指定されているように、サブディレクトリは subpath モードでマウントされます。

    • nas-79438493-f3e0-11e9-bbe5-00163e09****: 自動的に作成された PV の名前。

    説明

    NAS ファイルシステムの異なるサブディレクトリを異なるポッドにマウントするには、ポッドごとに個別の PVC を作成する必要があります。この例では、pvc-1 は nginx-1 用に作成され、pvc-2 は nginx-2 用に作成されます。

ACK コンソールを使用する

1. StorageClass を作成する

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

  2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のウィンドウで、[ボリューム] > [StorageClass] を選択します。

  3. [StorageClass] ページで、[作成] をクリックします。

  4. [作成] ダイアログボックスで、StorageClass を構成し、[作成] をクリックします。

    次の表にパラメーターを示します。

    パラメーター

    説明

    [名前]

    StorageClass の名前。コンソールに表示される形式の要件に従ってください。

    alicloud-nas-subpath

    [PV タイプ]

    [NAS] を選択します。

    NAS

    [マウントポイントを選択]

    NAS ファイルシステムのマウントポイント。マウントポイントのドメイン名のクエリ方法の詳細については、「マウントポイントを管理する」をご参照ください。

    使用可能なマウントポイントがない場合は、最初に NAS ファイルシステムを作成します。詳細については、「NAS ファイルシステムとマウントポイントを作成する」をご参照ください。

    0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s/

    [ボリュームモード]

    ボリュームのアクセスモード。デフォルトでは [共有ディレクトリ] が選択されています。有効な値:

    • [共有ディレクトリ]: NAS ボリュームは sharepath モードでマウントされます。すべてのボリュームが同じパスを共有します。つまり、データは <bucket>:<path>/ に保存されます。

    • [サブディレクトリ]: NAS ボリュームは subpath モードでマウントされます。ボリュームを作成すると、マウントパスにサブディレクトリが自動的に作成されます。つまり、データは <bucket>:<path>/<pv-name>/ に保存されます。

      説明

      [サブディレクトリ] モードは、CSI プラグインのバージョンが 1.31.4 以降の場合にのみ有効になります。それ以外の場合は、[共有ディレクトリ] モードが使用されます。

    サブディレクトリ

    [マウントパス]

    NAS ファイルシステムのマウントパス。

    • 指定したサブディレクトリが存在しない場合、システムは NAS ファイルシステムにサブディレクトリを自動的に作成し、そのサブディレクトリをクラスターにマウントします。

    • このパラメーターを構成しない場合、NAS ファイルシステムのルートディレクトリがマウントされます。

    • 超高速型 NAS ファイルシステムをマウントする場合は、このパラメーターを /share ディレクトリのサブディレクトリに設定します。例: /share/data

    /

    [再利用ポリシー]

    再利用ポリシー。有効な値: [削除][保持]。デフォルト値: [削除]

    説明

    archiveOnDelete などのパラメーターは、コンソールを介して構成できません。したがって、バックエンド NAS ストレージ内のファイルを完全に削除することはできません。完全に削除するには、kubectl メソッドを使用します。

    • [削除]: このポリシーを使用する場合は、archiveOnDelete パラメーターを構成する必要があります。

      • archiveOnDelete パラメーターを true に設定すると、PVC を削除した後、PVC に関連付けられた PV および NAS ファイルシステム内のファイルの名前が変更され、保持されます。

      • archiveOnDelete パラメーターを false に設定すると、PVC を削除した後、PVC に関連付けられた PV および NAS ファイルシステム内のファイルが削除されます。

    • [保持]: PVC が削除されると、関連する PV および NAS ファイルシステム内のファイルは保持され、手動でのみ削除できます。

    データセキュリティの要件が高い場合は、ユーザーエラーによるデータ損失を防ぐために、[保持] ポリシーを使用することをお勧めします。

    保持

    [マウントオプション]

    マウントオプション (ネットワーク ファイル システム (NFS) バージョンなど)。

    NFS v3 を使用することをお勧めします。超高速型 NAS ファイルシステムは NFS v3 のみをサポートしています。NFS プロトコルの詳細については、「NFS」をご参照ください。

    デフォルト設定を保持します。

    StorageClass を作成した後、[StorageClass] ページで StorageClass を表示できます。

2. PVC を作成する

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

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

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

    パラメーター

    説明

    [PVC タイプ]

    NAS を選択します。

    NAS

    [名前]

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

    pvc-nas

    [割り当てモード]

    [StorageClass を使用する] を選択します。

    StorageClass を使用する

    [既存の Storage Class]

    [選択] をクリックします。 [Storage Class の選択] ダイアログボックスで、使用する StorageClass を見つけ、[アクション] 列の [選択] をクリックします。

    前の手順で作成した alicloud-nas-subpath StorageClass を選択します。

    [容量]

    PVC によって要求される容量。このパラメーターの値は、アプリケーションで使用できる最大容量の制限を指定するものではありません。

    重要
    • このパラメーターで設定された容量は、アプリケーションが使用できる実際の容量を制限するものではなく、自動スケーリングも許可しません。 NAS ディレクトリのクォータは、NAS ファイルシステムが汎用であり、StorageClass の allowVolumeExpansion パラメーターが true に設定されている場合にのみ設定されます。詳細については、「動的にプロビジョニングされた NAS ボリュームを拡張する」をご参照ください。

    • ディレクトリのクォータが有効になると、CSI は PVC 容量に基づいて NAS ディレクトリのクォータを設定します。 NAS ディレクトリクォータは GiB 単位で測定され、実際のクォータは PVC 容量を GiB 単位の最も近い整数に切り上げて計算されます。

    20Gi

    [アクセスモード]

    デフォルト値: [ReadWriteMany]。値を [ReadWriteOnce] または [ReadOnlyMany] に設定することもできます。

    ReadWriteMany

3. アプリケーションを作成し、NAS ファイルシステムをアプリケーションにマウントする

deployment-nas-1 と deployment-nas-2 という名前のアプリケーションを作成するには、次の操作を実行します。アプリケーションが NAS ファイルシステムの同じサブディレクトリを共有していることを確認します。

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

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

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

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

    項目

    パラメーター

    説明

    [基本情報]

    [名前]

    デプロイメントのカスタム名を入力します。名前はコンソールに表示される形式の要件に従う必要があります。

    deployment-nas-1

    [レプリカ]

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

    2

    [コンテナー]

    [イメージ名]

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

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

    [必要なリソース]

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

    0.25 vCores と512 MiB

    ボリューム

    [PVC を追加] をクリックし、パラメーターを構成します。

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

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

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

    • コンテナ パス: /data

    nas1.png

  4. 次のコマンドを実行して、アプリケーションのデプロイメントの進行状況をクエリします。

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

    2. [ポッド] タブで、ポッドが [実行中] 状態であるかどうかを確認します。

共有パスモードを使用する

kubectl を使用する

1. StorageClass を作成する

  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:/data"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    パラメーター

    説明

    mountOptions

    ネットワーク ファイル システム (NFS) バージョンなどのマウント オプション。

    NFS v3 を使用することをお勧めします。超高速型 NAS ファイルシステムは NFS v3 のみをサポートします。NFS プロトコルについて詳しくは、「NFS」をご参照ください。

    volumeAs

    sharepath に設定します。有効な値:

    • subpath: NAS ファイルシステムのサブディレクトリを PV としてマウントします。NAS ファイルシステムとマウント ターゲットを手動で作成する必要があります。PV は、NAS ファイルシステムのサブディレクトリに対応します。

    • sharepath: PV の作成時にディレクトリは作成されませんが、StorageClass で指定されたパスが使用されます。これは、各 PV が同じ NAS ディレクトリに対応することを意味し、名前空間間でディレクトリが共有されるシナリオに適しています。

    • filesystem: プロビジョナーが NAS ファイルシステムを自動的に作成します。各 PV は NAS ファイルシステムに対応します。

    server

    NAS ファイルシステムのサブディレクトリを PV としてマウントする場合、NAS ファイルシステムのマウント ターゲットとマウント パス。マウント パスを設定しない場合、デフォルトで / が使用されます。

    重要

    実際のマウント ターゲットを指定する必要があります。マウント ターゲットのドメイン名を表示する方法について詳しくは、「マウント ターゲットの管理」をご参照ください。

    provisioner

    ドライバーのタイプ。この例では、パラメーターは nasplugin.csi.alibabacloud.com に設定されています。これは、Alibaba Cloud が NAS 用に提供する CSI プラグインが使用されていることを示します。

    reclaimPolicy

    sharepath モードを使用する場合は、Retain を選択する必要があります。

  2. StorageClass を作成します。

    kubectl create -f alicloud-nas-sharepath.yaml

2. 異なる名前空間で PVC を作成する

NAS ファイルシステムを異なる名前空間のポッドにマウントするには、2 つの名前空間を作成する必要があります。

  1. 次のコマンドを実行して、ns1 と ns2 という名前の名前空間を作成します。

    kubectl create ns ns1
    kubectl create ns ns2
  2. 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

    パラメーター

    説明

    name

    PVC の名前。

    accessModes

    PV のアクセス モード。デフォルト値は ReadWriteMany です。ReadWriteOnce または ReadOnlyMany に設定することもできます。

    storageClassName

    PVC に関連付ける StorageClass の名前。

    storage

    PVC によって要求されるストレージ。

    重要

    sharepath モードを使用する場合、このパラメーターは有効になりません。

  3. PVC を作成します。

    kubectl create -f pvc.yaml

3. アプリケーションを作成し、NAS ファイルシステムをアプリケーションにマウントする

  1. 異なる名前空間にアプリケーションを作成し、対応する名前空間に作成された PVC をマウントします。アプリケーションは、StorageClass で定義された NAS ボリュームを共有します。

    1. nginx.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。このファイルには 2 つのデプロイメントが含まれています。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx
        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
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx
        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
      • mountPath: コンテナー内で NAS ファイルシステムがマウントされるパス。

      • claimName: アプリケーションが NAS ファイルシステムのマウントに使用する PVC の名前。この例では、nas-csi-pvc が使用されています。

    2. アプリケーションを作成します。

      kubectl create -f nginx.yaml
  2. ポッド情報を確認します。

    kubectl get pod -A -l app=nginx

    予想される出力:

    NAMESPACE  NAME                READY   STATUS    RESTARTS   AGE
    ns1      nginx-5b5cdb85f6-a****   1/1     Running   0          32s
    ns2      nginx-c5bb4746c-b****    1/1     Running   0          32s

    NASファイルシステムの/dataサブディレクトリを、異なる名前空間のポッドにマウントします。 マウント対象が0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/dataであるNASボリュームは、nginx-5b5cdb85f6-a****およびnginx-c5bb4746c-b****アプリケーションの/dataディレクトリにマウントされます。

ACK コンソールを使用する

1. StorageClass を作成する

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

  2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のウィンドウで、[ボリューム] > [StorageClass] を選択します。

  3. [StorageClass] ページで、[作成] をクリックします。

  4. [作成] ダイアログ ボックスで、StorageClass を設定し、[作成] をクリックします。

    次の表にパラメーターを示します。

    パラメーター

    説明

    [名前]

    StorageClass の名前。コンソールに表示される形式の要件に従ってください。

    alicloud-nas-sharepath

    [PV タイプ]

    [NAS] を選択します。

    NAS

    [マウント ターゲットを選択]

    NAS ファイルシステムのマウント ターゲット。マウント ターゲットのドメイン名のクエリ方法について詳しくは、「マウント ターゲットの管理」をご参照ください。

    使用可能なマウント ターゲットがない場合は、最初に NAS ファイルシステムを作成します。詳細については、「NAS ファイルシステムとマウント ターゲットを作成する」をご参照ください。

    0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/data

    [ボリューム モード]

    ボリュームのアクセス モード。デフォルトでは [共有ディレクトリ] が選択されています。有効な値:

    • [共有ディレクトリ]: NAS ボリュームは sharepath モードでマウントされます。PV の作成時にディレクトリは作成されませんが、StorageClass で指定されたパスが使用されます。これは、各 PV が同じ NAS ディレクトリに対応することを意味し、名前空間間でディレクトリが共有されるシナリオに適しています。

    • [サブディレクトリ]: NAS ボリュームは subpath モードでマウントされます。NAS ファイルシステムのサブディレクトリを PV としてマウントします。NAS ファイルシステムとマウント ターゲットを手動で作成する必要があります。PV は、NAS ファイルシステムのサブディレクトリに対応します。

    共有ディレクトリ

    [マウント パス]

    NAS ファイルシステムのマウント パス。

    • 指定されたサブディレクトリが存在しない場合、システムは NAS ファイルシステムにサブディレクトリを自動的に作成し、そのサブディレクトリをクラスターにマウントします。

    • このパラメーターを設定しない場合、NAS ファイルシステムのルート ディレクトリがマウントされます。

    • 超高速型 NAS ファイルシステムをマウントする場合、このパラメーターを /share ディレクトリのサブディレクトリに設定します。例: /share/data

    /

    [再利用ポリシー]

    sharepath モードを使用する場合は、Retain を選択する必要があります。

    Retain

    [マウント オプション]

    ネットワーク ファイル システム (NFS) バージョンなどのマウント オプション。

    NFS v3 を使用することをお勧めします。超高速型 NAS ファイルシステムは NFS v3 のみをサポートします。NFS プロトコルについて詳しくは、「NFS」をご参照ください。

    デフォルト設定を保持します。

    StorageClass を作成した後、[StorageClass] ページで StorageClass を表示できます。

2. PVC を作成する

名前空間間で共有ディレクトリをマウントするには、コンソールで ns1 と ns2 の名前空間を作成する必要があります。

  1. ns1 と ns2 の名前空間を作成します。詳細については、「名前空間とリソース クォータの管理」をご参照ください。

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

  3. [永続ボリューム クレーム] ページで、[名前空間] セクションの [ns1] を選択し、[作成] をクリックします。

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

    パラメーター

    説明

    [PVC タイプ]

    NAS を選択します。

    NAS

    [名前]

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

    pvc-nas

    [割り当てモード]

    PVC の割り当てモード。この例では、[StorageClass を使用する] が選択されています。

    StorageClass を使用する

    [既存の StorageClass]

    [選択] をクリックします。[StorageClass の選択] ダイアログ ボックスで、使用する StorageClass を見つけ、[アクション] 列の [選択] をクリックします。

    前の手順で作成した alicloud-nas-sharepath StorageClass を選択します。

    [容量]

    PVC によって要求される容量。

    20Gi

    [アクセス モード]

    デフォルト値: [ReadWriteMany][ReadWriteOnce] または [ReadOnlyMany] に設定することもできます。

    ReadWriteMany

  5. 上記の手順を実行して、ns2 名前空間に pvc-nas を作成します。

3. アプリケーションを作成し、NAS ファイルシステムをアプリケーションにマウントする

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

  2. [デプロイメント] ページの上部で、[名前空間] セクションの [ns1] を選択し、[イメージから作成] をクリックします。

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

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

    項目

    パラメーター

    説明

    [基本情報]

    [名前]

    デプロイメントのカスタム名を入力します。名前は、コンソールに表示される形式の要件に従う必要があります。

    nginx

    [レプリカ]

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

    2

    [コンテナー]

    [イメージ名]

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

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

    [必要なリソース]

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

    0.25 vCore と 512 MiB のメモリー

    [ボリューム]

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

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

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

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

    • コンテナー パス: /data

    nas1.png

  4. 上記の手順を実行して、ns2 名前空間に nginx という名前のアプリケーションを作成します。

  5. 次のコマンドを実行して、アプリケーションのデプロイメントの進行状況をクエリします。

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

    2. [ポッド] タブで、ポッドが [実行中] 状態であるかどうかを確認します。

ステップ 3:NAS のストレージパフォーマンスを確認する

前のステップで作成したデプロイメントには、2 つのポッドが含まれています。2 つのポッドは、同じ NAS ファイルシステムにマウントされています。次のいずれかの方法を使用して、NAS ボリュームがデータを永続化および共有できることを確認できます。

  • ポッドを再作成します。再作成されたポッドから NAS ボリュームにアクセスし、元のデータが NAS ファイルシステムにまだ存在するかどうかを確認します。データがまだ存在する場合、データの永続性は有効になっています。

  • 1 つのポッドにファイルを作成し、もう 1 つのポッドからそのファイルにアクセスします。ファイルにアクセスできる場合、データ共有は有効になっています。

NAS ファイルシステムを使用してデータを永続化できることを確認する

  1. 次のコマンドを実行して、アプリケーション用に作成されたポッドをクエリします。

    kubectl get pod 

    期待される出力:

    NAME                                READY   STATUS    RESTARTS   AGE
    deployment-nas-1-5b5cdb85f6-a****   1/1     Running   0          32s
    deployment-nas-2-c5bb4746c-b****    1/1     Running   0          32s
  2. ポッドにファイルを作成します。

    1. アプリケーションにマウントされている /data パスにファイルが存在するかどうかを確認します。

      この例では、ポッド deployment-nas-1-5b5cdb85f6-a**** を使用します。

      kubectl exec deployment-nas-1-5b5cdb85f6-a**** -- ls /data

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

    2. 次のコマンドを実行して、ポッドの /data パスに nas という名前のファイルを作成します。

      kubectl exec deployment-nas-1-5b5cdb85f6-a**** -- touch /data/nas
  3. 別のポッドから作成したファイルにアクセスします。

    この例では、ポッド deployment-nas-2-c5bb4746c-b**** を使用します。

    kubectl exec deployment-nas-2-c5bb4746c-b**** -- ls /data

    期待される出力:

    nas
  4. ポッドを再作成します。

    1. ポッドを削除します。

      kubectl delete pod deployment-nas-1-5b5cdb85f6-a****
    2. 別のコマンドラインインターフェイス ( CLI ) を開き、ポッドがどのように削除および再作成されるかを確認します。

      kubectl get pod -w -l app=nginx
  5. ポッドの削除後もファイルがまだ存在することを確認します。

    1. 再作成されたポッドをクエリします。

      kubectl get pod

      期待される出力:

      NAME                                READY   STATUS    RESTARTS   AGE
      deployment-nas-1-5b5cdm2g5-c****    1/1     Running   0          32s
      deployment-nas-2-c5bb4746c-b****    1/1     Running   0          32s
    2. 再作成されたポッドの /data パスのファイルをクエリします。

      この例では、ポッド deployment-nas-1-5b5cdm2g5-c**** を使用します。

      kubectl exec deployment-nas-1-5b5cdm2g5-c**** -- ls /data

      期待される出力:

      nas

      nas ファイルは、/data パスにまだ存在します。これは、データが NAS ファイルシステムに永続化されていることを示します。

NAS ファイルシステムのデータがポッド間で共有できることを確認する

NAS ボリュームを複数のポッドにマウントできます。1 つのポッドでデータが変更されると、変更は他のポッドに自動的に同期されます。次の例では、NAS ファイルシステムのデータがポッド間で共有できることを確認する方法について説明します。

  1. アプリケーション用に作成されたポッドと、マウントされた NAS ファイルシステム内のファイルをクエリします。

    1. 次のコマンドを実行して、アプリケーション用に作成されたポッドをクエリします。

      kubectl get pod 

      期待される出力:

      NAME                                READY   STATUS    RESTARTS   AGE
      deployment-nas-1-5b5cdb85f6-a****   1/1     Running   0          32s
      deployment-nas-2-c5bb4746c-b****    1/1     Running   0          32s
    2. 2 つのポッドの /data パスのファイルを表示します。

      kubectl exec deployment-nas-1-5b5cdb85f6-a**** -- ls /data
      kubectl exec deployment-nas-2-c5bb4746c-b**** -- ls /data

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

  2. ポッドの /data パスに nas という名前のファイルを作成します。

    この例では、ポッド deployment-nas-1-5b5cdb85f6-a**** を使用します。

     kubectl exec deployment-nas-1-5b5cdb85f6-a**** -- touch /data/nas
  3. 2 つのポッドの /data パスのファイルを表示します。

    1. 次のコマンドを実行して、ポッド deployment-nas-1-5b5cdb85f6-a****/data パスのファイルをクエリします。

      kubectl exec deployment-nas-1-5b5cdb85f6-a**** -- ls /data

      期待される出力:

      nas
    2. 次のコマンドを実行して、ポッド deployment-nas-2-c5bb4746c-b****/data パスのファイルをクエリします。

      kubectl exec deployment-nas-2-c5bb4746c-b**** -- ls /data

      期待される出力:

      nas

      1 つのポッドの /data パスにファイルを作成した後、もう 1 つのポッドの /data パスにもファイルが見つかります。これは、NAS ファイルシステムのデータが 2 つのポッドによって共有されていることを示します。

よくある質問

NAS ファイルシステムでユーザー分離またはユーザーグループ分離を有効にするにはどうすればよいですか?

異なるユーザーとユーザーグループ間でデータのセキュリティを確保するには、次の手順を実行して NAS ファイルシステムでユーザーまたはユーザーグループを分離します。

  1. 次の YAML テンプレートを使用してアプリケーションを作成します。アプリケーションのコンテナーは nobody ユーザーとしてプロセスを開始し、ディレクトリを作成します。 nobody ユーザーのユーザー識別子 (UID) とグループ識別子 (GID) は 65534 です。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nas-sts
    spec:
      selector:
        matchLabels:
          app: busybox
      serviceName: "busybox"
      replicas: 1
      template:
        metadata:
          labels:
            app: busybox
        spec:
          securityContext:
            fsGroup: 65534    # コンテナーはnobodyユーザーとしてディレクトリを作成します。nobodyユーザーのUIDとGIDは65534です。
            fsGroupChangePolicy: "OnRootMismatch"    # 権限と所有権は、ルートディレクトリの権限と所有権がボリュームの要件を満たしていない場合にのみ変更されます。
          containers:
          - name: busybox
            image: busybox
            command:
            - sleep
            - "3600"
            securityContext:
              runAsUser: 65534    # コンテナー内のすべてのプロセスは、nobodyユーザー(UID 65534)として実行されます。
              runAsGroup: 65534   # コンテナー内のすべてのプロセスは、nobodyユーザー(GID 65534)として実行されます。
              allowPrivilegeEscalation: false
            volumeMounts:
            - name: nas-pvc
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: nas-pvc
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "alicloud-nas-subpath"
          resources:
            requests:
              storage: 100Gi
  2. コンテナーで次の top コマンドを実行して、コマンドが nobody ユーザーとして実行されているかどうかを確認します。

    kubectl exec nas-sts-0 -- "top"

    期待される出力:

    Mem: 11538180K used, 52037796K free, 5052K shrd, 253696K buff, 8865272K cached
    CPU:  0.1% usr  0.1% sys  0.0% nic 99.7% idle  0.0% io  0.0% irq  0.0% sirq
    Load average: 0.76 0.60 0.58 1/1458 54
      PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
       49     0 nobody   R     1328  0.0   9  0.0 top
        1     0 nobody   S     1316  0.0  10  0.0 sleep 3600

    出力は、top コマンドが nobody ユーザーとして実行されていることを示しています。

  3. 次のコマンドを実行して、NAS ファイルシステムのマウントディレクトリ内のディレクトリとファイルの作成に nobody ユーザーが使用されているかどうかを確認します。

    kubectl exec nas-sts-0 -- sh -c "touch /data/test; mkdir /data/test-dir; ls -arlth /data/"

    期待される出力:

    total 5K
    drwxr-xr-x    1 root     root        4.0K Aug 30 10:14 ..
    drwxr-sr-x    2 nobody   nobody      4.0K Aug 30 10:14 test-dir
    -rw-r--r--    1 nobody   nobody         0 Aug 30 10:14 test
    drwxrwsrwx    3 root     nobody      4.0K Aug 30 10:14 .

    出力は、/data ディレクトリ内の test ファイルと test-dir ディレクトリの作成に nobody ユーザーが使用されていることを示しています。

ファイルシステムモードを使用して動的にプロビジョニングされた NAS ボリュームをマウントするにはどうすればよいですか?

アプリケーション用に NAS ファイルシステムとマウントポイントを動的に作成または削除する場合、ファイルシステムモードを使用して動的にプロビジョニングされた NAS ボリュームをマウントできます。 CSI プラグインは、PVC が作成されると NAS ファイルシステムとマウントポイントを自動的に作成します。 PVC が削除されると、マウントポイントと NAS ファイルシステムは動的に削除されます。 ファイルシステムモードで NAS ボリュームをマウントするポッドに対しては、1 つのファイルシステムと 1 つのマウントポイントのみを作成できます。

ファイルシステムモードを使用して動的にプロビジョニングされた NAS ボリュームをマウントする方法を表示する

重要

デフォルトでは、ファイルシステムモードでマウントされている PV を削除すると、システムは関連する NAS ファイルシステムとマウントポイントを保持します。 PV と共に NAS ファイルシステムとマウントポイントを削除するには、StorageClass の構成で reclaimPolicyDelete に設定し、deleteVolumetrue に設定します。

専用クラスター の場合は、StorageClass を作成するには、次の手順を実行します。 その他の種類のクラスターの場合は、手順 2 から次の手順を実行します。

1. (オプション) RAM ポリシーを構成し、クラスターに割り当てられた RAM ロールにポリシーをアタッチします

この手順は、専用クラスター の場合にのみ必要です。

  1. ファイルシステムモードでは、NAS ファイルシステムとマウントポイントを動的に作成および削除できます。 専用クラスター でこれらの操作を実行するには、必要な権限を CSI-Provisioner に付与する必要があります。 次のサンプルコードは、必要な権限を含む RAM ポリシーを示しています。

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

    次のいずれかの方法で権限を付与できます。

    • 上記の RAM ポリシーを 専用クラスター のマスター RAM ロールにアタッチします。 詳細については、「カスタムポリシーのドキュメントと説明を変更する」をご参照ください。自定义授权

    • RAM ユーザーを作成し、上記の RAM ポリシーを RAM ユーザーにアタッチします。 AccessKey ペアを生成し、CSI-Provisioner 構成の env 変数で AccessKey ペアを指定します。

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

2. StorageClass を作成する

  1. 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

    パラメーター

    説明

    volumeAs

    filesystem に設定します。 有効な値:

    • subpath: NAS ファイルシステムのサブディレクトリを PV としてマウントします。 NAS ファイルシステムとマウントポイントを手動で作成する必要があります。 PV は NAS ファイルシステムのサブディレクトリに対応します。

    • filesystem: プロビジョナーは NAS ファイルシステムを自動的に作成します。 各 PV は NAS ファイルシステムに対応します。

    fileSystemType

    NAS ファイルシステムのタイプ。 デフォルト値: standard。 デフォルト値は汎用 NAS タイプを示します。 有効な値:

    • standard: 汎用型 NAS ファイルシステム

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

    storageType

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

    • fileSystemType パラメーターが standard に設定されている場合、有効な値は Performance と Capacity です。 デフォルト値: Performance。

    • fileSystemType パラメーターが extreme に設定されている場合、有効な値は standard と advance です。 デフォルト値: standard。

    regionId

    NAS ファイルシステムが属するリージョンの ID。

    zoneId

    NAS ファイルシステムのゾーン ID。

    vpcId

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

    vSwitchId

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

    accessGroupName

    NAS ファイルシステムのマウントポイントが属する権限グループ。 デフォルト値: DEFAULT_VPC_GROUP_NAME

    deleteVolume

    関連する PV が削除された場合の NAS ファイルシステムの再利用ポリシー。 NAS は共有ストレージサービスです。 したがって、データセキュリティを確保するために、deleteVolume パラメーターと reclaimPolicy パラメーターを指定する必要があります。

    provisioner

    ドライバーのタイプ。 この例では、パラメーターは nasplugin.csi.alibabacloud.com に設定されています。 これは、Alibaba Cloud が NAS 用に提供する CSI プラグインが使用されていることを示します。

    reclaimPolicy

    PV の再利用ポリシー。 PVC を削除すると、deleteVolumetrue に、reclaimPolicy を Delete に設定した場合にのみ、関連する NAS ファイルシステムが自動的に削除されます。

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

    kubectl create -f alicloud-nas-fs.yaml

3. PVC とポッドを作成して NAS ボリュームをマウントする

  1. pvc.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-csi-pvc-fs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alicloud-nas-fs
      resources:
        requests:
          storage: 20Gi
  2. nginx.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nas-fs
      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"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc-fs
  3. PVC とポッドを作成します。

    kubectl create -f pvc.yaml -f nginx.yaml

参照資料