Apsara File Storage NAS (NAS) は、共有アクセス、柔軟なスケーリング、高信頼性、高性能を提供する分散ファイルシステムです。 このトピックでは、静的にプロビジョニングされたNASボリュームをマウントする方法、および静的にプロビジョニングされたNASボリュームを使用して永続ストレージと共有ストレージを有効にする方法について説明します。
前提条件
ACKクラスターが作成されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。
NASファイルシステムが作成されます。 詳細については、「ファイルシステムの作成」をご参照ください。
NASボリューム内のデータを暗号化する場合は、NASファイルシステムの作成時に暗号化設定を構成します。
NASファイルシステムのマウントターゲットが作成されます。 詳細については、「マウントターゲットの管理」をご参照ください。
マウントターゲットとNASファイルシステムをマウントするクラスターノードは、同じ仮想プライベートクラウド (VPC) に属している必要があります。
kubectlクライアントがクラスターに接続されています。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
シナリオ
アプリケーションには高いディスクI/Oが必要です。
Object storage service (OSS) よりも高い読み取りおよび書き込みスループットを提供するストレージサービスが必要です。
異なるホスト間でファイルを共有。 たとえば、NAS ファイルシステムをサーバーとして使用したい場合です。
使用上の注意
Extreme NASファイルシステムをマウントするには、NASボリュームの
path
パラメーターを /shareのサブディレクトリに設定します。 たとえば、Extreme NASファイルシステムをポッドにマウントするときに、/share/path1サブディレクトリを指定できます。NASは共有ストレージサービスです。 NASファイルシステムをマウントするために使用される永続ボリューム要求 (PVC) は、ポッド間で共有できます。 NASへの同時書き込みの制限の詳細については、複数のプロセスまたはクライアントが同時にログファイルにデータを書き込むときに発生する可能性のある例外を防ぐにはどうすればよいですか? とNFSファイルシステムにデータを書き込む際の待ち時間を解決するにはどうすればよいですか?
静的にプロビジョニングされたNASボリュームは拡張できません。
アプリケーションテンプレートでsecurityContext.fsgroupパラメーターが設定されている場合、ボリュームのマウント後にkubeletは
chmod
またはchown
操作を実行します。説明securityContext.fsgroupパラメーターが設定されている場合のマウントプロセスを高速化する方法の詳細については、「NASボリュームのマウントに時間がかかるのはなぜですか」をご参照ください。
静的にプロビジョニングされたNASボリュームのマウント
ACKコンソールまたはkubectlを使用して、静的にプロビジョニングされたNASボリュームをマウントできます。
ACKコンソールに静的にプロビジョニングされたNASボリュームをマウントする
ステップ1: PVの作成
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[ボリューム] ページの右上隅にある [作成] をクリックします。
[PVの作成] ダイアログボックスで、次のパラメーターを設定します。
パラメーター
説明
PVタイプ
クラウドディスク、NAS、またはOSSを選択できます。 この例では、NASが選択されています。
ボリューム名
作成するPVの名前。 ボリューム名はクラスター内で一意である必要があります。 この例では、pv-nasが使用されます。
容量
PV の容量。 NASファイルシステムは無制限の容量を提供します。 このパラメーターは、NASファイルシステムのストレージ使用量を制限しませんが、PVの容量を定義します。
アクセスモード
ReadWriteManyまたはReadWriteOnceを選択できます。 デフォルト値: ReadWriteMany
CNFSの有効化
Container Network File System (CNFS) を有効にするかどうかを指定します。 CNFSを有効にした後、次の操作を実行する必要があります。
対応するCNFSを選択するか、新しいCNFSを作成します。 CNFSの詳細については、「CNFSを使用したNASファイルシステムの管理 (推奨) 」をご参照ください。
CNFSアクセラレーションを有効にするかどうかを指定できます。 CNFSアクセラレーションの詳細については、「CNFSクライアントの分散キャッシュ機能の有効化」をご参照ください。
マウントターゲットドメイン名
[マウントターゲットの選択] を選択してマウントターゲットを選択するか、[カスタム] を選択してマウントターゲットを入力します。 マウントターゲットのドメイン名を表示する方法の詳細については、「マウントターゲットのドメイン名の表示」をご参照ください。
詳細オプションの表示
マウントパス: NASファイルシステムのマウントパス。 マウントパスは、ルートディレクトリを示すスラッシュ (/) で始まる必要があります。 このパラメーターを設定すると、PVは指定されたサブディレクトリにマウントされます。
指定されたサブディレクトリが存在しない場合、システムは自動的にNASファイルシステムにサブディレクトリを作成し、サブディレクトリをクラスターにマウントします。
このパラメーターを設定しない場合、NASファイルシステムのルートディレクトリがマウントされます。
Extreme NASファイルシステムをマウントする場合は、サブディレクトリが /shareディレクトリの下にある必要があります。
ポリシーの再利用: このパラメーターはデフォルトでDeleteに設定されています。 このパラメーターをRetainに設定することもできます。
削除: 再利用ポリシーが削除されている場合は、
archiveOnDelete
パラメーターを設定する必要があります。archiveOnDelete
をtrue
に設定した場合、PVCを削除した後、関連するPVおよびNASファイルシステムの名前が変更されます。 それらはPVCと一緒に削除されません。archiveOnDelete
をfalse
に設定した場合、PVCを削除すると、関連するPVおよびNASファイルシステムも削除されます。
保持: PVCを削除すると、関連するPVおよびNASファイルシステムは保持され、手動でのみ削除できます。
より高度なデータセキュリティが必要な場合は、ユーザーエラーによるデータ損失を防ぐため、保持モードを使用することを推奨します。
マウントオプション: NFSプロトコルのバージョンを含む、NASファイルシステムをマウントするためのオプションのパラメーター。
NFSv3の使用を推奨します。 Extreme NASファイルシステムはNFSv3のみをサポートします。 NFSプロトコルの詳細については、「NFS」をご参照ください。
ラベル
PVにラベルを追加します。
設定が完了したら、[作成] をクリックします。
手順 2: PVC の作成
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
永続的なボリュームクレームページの右上隅に、作成をクリックします。
では、PVCの作成ダイアログボックスで、次のパラメーターを設定します。
パラメーター
説明
PVCタイプ
クラウドディスク、NAS、またはOSSを選択できます。 この例では、NASが選択されています。
名前
PVCの名前。 ボリューム名はクラスター内で一意である必要があります。
割り当てモード
この例では、Existing Volumesが選択されています。
説明PVが作成されていない場合は、[割り当てモード] を [ボリュームの作成] に設定し、PVの作成に必要なパラメーターを設定します。 詳細については、「手順1: PVの作成」をご参照ください。
既存のストレージクラス
[PVの選択] をクリックします。 使用するPVを見つけて、[操作] 列の [選択] をクリックします。
容量
PV の容量。
説明PVCによって要求される容量は、PVCに結合されるPVの容量を超えることはできない。
アクセスモード
デフォルト値はReadWriteManyです。 値をReadWriteOnceまたはReadOnlyManyに設定することもできます。
作成をクリックします。
PVCの作成後、PVCリストでPVCを表示できます。 PVCは、対応するPVに結合される。
ステップ3: アプリケーションの作成
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
デプロイメントページで、イメージから作成をクリックします。
アプリケーションパラメーターを設定します。
ローカルストレージの追加: [PVタイプ] ドロップダウンリストから、HostPath、ConfigMap、Secret、またはEmptyDirを選択できます。 次に、マウントソースとコンテナパスのパラメーターを設定して、ボリュームをコンテナパスにマウントします。 詳しい情報は、『Volumes』をご参照ください。
PVCの追加: クラウドボリュームを追加できます。
アプリケーションの設定が完了したら、[作成] をクリックします。
この例では、ボリュームパラメータを設定する方法を示します。 その他のパラメーターの詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
ローカルボリュームとクラウドボリュームを追加できます。
この例では、NASボリュームがコンテナ内の /tmpパスにマウントされています。
kubectlを使用して静的にプロビジョニングされたNASボリュームをマウントする
静的にプロビジョニングされたNASボリューム
静的にプロビジョニングされたPVを作成します。
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 # Specify the name of the PV. volumeAttributes: server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com" path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3
パラメーター
説明
name
PV の名前。
labels
PVに追加するラベル。
ストレージ
NASボリュームの容量。
accessModes
PVのアクセスモード。 デフォルト値は
ReadWriteMany
です。 値をReadWriteOnce
またはReadOnlyMany
に設定することもできます。ドライバー
ボリュームのプロビジョニングに使用されるストレージドライバーのタイプ。 この例では、パラメーターは
nasplugin.csi.alibabacloud.com
に設定されています。 これは、Alibaba Cloudが提供するCSIプラグインが使用されていることを示しています。volumeHandle
PVの一意の識別子。 PVの名前を入力します。 複数のPVが使用される場合、各PVの識別子は一意でなければならない。
サーバー
NASファイルシステムのマウントターゲット。
重要値をマウントターゲットのドメイン名に置き換えます。 マウントターゲットのドメイン名を表示する方法の詳細については、「マウントターゲットのドメイン名の表示」をご参照ください。
パス
マウントするNASファイルシステムのサブディレクトリ。 Extreme NASファイルシステムをマウントする場合は、サブディレクトリが /shareディレクトリの下にある必要があります。
vers
NFSプロトコルのバージョン。 NFSv3の使用を推奨します。 Extreme NASファイルシステムはNFSv3のみをサポートします。 NFSプロトコルの詳細については、「NFS」をご参照ください。
次のコマンドを実行して、静的にプロビジョニングされたPVを作成します。
kubectl create -f pv-nas.yaml
NASタイプのPVCを作成するときは、selectorパラメーターを設定して、PVを選択してPVCにバインドする方法を指定します。
pvc-nas.yamlという名前のファイルを作成し、次のコンテンツをファイルにコピーします。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nas
パラメーター
説明
name
PVCの名前。
accessModes
PVのアクセスモード。 デフォルト値は
ReadWriteMany
です。 値をReadWriteOnce
またはReadOnlyMany
に設定することもできます。ストレージ
PVCが主張する容量。 請求される容量は、PVCに結合されるPVの容量を超えることはできない。
matchLabels
ラベルは、PVを選択し、それをPVCに結合するために使用される。
次のコマンドを実行して、静的プロビジョニングに使用するPVCを作成します。
kubectl create -f pvc-nas.yaml
nas-staticという名前のアプリケーションをデプロイし、PVCをアプリケーションに関連付けます。
次のYAMLテンプレートは、nas-staticアプリケーションの作成に使用されるnas.yamlファイルの例を示しています。
apiVersion: apps/v1 kind: Deployment metadata: name: nas-static labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: "/data" volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nas
パラメーター
説明
mountPath
NASボリュームがマウントされるコンテナーのパス。
claimName
アプリケーションにマウントされているPVCの名前。
次のコマンドを実行して、nas-staticという名前のアプリケーションを作成し、作成したPVCをアプリケーションにマウントします。
kubectl create -f nas.yaml
次のコマンドを実行して、アプリケーションを実行するポッドを照会します。
kubectl get pod
期待される出力:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
NASファイルシステムを使用してデータを永続化できることを確認する
デプロイされたアプリケーションとマウントされたNASファイルシステム内のファイルを照会します。
次のコマンドを実行して、デプロイされたアプリケーションの名前を照会します。
kubectl get pod
期待される出力:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
次のコマンドを実行して、ポッドの /dataパス内のファイルを照会します。 例としてポッドの
nas-static-5b5cdb85f6-n ****
を使用します。kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data
出力は返されません。 これは、/dataパスにファイルが存在しないことを示します。
次のコマンドを実行して、ポッド
nas-static-5b5cdb85f6-n ****
の /dataパスにnasという名前のファイルを作成します。kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
次のコマンドを実行して、ポッド
nas-static-5b5cdb85f6-n ****
の /dataパス内のファイルを照会します。kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data
期待される出力:
nas
次のコマンドを実行してポッドを削除します。
kubectl delete pod nas-static-5b5cdb85f6-n****
別のCLIを開き、次のコマンドを実行して、ポッドの削除と再作成の方法を表示します。
kubectl get pod -w -l app=nginx
ポッドの削除後もファイルが存在することを確認します。
次のコマンドを実行して、再作成されたポッドの名前を照会します。
kubectl get pod
期待される出力:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
次のコマンドを実行して、ポッド
nas-static-5b5cdb85f6-n ****
の /dataパス内のファイルを照会します。kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data
期待される出力:
nas
nasファイルはまだ /dataパスに存在します。 これは、データがNASファイルシステムに永続化されることを示します。
NASファイルシステム内のデータがポッド間で共有できることを確認する
アプリケーション用に作成されたポッドと、マウントされたNASファイルシステム内のファイルを照会します。
次のコマンドを実行して、アプリケーション用に作成されたポッドを照会します。
kubectl get pod
期待される出力:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
次のコマンドを実行して、/データ2つのポッドのパス。
kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data kubectl exec nas-static-c5bb4746c-4**** -- ls /data
次のコマンドを実行して、ポッドの /dataパスにnasという名前のファイルを作成し。
kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
次のコマンドを実行して、/データ2つのポッドのパス。
次のコマンドを実行して、ポッド
nas-static-5b5cdb85f6-n ****
の /dataパス内のファイルを照会します。kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data
期待される出力:
nas
次のコマンドを実行して、ポッド
nas-static-c5bb4746c-4 ****
の /dataパス内のファイルを照会します。kubectl exec nas-static-c5bb4746c-4**** -- ls /data
期待される出力:
nas
一方のポッドの /dataパスにファイルを作成すると、もう一方のポッドの /dataパスにもファイルを見つけることができます。 これは、NASファイルシステムのデータが2つのポッドで共有されていることを示します。