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

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

最終更新日:Dec 27, 2024

アプリケーションで高IOPSとデータ共有が必要な場合は、File Storage NASファイルシステムを永続ボリューム(PV)としてアプリケーションにマウントできます。このトピックでは、静的にプロビジョニングされたNASボリュームをアプリケーションにマウントし、NASボリュームをデータの共有と永続化に使用できるかどうかを確認する方法について説明します。

背景情報

NASは、共有アクセス、スケーラビリティ、高信頼性、高パフォーマンスを特徴とする分散ファイルシステムサービスです。NASは、データ共有と高IOPSが必要なシナリオに適しています。詳細については、ストレージの概要を参照してください。

説明

Alibaba Cloud Container Compute Service(ACS)は、静的および動的にプロビジョニングされたNASボリュームをサポートしています。このトピックでは、静的にプロビジョニングされたNASボリュームをマウントする方法について説明します。動的にプロビジョニングされたNASボリュームをマウントする方法の詳細については、動的にプロビジョニングされたNASボリュームのマウントを参照してください。

前提条件

Alibaba Cloud Container Compute Service(ACS)クラスターに最新バージョンのmanaged-csiprovisionerがインストールされています。

説明

ACSコンソールのACSクラスター管理ページに移動します。クラスター管理ページの左側のナビゲーションペインで、操作 > アドオンを選択します。ストレージタブで、managed-csiprovisionerがインストールされているかどうかを確認できます。

制限事項

  • Server Message Block(SMB)プロトコルを使用するNASファイルシステムはマウントできません。

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

  • NASファイルシステムのマウントには、NFSv3プロトコルのみを使用できます。

使用上の注意

  • NASは共有ストレージサービスです。NASファイルシステムは複数のポッドにマウントできます。NASファイルシステムが複数のポッドにマウントされている場合、ファイルシステム内のデータはポッド間で共有されます。この場合、NASファイルシステム内のデータが複数のポッドによって変更された場合、アプリケーションはポッド間でデータを同期できる必要があります。

  • NASファイルシステムをアプリケーションにマウントする場合は、アプリケーションのYAMLファイルにsecurityContext.fsgroupパラメーターを追加しないでください。追加すると、NASファイルシステムのマウントに失敗する可能性があります。

    説明

    NASファイルシステムの/ディレクトリへのアクセス権限を付与することはできません。ディレクトリが属するユーザーアカウントとユーザーグループは変更できません。

  • NASファイルシステムをマウントした後、NASファイルシステムのマウントターゲットを削除しないでください。削除すると、オペレーティングシステムのハングの問題が発生する可能性があります。

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

NASファイルシステムのマウントターゲットと、ファイルシステムをマウントするポッドは、同じVPCに属している必要があります。そうでない場合、ポッドにファイルシステムをマウントすることはできません。ポッドで使用されるVPCとvSwitchにNASファイルシステムとファイルシステムのマウントターゲットがすでに存在する場合は、この手順をスキップできます。

  1. ポッドで使用されているVPCとvSwitchのIDを取得します。

    説明

    このセクションでは、ACSコンソールで実行する必要がある操作について説明します。kubectl get cm -n kube-system acs-profile -o yamlコマンドを実行して、acs-profile ConfigMapのYAMLファイルをクエリすることもできます。YAMLファイルでは、vpcIdパラメーターからVPC IDを、vSwitchIdsパラメーターからvSwitch IDを取得できます。

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

    2. クラスターで、クラスターのIDをクリックして、クラスター管理ページに移動します。

    3. 左側のナビゲーションペインで、構成> > Configmapを選択します。

    4. ConfigMapページの上部にある[名前空間]ドロップダウンリストからkube-systemを選択します。表示されているacs-profile ConfigMapを見つけて、[アクション]列のYAMLの編集をクリックします。

    5. [YAMLで表示]パネルで、vpcIdパラメーターからVPC IDを、vSwitchIdsパラメーターからvSwitch IDを取得します。

  2. NASファイルシステムとマウントターゲットを作成します。

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

    2. ファイルシステムを作成します。

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

        重要
        • さまざまなタイプのNASファイルシステムの仕様、パフォーマンス、請求ルール、サポートされているリージョンとゾーンの詳細については、汎用NASファイルシステムエクストリームNASファイルシステムを参照してください。

        • 汎用NASファイルシステムとエクストリームNASファイルシステムでは、マウント接続、ファイルシステムの数、ファイル共有プロトコルの制限が異なります。詳細については、制限を参照してください。

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

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

        パラメーター

        説明

        リージョン

        ACSクラスターが存在するリージョンを選択します。

        ゾーン

        手順1で取得したゾーンIDに基づいてゾーンを選択します。これにより、ファイルシステムがマウントするポッドと同じゾーンに作成されます。

        ProtocolType

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

        VPCVswitchId

        ファイルシステムをマウントするポッドで使用されるVPCとvSwitchを選択します。手順1で取得したVPC IDとvSwitch IDに基づいて、VPCコンソールでVPCとvSwitchを検索できます。

    3. ファイルシステムのマウントターゲットのドメイン名を取得します。

      説明

      システムは、汎用NASファイルシステムのマウントターゲットを自動的に作成します。ただし、エクストリームNASファイルシステムのマウントターゲットは手動で作成する必要があります。詳細については、マウントターゲットの管理を参照してください。

      1. ファイルシステムリストページで、作成したファイルシステムのIDをクリックします。

      2. ファイルシステムの詳細ページの左側のナビゲーションペインで、マウントターゲットをクリックします。

      3. マウントターゲットセクションで、使用可能状態のマウントターゲットが存在するかどうかを確認します。

        NAS挂载点.png

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

kubectl

手順1:PVCの作成

  1. ACSクラスターに接続します。詳細については、クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続するCloud Shellでkubectlを使用してACSクラスターを管理するを参照してください。

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

    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

    次の表に、上記のコードブロックのパラメーターを示します。

    パラメーター

    説明

    csi.alibabacloud.com/mountpoint

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

    • 値をマウントターゲットのドメイン名(****-****.<region>.nas.aliyuncs.comなど)に設定すると、NASファイルシステムのルートディレクトリ(/)がマウントされます。

    • マウントターゲットのドメイン名とサブディレクトリを含む値(****-****.<region>.nas.aliyuncs.com:/dirなど)を指定すると、NASファイルシステムの/dirディレクトリがマウントされます。この場合、/dirディレクトリがNASファイルシステムに存在しない場合、システムはファイルシステムにディレクトリを自動的に作成します。

    csi.alibabacloud.com/mount-options

    NASファイルシステムのマウントに必要なパラメーター。値をnolock,tcp,noresvportに設定することをお勧めします。

    accessModes

    PVCのアクセスモード。

    storage

    ポッドに割り当てられるストレージ容量。これは、NASボリュームの容量でもあります。

  3. PVCを作成します。

    kubectl create -f nas-pvc.yaml
  4. PVを確認します。

    kubectl get pv

    次の出力は、作成したPVCの構成で指定されたNASファイルシステムに関する情報に基づいて、PVが自動的に作成されることを示しています。情報には、ファイルシステムのマウントターゲットが含まれます。

    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
  5. PVCを確認します。

    kubectl get pvc

    次の出力は、PVが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

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

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

    次のコードブロックは、2つのポッドをプロビジョニングするDeploymentの構成を指定します。ポッドは、nas-pvc PVCを使用してストレージリソースを申請します。これは、ポッドの/dataパスにマウントされます。

    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. Deploymentを作成し、NASファイルシステムをDeploymentにマウントします。

    kubectl create -f nas-test.yaml
  3. Deploymentによってプロビジョニングされたポッドがデプロイされているかどうかを確認します。

    kubectl get pod | grep nas-test

    次の出力は、2つのポッドが作成されたことを示しています。

    nas-test-****-***a   1/1     Running   0          40s
    nas-test-****-***b   1/1     Running   0          40s
  4. マウントパス内のファイルを表示します。

    次のコマンドを実行して、マウントパス内のファイルを表示します。NASファイルシステムのマウントディレクトリ内のデータが返されることが予期されます。デフォルトでは、データは返されません。

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

コンソール

手順1:PVCの作成

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

  2. クラスターで、クラスターのIDをクリックして、クラスター管理ページに移動します。

  3. クラスター管理ページの左側のナビゲーションペインで、ボリューム > 永続ボリュームクレームを選択します。

  4. 永続ボリュームクレームページで、作成をクリックします。

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

    パラメーター

    説明

    PVCタイプ

    NASを選択します。

    NAS

    名前

    PVCのカスタム名を入力します。名前は、コンソールに表示される形式の要件を満たしている必要があります。

    nas-pvc

    割り当てモード

    マウントターゲットドメイン名を使用を選択します。

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

    ボリュームプラグイン

    デフォルトでは、CSIが選択されています。

    CSI

    容量

    ポッドに割り当てられるストレージ容量。これは、NASボリュームの容量でもあります。

    20Gi

    アクセスモード

    ReadWriteManyまたはReadWriteOnceを選択できます。

    ReadWriteMany

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

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

    • 値をマウントターゲットのドメイン名(****-****.<region>.nas.aliyuncs.comなど)に設定すると、NASファイルシステムのルートディレクトリ(/)がマウントされます。

    • マウントターゲットのドメイン名とサブディレクトリを含む値(****-****.<region>.nas.aliyuncs.com:/dirなど)を指定すると、NASファイルシステムの/dirディレクトリがマウントされます。この場合、/dirディレクトリがNASファイルシステムに存在しない場合、システムはファイルシステムにディレクトリを自動的に作成します。

    350514****-mw***.cn-shanghai.nas.aliyuncs.com

    PVCを作成した後、永続ボリュームクレームページでPVCを表示できます。PVはPVCにマウントされます。PVに関する情報は、永続ボリュームページで表示できます。

    nas-pvc.png

    nas-pv.png

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

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

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

  3. パラメーターを構成し、作成をクリックします。

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

    ウィザードページ

    パラメーター

    説明

    基本情報

    名前

    Deploymentのカスタム名を入力します。名前は、コンソールに表示される形式の要件を満たしている必要があります。

    nas-test

    レプリカ

    Deploymentによってプロビジョニングされるポッドレプリカの数。

    2

    コンテナー

    イメージ名

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

    registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest

    必要なリソース

    アプリケーションに必要なvCoreの数とメモリの量を指定します。

    0.25 vCoreと0.5 GiBのメモリ

    ボリューム

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

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

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

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

    • コンテナーパス:/data。

  4. アプリケーションがデプロイされているかどうかを確認します。

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

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

NASファイルシステムに基づいてデータの共有と永続化が有効になっているかどうかを確認する

前の例で作成したDeploymentは2つのポッドをプロビジョニングし、NASファイルシステムがポッドにマウントされます。次の手順を実行して、データの共有と永続化が有効になっているかどうかをテストします。

  • 1つのポッドにファイルを作成し、別のポッドからファイルにアクセスします。アクセスが成功した場合、データ共有は有効になっています。

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

  1. ポッド情報を表示します。

    kubectl get pod | grep nas-test

    予期される出力:

    nas-test-****-***a   1/1     Running   0          40s
    nas-test-****-***b   1/1     Running   0          40s
  2. データ共有が有効になっているかどうかを確認します。

    1. ポッドにファイルを作成します。

      この例では、nas-test-****-***aポッドが使用されます。

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

      この例では、nas-test-****-***bポッドが使用されます。

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

      次の出力は、nas-test-****-***aポッドで作成したtest.txtファイルにnas-test-****-***bポッドからアクセスできることを示しています。

      test.txt
  3. データの永続化が有効になっているかどうかを確認します。

    1. Deploymentを再作成します。

      kubectl rollout restart deploy nas-test
    2. ポッドが再作成された後、再作成されたポッドを確認します。

      kubectl get pod | grep nas-test

      予期される出力:

      nas-test-****-***c   1/1     Running   0          67s
      nas-test-****-***d   1/1     Running   0          49s
    3. 再作成されたポッドにログオンし、ファイルがファイルシステムにまだ存在するかどうかを確認します。

      この例では、nas-test-c***ポッドが使用されます。

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

      次の出力は、ファイルがまだNASボリュームに存在し、再作成されたポッドのマウントディレクトリからアクセスできることを示しています。

      test.txt