Apsara File Storage NAS (NAS) ファイルシステムをサンドボックスコンテナーにマウントして、I/Oパフォーマンスを向上させることができます。 このトピックでは、NASファイルシステムをサンドボックスコンテナーにマウントする方法と例について説明します。
前提条件
サンドボックスコンテナーを実行するノードプールが作成されます。 詳細については、「サンドボックスコンテナーを実行するノードプールの作成」をご参照ください。
クラスターのkubeconfigファイルが取得され、kubectlクライアントがクラスターに接続されます。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
背景情報
virtio-fsは共有ファイルシステムです。 Container Service for Kubernetes (ACK) では、virtio-fsを使用して、VMのゲストオペレーティングシステムにボリューム、Secrets、およびConfiMapsを追加できます。これにより、NASファイルシステムがクラスターに直接マウントされます。 NASファイルシステムをホストにマウントします。 コンテナ内のアプリケーションは、virtio-fsを介してのみNASファイルシステムにデータを書き込み、NASファイルシステムからデータを読み取ることができます。 これは、性能低下を引き起こし得る。
サンドボックスコンテナーを使用すると、NASファイルシステムを直接マウントできます。 この方法では、まずNASマウントターゲットをホストからマウント解除します。 NASファイルシステムはゲストオペレーティングシステムにマウントされます。 次に、システムはNASファイルシステムのバインドマウントを作成します。 このように、コンテナ内のアプリケーションは、パフォーマンスを低下させることなく、NASファイルシステムに直接データを書き込み、NASファイルシステムからデータを読み取ることができます。
制御ポリシー機能の動作
NASファイルシステムは、次のプロセスでサンドボックスコンテナーにマウントされます。
ステップ | 説明 |
1 | kubeletは、NASファイルシステムのマウントをCSIプラグインに要求します。 |
2 | CSIプラグインは、NASファイルシステムをホストにマウントする。 |
3 | kubeletはKangaroo-Runtimeにポッドの作成を要求します。 |
4 | Kangaroo-ランタイムはアンマウント情報を解析し、その情報をゲストオペレーティングシステムに渡し、NASファイルシステムをホストからアンマウントします。 |
5 | Kangaroo-ランタイムはエージェントにポッドの作成を要求します。 |
6 | エージェントは、NASファイルシステムをゲストオペレーティングシステムにマウントします。 |
7 | エージェントは、ゲストオペレーティングシステムにマウントされているNASファイルシステムのバインドマウントを作成します。 |
例
次の例では、NASファイルシステムをサンドボックスコンテナーにマウントする方法について説明します。 この例では、NASファイルシステムが作成され、YAMLファイルテンプレートを使用してリソースオブジェクトが作成されます。
NASファイルシステムを作成します。 詳細については、「ファイルシステムの作成」トピックの「NASコンソールでの汎用NASファイルシステムの作成」をご参照ください。
重要NASファイルシステムは、クラスターと同じ仮想プライベートクラウド (VPC) にデプロイする必要があります。
NASファイルシステムのマウント対象を取得します。 次の図は、[マウントコマンド] 列のsystem-id.region.nas.aliyuncs.comがマウントターゲットであることを示しています。
説明file-system-id.region.nas.aliyuncs.comは、マウント対象のアドレスを示します。 NASファイルシステムのマウントターゲットのアドレスを取得するには、次の操作を実行します。NASコンソールにログインし、NASファイルシステムを見つけて名前をクリックします。 NASファイルシステムの詳細ページの左側のペインで、[ターゲットのマウント] をクリックします。 [マウントターゲット] タブで、[マウントコマンド] 列でマウントターゲットのアドレスを見つけます。
次のテンプレートを使用してリソースオブジェクトを作成します。
テンプレートの
${nas-server-address}
をNASファイルシステムのマウントターゲットのアドレスに置き換えます。server: ${nas-server-address}
デフォルトでは、NASファイルシステムはポッドにマウントできません。 NASファイルシステムをポッドにマウントできるようにするには、テンプレートにアノテーションを追加する必要があります。
annotations: storage.alibabacloud.com/enable_nas_passthrough: "true"
次のコマンドを実行して、ポッドのIDを照会し、ポッドにマウントされているファイルシステムのタイプを照会します。
kubectl get pods
kubectl exec -it ${podid} sh
mount | grep /data | grep nfs
結果が返されると、NASファイルシステムがポッドにマウントされます。