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

File Storage NAS:ボリュームを使用してNASファイルシステムをマウントする

最終更新日:Oct 08, 2024

このトピックでは、組み込みのKubernetesボリュームを使用して、KubernetesクラスターにApsara File Storage NAS (NAS) ファイルシステムをマウントする方法について説明します。

前提条件

  • ネットワークファイルシステム (NFS) ファイルシステムが作成されます。 詳細については、「ファイルシステムの作成」をご参照ください。

    NASファイルシステムのデータを暗号化するには、NASファイルシステムの作成時に暗号化タイプを設定する必要があります。

  • マウントターゲットが作成されます。 詳細については、「マウントターゲットの管理」をご参照ください。

  • 自己管理型Kubernetesクラスターが作成され、クラスターバージョンが1.16以降になります。

  • ポート111とポート2049は、ポッドスケジューリングノードのセキュリティグループルールで指定されています。 詳細については、「セキュリティグループルールの追加」をご参照ください。

  • 自己管理型Kubernetesクラスターがデータセンターにデプロイされている場合、データセンターはAlibaba Cloudに接続されている必要があります。 Express connect、Smart Access Gateway (SAG) 、またはVPN Gatewayを使用して、データセンターをAlibaba Cloudに接続できます。 詳細については、以下のトピックをご参照ください。

制限事項

マウントシナリオの制限、ファイルシステムの数、およびファイル共有プロトコルは、NASファイルシステムのストレージクラスによって異なります。 詳細については、「制限事項」をご参照ください。

重要

NASファイルシステムをアンマウントする前に、ファイルシステムのマウント対象を削除しないでください。 そうしないと、オペレーティングシステムのハングが発生する可能性があります。

手順

  1. 自己管理型Kubernetesクラスターにログインします。

  2. Kubernetesクラスターのノードを設定します。

    説明

    Kubernetesクラスターのすべてのノードを設定する必要があります。 Kubernetesクラスターにノードを追加する前に、次の手順を実行する必要があります。

    1. NFS クライアントをインストールします。 詳細については、「手順1: NFSクライアントのインストール」をご参照ください。

    2. 次のコマンドを実行して、/etc/nfsmount.confファイルを設定します。

      cat <<EOF >> /etc/nfsmount.conf
      [ Server "file-system-id.region.nas.aliyuncs.com" ]
      vers=3
      Proto=tcp
      Lock=False
      resvport=False
      rsize=1048576
      wsize=1048576
      hard=True
      timeo=600
      retrans=2
      EOF

      上記のコマンドでは、file-system-id.region.nas.aliyuncs.comはNASファイルシステムのマウントターゲットのドメイン名です。 ドメイン名を実際の値に置き換えます。 マウントターゲットのドメイン名を取得するには、次の手順を実行します。NASコンソールにログインします。 [ファイルシステムリスト] ページで、ファイルシステムのIDをクリックします。 詳細ページで、マウント使用 タブをクリックします。 次に、[マウントターゲット] 列のアイコンの上に挂载点ポインターを移動します。

      説明
      • NFSv3プロトコルを使用してNASファイルシステムをマウントすることを推奨します。

      • 上記のコマンドのすべてのパラメーターが必要です。 file-system-id.region.nas.aliyuncs.comおよびversパラメーター以外の他のパラメーターを変更する必要はありません。 versパラメーターは、プロトコルバージョンを指定します。

    3. NASファイルシステムがKubernetesクラスターに接続されていることを確認します。

      1. 次のコマンドを実行して、NFSファイルシステムをマウントします。

        mount -t nfs file-system-id.region.nas.aliyuncs.com:/ /mnt 

        上記のコマンドでは、file-system-id.region.nas.aliyuncs.comはNASファイルシステムのマウントターゲットのドメイン名です。 ドメイン名を実際の値に置き換えます。

        マウントが失敗した場合は、マウントターゲットのドメイン名をpingし、ポート2049が接続されているかどうかを確認します。 マウントの失敗がネットワークの問題ではない場合は、スクリプトツールを使用して問題のトラブルシューティングを行います。 詳細については、「自動チェックスクリプトを実行して、LinuxでのNFSファイルシステムのマウント失敗のトラブルシューティング」をご参照ください。

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

        mount | grep nfs | grep mnt 

        パラメータがvers=3、hard、noresvport、およびnolockを含む場合、ネットワークは接続されています。参数信息

        ネットワークが接続されていることを確認したら、umount /mntコマンドを実行して、マウントされたNFSファイルシステムを削除します。

  3. ポッドを起動して、組み込みのKubernetesボリュームを使用してNFSファイルシステムをマウントします。

    この例では、nginxという名前のポッドを起動してNFSファイルシステムをマウントします。

    1. nginx.yamlファイルを設定します。

      cat  << EOF > ./nginx.yaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
              - containerPort: 80
              volumeMounts:
              - mountPath: /data
                name: test-nfs
            volumes:
            - name: test-nfs
              nfs:
                server: file-system-id.region.nas.aliyuncs.com    # The domain name of the mount target for the NAS file system. Replace the domain name with the actual value. Example: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com. 
                path: /    # The directory path of the NAS file system. The directory must be an existing directory or the root directory. The root directory of a General-purpose NAS file system is "/". The root directory of an Extreme NAS file system is "/share". 
      EOF
    2. nginxポッドでNFSファイルシステムを使用できるようにします。

      kubectl apply -f ./nginx.yaml
  4. ポッドが期待どおりに起動され、NFSファイルシステムがマウントされているかどうかを確認します。

    1. 次のコマンドを実行して、ポッドのステータスを確認します。

      • コマンド

        kubectl get pods | grep nginx 
      • Output

        ポッドが [実行中] 状態の場合、ポッドは期待どおりに起動されます。

        image

    2. 次のコマンドを実行して、マウント結果を表示します。

      • コマンド

        kubectl exec nginx-deployment-9b9b684f5-mgrkh  -- df -h /data
      • Output

        次の例のような出力が表示された場合、マウントは成功です。

        image