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

Container Service for Kubernetes:NASファイルシステムをサンドボックスコンテナにマウントする

最終更新日:Dec 13, 2024

Apsara File Storage NAS (NAS) ファイルシステムをサンドボックスコンテナーにマウントして、I/Oパフォーマンスを向上させることができます。 このトピックでは、NASファイルシステムをサンドボックスコンテナーにマウントする方法と例について説明します。

前提条件

背景情報

virtio-fsは共有ファイルシステムです。 Container Service for Kubernetes (ACK) では、virtio-fsを使用して、VMのゲストオペレーティングシステムにボリューム、Secrets、およびConfiMapsを追加できます。これにより、NASファイルシステムがクラスターに直接マウントされます。 NASファイルシステムをホストにマウントします。 コンテナ内のアプリケーションは、virtio-fsを介してのみNASファイルシステムにデータを書き込み、NASファイルシステムからデータを読み取ることができます。 これは、性能低下を引き起こし得る。

サンドボックスコンテナーを使用すると、NASファイルシステムを直接マウントできます。 この方法では、まずNASマウントターゲットをホストからマウント解除します。 NASファイルシステムはゲストオペレーティングシステムにマウントされます。 次に、システムはNASファイルシステムのバインドマウントを作成します。 このように、コンテナ内のアプリケーションは、パフォーマンスを低下させることなく、NASファイルシステムに直接データを書き込み、NASファイルシステムからデータを読み取ることができます。

image

制御ポリシー機能の動作

image

NASファイルシステムは、次のプロセスでサンドボックスコンテナーにマウントされます。

ステップ

説明

1

kubeletは、NASファイルシステムのマウントをCSIプラグインに要求します。

2

CSIプラグインは、NASファイルシステムをホストにマウントする。

3

kubeletはKangaroo-Runtimeにポッドの作成を要求します。

4

Kangaroo-ランタイムはアンマウント情報を解析し、その情報をゲストオペレーティングシステムに渡し、NASファイルシステムをホストからアンマウントします。

5

Kangaroo-ランタイムはエージェントにポッドの作成を要求します。

6

エージェントは、NASファイルシステムをゲストオペレーティングシステムにマウントします。

7

エージェントは、ゲストオペレーティングシステムにマウントされているNASファイルシステムのバインドマウントを作成します。

次の例では、NASファイルシステムをサンドボックスコンテナーにマウントする方法について説明します。 この例では、NASファイルシステムが作成され、YAMLファイルテンプレートを使用してリソースオブジェクトが作成されます。

  1. NASファイルシステムを作成します。 詳細については、「ファイルシステムの作成」トピックの「NASコンソールでの汎用NASファイルシステムの作成」をご参照ください。

    重要

    NASファイルシステムは、クラスターと同じ仮想プライベートクラウド (VPC) にデプロイする必要があります。

    NASファイルシステムのマウント対象を取得します。 次の図は、[マウントコマンド] 列のsystem-id.region.nas.aliyuncs.comがマウントターゲットであることを示しています。NAS

    説明

    file-system-id.region.nas.aliyuncs.comは、マウント対象のアドレスを示します。 NASファイルシステムのマウントターゲットのアドレスを取得するには、次の操作を実行します。NASコンソールにログインし、NASファイルシステムを見つけて名前をクリックします。 NASファイルシステムの詳細ページの左側のペインで、[ターゲットのマウント] をクリックします。 [マウントターゲット] タブで、[マウントコマンド] 列でマウントターゲットのアドレスを見つけます。

  2. 次のテンプレートを使用してリソースオブジェクトを作成します。

    YAMLコンテンツの表示

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nas-pvc-csi
      namespace: default
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: nas-pv-csi
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      labels:
        alicloud-pvname: nas-pv-csi
      name: nas-pv-csi
    spec:
      accessModes:
        - ReadWriteMany
      capacity:
        storage: 5Gi
      csi:
        driver: nasplugin.csi.alibabacloud.com
        volumeAttributes:
          options: noresvport,nolock
          path: /csi
          server: ${nas-server-address}
          vers: "3"
        volumeHandle: nas-pv-csi
      persistentVolumeReclaimPolicy: Retain
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deploy-nas-csi
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            app: busybox
          annotations:
            storage.alibabacloud.com/enable_nas_passthrough: "true"
        spec:
          runtimeClassName: runv
          containers:
            - name: busybox
              image: registry.cn-hangzhou.aliyuncs.com/acs/busybox:v1.29.2
              command: 
              - tail
              - -f
              - /dev/null
              volumeMounts:
                - name: nas-pvc
                  mountPath: "/data"
          restartPolicy: Always
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-pvc-csi
    EOF
    • テンプレートの ${nas-server-address} をNASファイルシステムのマウントターゲットのアドレスに置き換えます。

      server: ${nas-server-address}
    • デフォルトでは、NASファイルシステムはポッドにマウントできません。 NASファイルシステムをポッドにマウントできるようにするには、テンプレートにアノテーションを追加する必要があります。

      annotations:
              storage.alibabacloud.com/enable_nas_passthrough: "true"
  3. 次のコマンドを実行して、ポッドのIDを照会し、ポッドにマウントされているファイルシステムのタイプを照会します。

    kubectl get pods

    kubectl exec -it ${podid} sh

    mount | grep /data | grep nfs

    結果が返されると、NASファイルシステムがポッドにマウントされます。