Container Service for Kubernetes (ACK) では、Container Network File System (CNFS) を共有 NAS ボリュームとしてマウントして使用できます。CNFS を使用すると、NAS ファイルシステムの同じディレクトリを複数のアプリケーションまたは Pod にマウントできます。これにより、Pod 間のデータ共有の問題が解決されます。このトピックでは、StatefulSet アプリケーションを例に、CNFS を使用して共有 NAS ボリュームを管理する方法について説明します。
前提条件
NAS が有効化されていること。
初めてNAS の製品ページにアクセスする場合は、画面の指示に従って NAS サービスを有効化してください。
Kubernetes 1.20 以降を実行する Container Service for Kubernetes (ACK) クラスターが作成されていること。ボリュームプラグインとして Container Storage Interface (CSI) プラグインが使用されていること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
csi-plugin と csi-provisioner のバージョンが v1.24.11-5221f79-aliyun 以降であること。csi-plugin と csi-provisioner の更新方法の詳細については、「CSI コンポーネントのインストールと更新」をご参照ください。
storage-operator のバージョンが v1.24.105-825188d-aliyun 以降であること。storage-operator の更新方法の詳細については、「コンポーネントの管理」をご参照ください。
kubectl クライアントがクラスターに接続されていること。詳細については、「kubeconfig を使用して kubectl でクラスターに接続する」をご参照ください。
説明CNFS の詳細については、「CNFS」をご参照ください。
CNFS を使用した NAS ファイルシステムの管理方法の詳細については、「CNFS を使用した NAS ファイルシステムの管理 (推奨)」をご参照ください。
ステップ 1:共有ボリューム用のワークロードの作成
cnfs-nas-static-pvという名前の永続ボリューム (PV) を作成します。PV は、既存の NAS ファイルシステムを表すcnfs-nas-filesystemという名前の CNFS オブジェクトを参照する必要があります。cnfs-nas-static-pvcという名前の永続ボリューム要求 (PVC) を作成し、PV にバインドします。cnfs-nas-static-stsという名前の StatefulSet を作成します。StatefulSet では、busybox イメージを使用して PVC をマウントし、1G.tmpfileという名前の 1 GB の一時ファイルをマウントポイントに書き込みます。
ステップ 2:マウントステータスの表示
次のコマンドを実行して、マウントステータスを表示します。
kubectl exec cnfs-nas-static-sts-0 -- mount |grep nfs期待される出力:
971134b0e8-****.cn-zhangjiakou.nas.aliyuncs.com:/ on /data type nfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)期待される出力にはマウントポイントが表示されます。これは、ボリュームが正常にマウントされたことを示します。
ステップ 3:永続データが正常に書き込まれたかの確認
次のコマンドを実行して、1 GB の一時ファイルを書き込みます。
kubectl exec cnfs-nas-static-sts-0 -ti -- sh -c 'dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;'以下のコマンドを実行して、1 GB の一時ファイルが作成されたことを確認します。
kubectl exec cnfs-nas-static-sts-0 -- ls -arlth /data出力結果:
total 1G
-rw-r--r-- 1 root root 1.0G Dec 15 12:11 1G.tmpfile期待される出力は、1 GB の一時ファイル 1G.tmpfile が /data ディレクトリに正常に書き込まれたことを示しています。
ステップ 4:書き込まれたデータが他の Pod で共有されているかの確認
次のコマンドを実行して、1 GB の一時ファイルが他の Pod (cnfs-nas-static-sts-1) と共有されているかを確認します。
kubectl exec cnfs-nas-static-sts-1 -- ls -arlth /data期待される出力:
total 1G
-rw-r--r-- 1 root root 1.0G Dec 15 12:11 1G.tmpfile期待される出力は、1 GB の一時ファイル 1G.tmpfile が Pod cnfs-nas-static-sts-0 と Pod cnfs-nas-static-sts-1 の間で共有されていることを示します。
異なる Pod から共有ストレージにデータを書き込む場合、CNFS はデータ整合性を保証しません。ファイルの破損を防ぐため、複数の Pod から同じファイルに書き込むことは避けてください。
関連ドキュメント
NAS ファイルシステム内の異なるディレクトリを異なるアプリケーションまたは Pod にマウントしてストレージを分離する方法については、「CNFS を使用した分離 NAS ボリュームの管理 (推奨)」をご参照ください。
NAS ボリュームの使用量が指定されたしきい値を超えたときに自動的にスケールアウトする方法については、「CNFS を使用した NAS ボリュームの自動スケールアウト」をご参照ください。