File Storage NAS (NAS) は、高可用性とパフォーマンスを提供しながら、共有アクセスと弾性スケーリングをサポートする分散ファイルシステムです。 NAS は、ビッグデータ分析、データ共有、Web アプリケーション、ログストレージなどのシナリオに適しています。 Container Storage Interface (CSI) プラグインを使用すると、既存の NAS ファイルシステムを使用して永続ボリューム (PV) と永続ボリューム要求 (PVC) を作成し、永続的および共有データストレージのためにワークロードにマウントできます。
前提条件
CSI プラグインがクラスターにインストールされています。 アップグレード方法の詳細については、「csi-plugin と csi-provisioner を更新する」をご参照ください。
説明クラスターで FlexVolume が使用されている場合は、FlexVolume は非推奨であるため、FlexVolume を CSI にアップグレードします。 詳細については、「FlexVolume から CSI へのアップグレード」をご参照ください。 を選択し、[ストレージ] タブをクリックして、ストレージコンポーネントタイプを確認します。
既存の NAS ファイルシステムが以下の要件を満たしていることを確認してください。 そうでない場合は、ファイルシステムを作成するか、動的にプロビジョニングされた NAS ボリュームをマウントする。
プロトコルタイプは NFS です。
ACK は、SMB プロトコルを使用する NAS ファイルシステムのマウントをサポートしていません。
マウントポイントとクラスターノードは同じ VPC に属し、マウントポイントの [ステータス] は [利用可能] です。 マウントポイントの作成方法の詳細については、「マウントポイントを管理する」をご参照ください。
NAS ファイルシステムを複数のポッドにマウントする場合、ポッドは同じ VPC にデプロイする必要があります。 NAS ファイルシステムを異なる VPC のポッドにマウントすることはできません。 同じ VPC 内では、NAS はゾーンをまたいでマウントできます。
説明NAS ボリューム内のデータを暗号化する場合は、NAS ファイルシステムの作成時に暗号化設定を構成します。
使用上の注意
NAS は共有ストレージ サービスです。NAS ボリュームは複数のポッドにマウントできます。複数のポッドが同時にデータを書き込む場合、アプリケーションはデータ整合性を独自に確保する必要があります。
NAS への同時書き込みの制限の詳細については、「複数のプロセスまたはクライアントがログファイルに同時にデータを書き込むときに発生する可能性のある例外を回避するにはどうすればよいですか。」および「NFS ファイルシステムへのデータ書き込みのレイテンシを解決するにはどうすればよいですか。」をご参照ください。
securityContext.fsgroupパラメーターがアプリケーション テンプレートで構成されている場合、kubelet はボリュームがマウントされた後にchmodまたはchown操作を実行するため、時間がかかります。securityContext.fsgroupパラメーターが構成されている場合のマウント プロセスの高速化方法の詳細については、「NAS ボリュームのマウント時間が延長される」をご参照ください。NAS ボリュームをマウントした後、マウントターゲットを削除しないでください。削除すると、システムが応答しなくなる可能性があります。
静的にプロビジョニングされた NAS ボリュームをマウントする(kubectl)
ステップ 1:PV を作成する
次の YAML コンテンツを変更し、pv-nas.yaml として保存します。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas # PV の名前を入力します。 volumeAttributes: server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com" # マウントターゲットアドレス。マウントターゲットが属する VPC は、クラスタが属する VPC と同じである必要があります。 path: "/csi" # NAS ファイルシステムのサブディレクトリを指定します。 mountOptions: - nolock,tcp,noresvport - vers=3パラメーター
説明
namePV の名前。
labelsPV に追加するラベル。
storagePV の容量。
accessModesPV のアクセスモード。デフォルト値は
ReadWriteManyです。ReadWriteOnceまたはReadOnlyManyに設定することもできます。driverボリュームのプロビジョニングに使用するボリュームドライバのタイプ。この例では、パラメーターは
nasplugin.csi.alibabacloud.comに設定されています。これは、Alibaba Cloud が提供する CSI プラグインが使用されていることを示します。volumeHandlePV の一意の識別子。PV の名前を入力します。複数の PV を使用する場合は、各 PV の識別子は一意である必要があります。
serverマウントターゲットアドレス。マウントターゲットが属する VPC は、クラスタが属する VPC と同じである必要があります。
マウントターゲットアドレスの表示方法については、「マウントターゲットの管理」をご参照ください。
pathマウントする NAS ファイルシステムのサブディレクトリ。
このパラメーターを設定しない場合、デフォルトでルートディレクトリがマウントされます。
指定されたサブディレクトリが NAS ファイルシステムに存在しない場合、システムは自動的にサブディレクトリを作成し、マウントします。
説明汎用型 NAS ファイルシステムのルートディレクトリは
/で、超高速型 NAS ファイルシステムのルートディレクトリは/shareです。超高速型 NAS ファイルシステムのサブディレクトリをマウントする場合、pathは/shareで始まる必要があります(例:/share/data)。mountOptionsNAS ファイルシステムのマウントオプション(NFS プロトコルバージョンを含む)。NFS v3 を使用することをお勧めします。超高速型 NAS ファイルシステムは NFS v3 のみをサポートしています。NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。
PV を作成します。
kubectl create -f pv-nas.yamlPV を表示します。
kubectl get pv予想される出力:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pv-nas 5Gi RWX Retain Available <unset> 25s
ステップ 2:PVC を作成する
次の YAML コンテンツを pvc-nas.yaml という名前のファイルに保存します。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nasパラメーター
説明
namePVC の名前。
accessModesアクセスモード。デフォルト値は
ReadWriteManyです。ReadWriteOnceまたはReadOnlyManyに設定することもできます。storagePV の容量。
matchLabelsPV を選択して PVC にバインドするために使用するラベル。
PVC を作成します。
kubectl create -f pvc-nas.yamlPVC を表示します。
kubectl get pvc次の出力は、PVC が PV にバインドされていることを示しています。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-nas Bound pv-nas 5Gi RWX <unset> 5s
ステップ 3:アプリケーションを作成し、NAS ボリュームをマウントする
次の YAML コンテンツを nas.yaml として保存します。
apiVersion: apps/v1 kind: Deployment metadata: name: nas-test labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: "/data" volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nasパラメーター
説明
mountPathNAS ボリュームがマウントされるコンテナのパス。
claimNameアプリケーションにマウントされる PVC の名前。
デプロイメントを作成し、NAS ボリュームをマウントします。
kubectl create -f nas.yamlデプロイメントによって作成されたポッドのステータスを確認します。
kubectl get pod -l app=nginx予想される出力:
NAME READY STATUS RESTARTS AGE nas-test-****-***a 1/1 Running 0 32s nas-test-****-***b 1/1 Running 0 32s
静的にプロビジョニングされた NAS ボリュームをマウントする (kubectl)
ステップ 1:永続ボリューム (PV) を作成する
ACK コンソール にログオンします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、目的のクラスターを見つけて名前をクリックします。左側のペインで、 を選択します。
[永続ボリューム] ページで、[作成] をクリックします。
表示されたダイアログボックスで、パラメーターを構成し、[作成] をクリックします。
パラメーター
説明
例
PV タイプ
[NAS] を選択します。
NAS
ボリューム名
ボリュームの名前。名前はクラスター内で一意である必要があります。
pv-nas
容量
PV の容量。
5Gi
アクセスモード
[ReadWriteMany] または [ReadWriteOnce] を選択できます。
ReadWriteMany
CNFS を有効にする
Container Network File System (CNFS) を有効にするかどうかを指定します。CNFS を使用して NAS を管理すると、NAS のパフォーマンスとサービス品質 (QoS) 制御を向上させることができます。
このトピックでは、CNFS を有効にせずに、既存の NAS ファイルシステムを直接使用してボリュームを作成する方法について説明します。CNFS で既存の NAS ファイルシステムを構成する方法の詳細については、「CNFS を使用して NAS ファイルシステムを管理する (推奨)」をご参照ください。
無効
マウントターゲット ドメイン名
CNFS が無効になっている場合は、このパラメーターを構成する必要があります。
[マウントターゲットを選択] または [カスタム] を選択して、マウントする NAS ファイルシステムを構成できます。マウントターゲットアドレスを表示する方法の詳細については、「マウントターゲットを管理する」をご参照ください。
0c47****-mpk25.cn-shenzhen.nas.aliyuncs.co
詳細オプション (オプション)
マウントパス
マウントする NAS ファイルシステムのサブディレクトリ。
このパラメーターを設定しない場合、デフォルトでルートディレクトリがマウントされます。
指定されたサブディレクトリが NAS ファイルシステムに存在しない場合、システムは自動的にサブディレクトリを作成してマウントします。
説明汎用型 NAS ファイルシステムのルートディレクトリは
/で、超高速型 NAS ファイルシステムのルートディレクトリは/shareです。超高速型 NAS ファイルシステムのサブディレクトリをマウントする場合、pathは/shareで始まる必要があります (例:/share/data)。/data
再利用ポリシー
デフォルト値は [Retain] です。これは、PVC が削除されたときに、関連する PV と NAS ファイルシステムが保持され、手動でのみ削除できることを示します。
説明[削除] は
archiveOnDeleteと一緒に使用する必要があります。静的 PV はarchiveOnDeleteをサポートしていないため、ここで [削除] を選択した場合、PVC が削除されても PV と NAS ファイルシステムは実際には削除されません。archiveOnDeleteを構成する場合は、「動的にプロビジョニングされた NAS ボリュームを使用する」をご参照ください。Retain
マウントオプション
NFS プロトコルバージョンを含む、NAS ファイルシステムのマウントオプション。NFS v3 を使用することをお勧めします。超高速型 NAS ファイルシステムは NFS v3 のみをサポートしています。NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。
nolock,tcp,noresvport
vers=3
ラベル
PV にラベルを追加します。
pv-nas
PV を作成した後、[永続ボリューム] ページで表示できます。
ステップ 2: 永続ボリューム要求 (PVC) の作成
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[永続ボリュームクレーム] ページで、[作成] をクリックします。
表示されるダイアログボックスで、パラメーターを構成し、[作成] をクリックします。
パラメーター
説明
例
ストレージクレームタイプ
NAS を選択します。
NAS
名前
PVC の名前。名前は、クラスタ内で一意である必要があります。
pvc-nas
割り当てモード
既存のボリュームを選択します。
説明PV が作成されていない場合は、割り当てモード パラメーターを ボリュームの作成 に設定し、必要なパラメーターを構成して PV を作成できます。
既存のボリュームを選択
既存のストレージボリューム
[既存のボリュームを選択] をクリックし、使用する PV を見つけて、アクション列の [選択] をクリックします。
pv-nas
容量
PV の容量。要求された容量は、PV の合計容量を超えることはできません。
重要NAS ボリュームの実際の利用可能な容量は、この構成によって制限されません。容量は、NAS ファイルシステムの仕様によって決まります。詳細については、「汎用 NAS」および「Extreme NAS」をご参照ください。具体的な利用可能な容量を確認してください。
5
アクセスモード
デフォルト値は、ReadWriteMany です。値を ReadWriteOnce または ReadOnlyMany に設定することもできます。
ReadWriteMany
ステップ 3: アプリケーションの作成と NAS ボリュームのマウント
クラスタ詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[ステートレス] ページで、[イメージから作成] をクリックします。
アプリケーションのパラメーターを構成します。パラメーターを構成した後、[作成] をクリックします。
次の表は、主要なパラメーターについて説明しています。その他のパラメーターにはデフォルト設定を使用します。詳細については、「デプロイメントを使用してステートレスアプリケーションを作成する」をご参照ください。
セクション
パラメーター
説明
例
基本情報
名前
デプロイメントのカスタム名を入力します。名前は、コンソールに表示される形式の要件を満たしている必要があります。
nas-test
レプリカ
デプロイメントのレプリカ数。
2
コンテナー
イメージ名
アプリケーションのデプロイに使用するイメージのアドレス。
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
必要なリソース
必要な vCPU とメモリリソース。
0.25 Core、512 MiB
ボリューム
[PVC を追加] をクリックし、パラメーターを構成します。
マウントソース: 作成した PVC を選択します。
コンテナーパス: NAS ファイルシステムをマウントするコンテナーパスを指定します。
マウントソース: pvc-nas
コンテナーパス: /data
アプリケーションのデプロイステータスを表示します。
[デプロイメント] ページで、アプリケーションの名前をクリックします。
[ポッド] タブで、ポッドが [実行中] 状態であるかどうかを確認します。
NAS の共有ストレージと永続ストレージの機能を確認する
前の例で作成したデプロイメントは、2 つのポッドをプロビジョニングし、NAS ファイルシステムをポッドにマウントします。 以下の方法で確認できます。
1 つのポッドにファイルを作成し、もう 1 つのポッドからファイルを表示して、共有ストレージを確認します。
デプロイメントを再作成します。 その後、ファイルシステムに保存されているデータが、新しく作成されたポッドに存在するかどうかを確認して、永続ストレージを確認します。
ポッド情報を表示します。
kubectl get pod | grep nas-test出力例:
nas-test-*****a 1/1 Running 0 40s nas-test-*****b 1/1 Running 0 40s共有ストレージを確認します。
ポッドにファイルを作成します。
この例では、
nas-test-*****aポッドを使用します。kubectl exec nas-test-*****a -- touch /data/test.txt別のポッドからファイルを表示します。
この例では、
nas-test-*****bポッドを使用します。kubectl exec nas-test-*****b -- ls /data期待される出力は、新しく作成されたファイル
test.txtが共有されていることを示しています。test.txt
永続ストレージを確認します。
デプロイメントを再作成します。
kubectl rollout restart deploy nas-testポッドが再作成されるまで待ちます。
kubectl get pod | grep nas-test出力例:
nas-test-*****c 1/1 Running 0 67s nas-test-*****d 1/1 Running 0 49s再作成されたポッドにログインし、ファイルがファイルシステムにまだ存在するかどうかを確認します。
この例では、
nas-test-*****cポッドを使用します。kubectl exec nas-test-*****c -- ls /data次の出力は、ファイルがまだ NAS ファイルシステムに存在し、再作成されたポッドのマウントディレクトリからアクセスできることを示しています。
test.txt
よくある質問
NAS ボリュームのマウントと使用時に問題が発生した場合は、トラブルシューティングのために次のドキュメントを参照してください。
参考文献
CNFS を使用すると、NAS ファイルシステムを個別に管理し、NAS ファイルシステムのパフォーマンスとサービス品質 ( QoS ) コントロールを向上させることができます。詳細については、「CNFS を使用して NAS ファイルシステムを管理する (推奨)」をご参照ください。