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

File Storage NAS:NFSを使用して静的にプロビジョニングされたNASボリュームをマウントする

最終更新日:Jul 30, 2024

Apsara File Storage NAS (NAS) は、共有アクセス、柔軟なスケーリング、高信頼性、高性能を提供する分散ファイルシステムです。 このトピックでは、静的にプロビジョニングされたNASボリュームをマウントする方法、および静的にプロビジョニングされたNASボリュームを使用して永続ストレージと共有ストレージを有効にする方法について説明します。

前提条件

シナリオ

  • アプリケーションには高いディスクI/Oが必要です。

  • Object storage service (OSS) よりも高い読み取りおよび書き込みスループットを提供するストレージサービスが必要です。

  • 異なるホスト間でファイルを共有。 たとえば、NAS ファイルシステムをサーバーとして使用したい場合です。

使用上の注意

静的にプロビジョニングされたNASボリュームのマウント

ACKコンソールまたはkubectlを使用して、静的にプロビジョニングされたNASボリュームをマウントできます。

ACKコンソールに静的にプロビジョニングされたNASボリュームをマウントする

ステップ1: PVの作成

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

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

  3. [ボリューム] ページの右上隅にある [作成] をクリックします。

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

    パラメーター

    説明

    PVタイプ

    クラウドディスク、NAS、またはOSSを選択できます。 この例では、NASが選択されています。

    ボリューム名

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

    容量

    PV の容量。 NASファイルシステムは無制限の容量を提供します。 このパラメーターは、NASファイルシステムのストレージ使用量を制限しませんが、PVの容量を定義します。

    アクセスモード

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

    CNFSの有効化

    Container Network File System (CNFS) を有効にするかどうかを指定します。 CNFSを有効にした後、次の操作を実行する必要があります。

    マウントターゲットドメイン名

    [マウントターゲットの選択] を選択してマウントターゲットを選択するか、[カスタム] を選択してマウントターゲットを入力します。 マウントターゲットのドメイン名を表示する方法の詳細については、「マウントターゲットのドメイン名の表示」をご参照ください。

    詳細オプションの表示

    • マウントパス: NASファイルシステムのマウントパス。 マウントパスは、ルートディレクトリを示すスラッシュ (/) で始まる必要があります。 このパラメーターを設定すると、PVは指定されたサブディレクトリにマウントされます。

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

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

      • Extreme NASファイルシステムをマウントする場合は、サブディレクトリが /shareディレクトリの下にある必要があります。

    • ポリシーの再利用: このパラメーターはデフォルトでDeleteに設定されています。 このパラメーターをRetainに設定することもできます。

      • 削除: 再利用ポリシーが削除されている場合は、archiveOnDeleteパラメーターを設定する必要があります。

        • archiveOnDeletetrueに設定した場合、PVCを削除した後、関連するPVおよびNASファイルシステムの名前が変更されます。 それらはPVCと一緒に削除されません。

        • archiveOnDeletefalseに設定した場合、PVCを削除すると、関連するPVおよびNASファイルシステムも削除されます。

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

      より高度なデータセキュリティが必要な場合は、ユーザーエラーによるデータ損失を防ぐため、保持モードを使用することを推奨します。

    • マウントオプション: NFSプロトコルのバージョンを含む、NASファイルシステムをマウントするためのオプションのパラメーター。

      NFSv3の使用を推奨します。 Extreme NASファイルシステムはNFSv3のみをサポートします。 NFSプロトコルの詳細については、「NFS」をご参照ください。

    ラベル

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

  5. 設定が完了したら、[作成] をクリックします。

手順 2: PVC の作成

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

  2. 永続的なボリュームクレームページの右上隅に、作成をクリックします。

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

    パラメーター

    説明

    PVCタイプ

    クラウドディスク、NAS、またはOSSを選択できます。 この例では、NASが選択されています。

    名前

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

    割り当てモード

    この例では、Existing Volumesが選択されています。

    説明

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

    既存のストレージクラス

    [PVの選択] をクリックします。 使用するPVを見つけて、[操作] 列の [選択] をクリックします。

    容量

    PV の容量。

    説明

    PVCによって要求される容量は、PVCに結合されるPVの容量を超えることはできない。

    アクセスモード

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

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

    PVCの作成後、PVCリストでPVCを表示できます。 PVCは、対応するPVに結合される。

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

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

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

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

  4. この例では、ボリュームパラメータを設定する方法を示します。 その他のパラメーターの詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。

    ローカルボリュームとクラウドボリュームを追加できます。

    • ローカルストレージの追加: [PVタイプ] ドロップダウンリストから、HostPath、ConfigMap、Secret、またはEmptyDirを選択できます。 次に、マウントソースとコンテナパスのパラメーターを設定して、ボリュームをコンテナパスにマウントします。 詳しい情報は、『Volumes』をご参照ください。

    • PVCの追加: クラウドボリュームを追加できます。

    この例では、NASボリュームがコンテナ内の /tmpパスにマウントされています。

  5. アプリケーションの設定が完了したら、[作成] をクリックします。

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

静的にプロビジョニングされたNASボリューム

  1. 静的にプロビジョニングされたPVを作成します。

    1. pv-nas.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   # Specify the name of the PV. 
          volumeAttributes:
            server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com"
            path: "/csi"
        mountOptions:
        - nolock,tcp,noresvport
        - vers=3

      パラメーター

      説明

      name

      PV の名前。

      labels

      PVに追加するラベル。

      ストレージ

      NASボリュームの容量。

      accessModes

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

      ドライバー

      ボリュームのプロビジョニングに使用されるストレージドライバーのタイプ。 この例では、パラメーターはnasplugin.csi.alibabacloud.comに設定されています。 これは、Alibaba Cloudが提供するCSIプラグインが使用されていることを示しています。

      volumeHandle

      PVの一意の識別子。 PVの名前を入力します。 複数のPVが使用される場合、各PVの識別子は一意でなければならない。

      サーバー

      NASファイルシステムのマウントターゲット。

      重要

      値をマウントターゲットのドメイン名に置き換えます。 マウントターゲットのドメイン名を表示する方法の詳細については、「マウントターゲットのドメイン名の表示」をご参照ください。

      パス

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

      vers

      NFSプロトコルのバージョン。 NFSv3の使用を推奨します。 Extreme NASファイルシステムはNFSv3のみをサポートします。 NFSプロトコルの詳細については、「NFS」をご参照ください。

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

      kubectl create -f pv-nas.yaml
  2. NASタイプのPVCを作成するときは、selectorパラメーターを設定して、PVを選択してPVCにバインドする方法を指定します。

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

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

      ストレージ

      PVCが主張する容量。 請求される容量は、PVCに結合されるPVの容量を超えることはできない。

      matchLabels

      ラベルは、PVを選択し、それをPVCに結合するために使用される。

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

      kubectl create -f pvc-nas.yaml
  3. nas-staticという名前のアプリケーションをデプロイし、PVCをアプリケーションに関連付けます。

    1. 次の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: nginx
              ports:
              - containerPort: 80
              volumeMounts:
                - name: pvc-nas
                  mountPath: "/data"
            volumes:
              - name: pvc-nas
                persistentVolumeClaim:
                  claimName: pvc-nas

      パラメーター

      説明

      mountPath

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

      claimName

      アプリケーションにマウントされているPVCの名前。

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

      kubectl create -f nas.yaml
  4. 次のコマンドを実行して、アプリケーションを実行するポッドを照会します。

    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. 次のコマンドを実行して、デプロイされたアプリケーションの名前を照会します。

      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. 次のコマンドを実行して、ポッドの /dataパス内のファイルを照会します。 例としてポッドのnas-static-5b5cdb85f6-n **** を使用します。

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

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

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

    kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
  3. 次のコマンドを実行して、ポッドnas-static-5b5cdb85f6-n ****/dataパス内のファイルを照会します。

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

    期待される出力:

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

    kubectl delete pod nas-static-5b5cdb85f6-n****
  5. 別のCLIを開き、次のコマンドを実行して、ポッドの削除と再作成の方法を表示します。

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

    1. 次のコマンドを実行して、再作成されたポッドの名前を照会します。

      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 ****/dataパス内のファイルを照会します。

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

      期待される出力:

      nas

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

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

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

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

      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つのポッドのパス。

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

     kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
  3. 次のコマンドを実行して、/データ2つのポッドのパス。

    1. 次のコマンドを実行して、ポッドnas-static-5b5cdb85f6-n ****/dataパス内のファイルを照会します。

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

      期待される出力:

      nas
    2. 次のコマンドを実行して、ポッドnas-static-c5bb4746c-4 ****/dataパス内のファイルを照会します。

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

      期待される出力:

      nas

      一方のポッドの /dataパスにファイルを作成すると、もう一方のポッドの /dataパスにもファイルを見つけることができます。 これは、NASファイルシステムのデータが2つのポッドで共有されていることを示します。