Container Service for Kubernetes (ACK) を使用すると、Container Network File System (CNFS) によって管理される共有Apsara File Storage NAS (NAS) ボリュームをマウントして使用できます。 NASファイルシステム内のディレクトリを複数のKubernetesアプリケーションまたはポッドにマウントする場合は、CNFSを使用して共有NASボリュームを作成できます。 これにより、ポッド間でデータを共有する問題が解決されます。 このトピックでは、例として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でCNFS-nas-filesystem
という名前のcnfsを参照します。 CNFSの名前は、作成したNASファイルシステムと同じです。cnfs-nas-static-PVC
という名前の永続ボリュームクレーム (pvc) を作成し、PVをPVCにバインドします。cnfs-nas-static-sts
という名前の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;'
次のコマンドを実行して、一時ファイルがディレクトリに書き込まれているかどうかを確認します。
kubectl exec cnfs-nas-static-sts-0 -- ls -arlth /data
期待される出力:
合計1G
-rw-r -- 1ルートルート1.0G Dec 15 12:11 1G.tmpfile
出力は、1G.tmpfile
ファイルが /dataディレクトリに書き込まれたことを示します。
ステップ4: データが他のポッドと共有されているかどうかを確認する
次のコマンドを実行して、cnfs-nas-static-sts-1という名前のポッドに一時ファイルが存在するかどうかを確認します。
kubectl exec cnfs-nas-static-sts-1 -- ls -arlth /data
期待される出力:
合計1G
-rw-r -- 1ルートルート1.0G Dec 15 12:11 1G.tmpfile
出力は、1G.tmpfile
ファイルがcnfs-nas-static-sts-0とcnfs-nas-static-sts-1という名前のポッドに存在することを示します。
共有するデータを異なるポッドに書き込む場合、CNFSはポッド間で共有されるデータの一貫性を保証できません。 共有ファイルが破損している場合は, 上書きしないでください。
関連ドキュメント
NASファイルシステム内のさまざまなディレクトリをさまざまなアプリケーションまたはポッドにマウントして、ボリュームを分離できます。 詳細については、「CNFSを使用した分離NASボリュームの管理 (推奨) 」をご参照ください。
CNFSによって管理されているNASボリュームの自動拡張ポリシーを定義して、ストレージ使用量が特定のしきい値を超えたときにNASボリュームを自動的に拡張できます。 詳細については、「CNFSを使用したNASボリュームの自動拡張」をご参照ください。