ファイルストレージNAS (NAS) は、共有アクセス、柔軟なスケーリング、高信頼性、高性能を提供する分散ファイルシステムです。 このトピックでは、静的にプロビジョニングされたNASボリュームをマウントする方法、および静的にプロビジョニングされたNASボリュームを使用して永続ストレージと共有ストレージを有効にする方法について説明します。
前提条件
CSIプラグインは、クラスタにインストールされる。 csi-pluginおよびcsi-provisionerを更新する方法の詳細については、「csi-pluginおよびcsi-provisionerの更新」をご参照ください。
説明FlexVolumeがクラスターで使用されている場合は、FlexVolumeが推奨されないため、FlexVolumeをCSIにアップグレードします。 詳細については、「FlexVolumeからCSIへのアップグレード」をご参照ください。 を選択し、[ストレージ] タブをクリックしてストレージコンポーネントの種類を確認します。
kubectlクライアントがクラスターに接続されています。 詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。
既存のNASファイルシステムが次の要件を満たしていることを確認してください。 それ以外の場合は、要件を満たす新しいNASファイルシステムを作成するか、動的にプロビジョニングされたNASボリュームをマウントします。 詳細については、「ファイルシステムの作成」をご参照ください。
プロトコルタイプは、ネットワークファイルシステム (NFS) である。 Extreme NASファイルシステムはNFSv3のみをサポートします。
マウントターゲットとNASファイルシステムをマウントするクラスターノードは同じ仮想プライベートクラウド (VPC) に属し、マウントターゲットのステータスは [使用可能] です。 マウントターゲットの作成方法の詳細については、「マウント ターゲットの管理」をご参照ください。
説明NASボリューム内のデータを暗号化する場合は、NASファイルシステムの作成時に暗号化設定を構成できます。
制限事項
Server Message Block (SMB) プロトコルを使用するNASファイルシステムはマウントできません。
汎用NASファイルシステムとExtreme NASファイルシステムでは、マウントシナリオ、ファイルシステムの数、ファイル共有プロトコルの制限が異なります。 サポートされている状態の詳細については、「制限」をご参照ください。
静的にプロビジョニングされたNASボリュームは拡張できません。
使用上の注意
NASは共有ストレージサービスです。 NASボリュームは複数のポッドにマウントできます。 複数のポッドが同時にデータを書き込む場合、アプリケーションは独立してデータの一貫性を確保する必要があります。 NASへの同時書き込みの制限の詳細については、複数のプロセスまたはクライアントが同時にログファイルにデータを書き込むときに発生する可能性のある例外を防ぐにはどうすればよいですか? とNFSファイルシステムにデータを書き込む際の待ち時間を解決するにはどうすればよいですか? をご参照ください。
NASファイルシステムのマウント対象を削除しないでください。 そうしないと、オペレーティングシステムのハング問題が発生する可能性があります。
Extreme NASファイルシステムをマウントするには、NASボリュームの
path
パラメーターを/share
のサブディレクトリに設定します。 たとえば、Extreme NASファイルシステムをポッドにマウントするときに、/share/path1
サブディレクトリを指定できます。アプリケーションテンプレートでsecurityContext.fsgroupパラメーターが設定されている場合、ボリュームのマウント後にkubeletが
chmod
またはchown
操作を実行するため、時間の消費が増加します。 securityContext.fsgroupパラメーターが設定されているときにマウントプロセスを高速化する方法の詳細については、「NASボリュームのマウントに長時間かかるのはなぜですか」をご参照ください。
手順1: 静的にプロビジョニングされたNASボリュームのマウント
kubectlを使う
静的にプロビジョニングされた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: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com" # The mount target of the NAS file system, which is the same as the VPC of the cluster. path: "/csi" # Specify the subdirectory of the NAS file system. mountOptions: - nolock,tcp,noresvport - vers=3
パラメーター
説明
name
PV の名前。
labels
PVに追加するラベル
ストレージ
NASボリュームの容量。
説明実際のシナリオでは、NASボリュームの容量はストレージパラメータによって制限されません。 NASボリュームの使用可能な容量の詳細については、「制限」をご参照ください。
accessModes
PVのアクセスモード。 デフォルト値は
ReadWriteMany
です。 値をReadWriteOnce
またはReadOnlyMany
に設定することもできます。ドライバー
ボリュームのプロビジョニングに使用されるストレージドライバーのタイプ。 この例では、パラメーターは
nasplugin.csi.alibabacloud.com
に設定されています。 これは、Alibaba Cloudが提供するCSIプラグインが使用されていることを示しています。volumeHandle
PVの一意の識別子。 PVの名前を入力します。 複数のPVが使用される場合、各PVの識別子は一意でなければならない。
サーバー
NASファイルシステムのマウントターゲット。クラスターのVPCと同じである必要があります。
説明値をマウントターゲットのドメイン名に置き換えます。 マウントターゲットのドメイン名を表示する方法の詳細については、「マウント ターゲットの管理」をご参照ください。
パス
マウントするNASファイルシステムのサブディレクトリ。 汎用NASファイルシステムの親ディレクトリは /です。
重要Extreme NASファイルシステムをマウントする場合は、このパラメーターを
/share
ディレクトリのサブディレクトリに設定します。 例:/share/csi
mountOptions
options
パラメーターを設定し、mountOptions
フィールドでNFSバージョンを指定します。 NFSプロトコルのバージョン。 NFSv3の使用を推奨します。 Extreme NASファイルシステムはNFSv3のみをサポートします。 NFSプロトコルの詳細については、「NFS」をご参照ください。静的にプロビジョニングされたPVを作成します。
kubectl create -f pv-nas.yaml
NASタイプのPVCを作成するときは、selectorパラメーターを設定して、PVを選択し、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の名前。
pvc-nas
accessModes
PVCのアクセスモード。 デフォルト値は
ReadWriteMany
です。 値をReadWriteOnce
またはReadOnlyMany
に設定することもできます。ReadWriteMany
ストレージ
アプリケーションが使用できるNASボリュームの要求容量。 要求された容量は、NASボリュームの総容量を超えることはできません。
説明実際のシナリオでは、NASボリュームの容量はストレージパラメータによって制限されません。 NASボリュームの使用可能な容量の詳細については、「制限」をご参照ください。
5Gi
matchLabels
PVを選択し、PVをPVCにバインドするために使用されるラベル。
pv-nas
静的にプロビジョニングされた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: 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
パラメーター
説明
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
ACKコンソールの使用
ステップ1: PVの作成
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[永続ボリューム] ページで、[作成] をクリックします。
[PVの作成] ダイアログボックスでパラメーターを設定し、[作成] をクリックします。 下表に、各パラメーターを説明します。
パラメーター
説明
例
PVタイプ
[NAS] を選択します。
NAS
ボリューム名
ボリュームの名前。 ボリューム名はクラスター内で一意である必要があります。
pv-nas
容量
PV の容量。
説明NASファイルシステムは無制限の容量を提供します。 このパラメーターは、NASファイルシステムのストレージ使用量を制限しませんが、PVの容量を定義します。
20Gi
アクセスモード
ReadWriteManyまたはReadWriteOnceを選択できます。 デフォルト値: ReadWriteMany
ReadWriteMany
CNFSの有効化
Container Network File System (CNFS) を有効にするかどうかを指定します。 CNFSを有効にした後、次の操作を実行する必要があります。
対応するCNFSを選択するか、新しいCNFSを作成します。 CNFSの詳細については、「NAS ファイルシステムの管理に CNFS を使用する(推奨) 」をご参照ください。
CNFSアクセラレーションを有効にするかどうかを指定できます。 CNFSアクセラレーションの詳細については、「CNFS クライアントの分散キャッシュ機能を有効にする」をご参照ください。
有効にする
マウントターゲットドメイン名
CNFSが無効の場合は、このパラメーターを設定する必要があります。
[マウントターゲットの選択] または [カスタム] を選択して、マウントするNASファイルシステムを設定できます。 マウントターゲットのドメイン名を表示する方法の詳細については、「マウント ターゲットの管理」をご参照ください。
0c47 **** -mpk25.cn-shenzhen.nas.aliyuncs.co
高度なオプション (オプション)
マウントパス: NASファイルシステムのマウントパス。 マウントパスは、ルートディレクトリを示すスラッシュ (
/
) で始まる必要があります。 このパラメーターを設定すると、PVは指定されたサブディレクトリにマウントされます。指定されたサブディレクトリが存在しない場合、システムは自動的にNASファイルシステムにサブディレクトリを作成し、サブディレクトリをクラスターにマウントします。
このパラメーターを設定しない場合、NASファイルシステムのルートディレクトリがマウントされます。
Extreme NASファイルシステムをマウントする場合は、このパラメーターを
/share
ディレクトリのサブディレクトリに設定します。 例:/share/data
/データ
ポリシーの再利用: このパラメーターはデフォルトでDeleteに設定されています。 このパラメーターをRetainに設定することもできます。
削除: 再利用ポリシーが削除されている場合は、
archiveOnDelete
パラメーターを設定する必要があります。archiveOnDelete
パラメーターをtrue
に設定すると、PVCの削除後に関連するPVおよびNASファイルシステムの名前が変更されます。 関連するPVおよびNASファイルシステムは、PVCとともに削除されません。archiveOnDelete
パラメーターをfalse
に設定した場合、PVCを削除すると、関連するPVおよびNASファイルシステムも削除されます。
保持: PVCを削除すると、関連するPVおよびNASファイルシステムは保持され、手動でのみ削除できます。
データセキュリティの要件が高い場合は、[保持] ポリシーを使用して、ユーザーエラーによるデータ損失を防ぐことを推奨します。
保持
マウントオプション: NFSプロトコルのバージョンを含む、NASファイルシステムをマウントするためのオプションのパラメーター。 NFS v3の使用を推奨します。 Extreme NASファイルシステムはNFS v3のみをサポートします。 NFSプロトコルの詳細については、「NFS」をご参照ください。
v3
ラベル
PVにラベルを追加します。
pv-nas
PVを作成した後、[Persistent Volumes] ページでPVを表示できます。
手順 2: PVC の作成
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[永続的なボリュームクレーム] ページで、[作成] をクリックします。
[PVCの作成] ダイアログボックスで、パラメーターを設定します。 パラメーターを設定したら、[作成] をクリックします。
パラメーター
説明
例
PVCタイプ
[NAS] を選択します。
NAS
名前
PVCの名前。 ボリューム名はクラスター内で一意である必要があります。
pvc-nas
割り当てモード
この例では、Existing Volumesが選択されています。
説明PVが作成されていない場合、[割り当てモード] パラメーターを [ボリュームの作成] に設定し、PVを作成するために必要なパラメーターを設定できます。
既存のボリュームを選択します。
既存のストレージクラス
[PVの選択] をクリックします。 使用するPVを見つけて、[操作] 列の [選択] をクリックします。
既存のボリューム
容量
PV の容量。
説明PVCによって要求される容量は、PVCに結合されるPVの容量を超えることはできない。
20
アクセスモード
デフォルト値はReadWriteManyです。 値をReadWriteOnceまたはReadOnlyManyに設定することもできます。
ReadWriteMany
ステップ3: アプリケーションの作成
詳細ページの左側のナビゲーションウィンドウで、
を選択します。[デプロイメント] タブで、[イメージから作成] をクリックします。
アプリケーションのパラメーターを設定します。 次に、[作成] をクリックします。
次の表に、主要なパラメーターを示します。 他のパラメーターのデフォルト値を保持します。 詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
セクション
パラメーター
説明
例
基本情報
名前
配置のカスタム名を入力します。 名前は、コンソールに表示されるフォーマット要件を満たす必要があります。
テスト-nas
レプリカ
デプロイによってプロビジョニングされたポッドレプリカの数。
2
コンテナ
イメージ名
アプリケーションのデプロイに使用されるイメージのアドレス。
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
必要なリソース
アプリケーションが必要とするvCoresの数とメモリ量を指定します。
0.25 vCoresとメモリの0.5 GiB
ボリューム
[PVCの追加] をクリックし、パラメーターを設定します。
マウントソース: 作成したPVCを選択します。
コンテナーパス: NASファイルシステムをマウントするコンテナーパスを指定します。
マウントソース: pvc-nas
コンテナパス: /data
次のコマンドを実行して、アプリケーションのデプロイの進行状況を照会します。
[デプロイメント] ページで、管理するアプリケーションの名前をクリックします。
[ポッド] タブで、ポッドの状態が [実行中] かどうかを確認します。
ステップ2: NASボリュームがデータを保持および共有できることを確認する
前の手順で作成したデプロイには、2つのポッドが含まれます。 2つのポッドは同じNASファイルシステムにマウントされます。 次のいずれかの方法を使用して、NASボリュームがデータを保持および共有できることを確認できます。
ポッドを再作成します。 再作成されたポッドからNASボリュームにアクセスして、元のデータがNASファイルシステムにまだ存在するかどうかを確認します。 データがまだ存在する場合は、データ永続性が有効になります。
一方のポッドにファイルを作成し、もう一方のポッドからファイルにアクセスします。 ファイルにアクセスできる場合は、データ共有が有効になります。
NASファイルシステムを使用してデータを永続化できることを確認する
アプリケーションが存在するポッドを照会します。
kubectl get pod
想定される出力:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-a**** 1/1 Running 0 32s nas-static-c5bb4746c-b**** 1/1 Running 0 32s
ポッドにファイルを作成します。
アプリケーションにマウントされている
/data
パスにファイルが存在するかどうかを確認します。この例では、
nas-static-5b5cdb85f6-a ****
ポッドが使用されています。kubectl exec nas-static-5b5cdb85f6-a**** -- ls /data
出力は返されません。 これは、
/data
パスにファイルが存在しないことを示します。ポッドの
/data
パスにnasという名前のファイルを作成します。kubectl exec nas-static-5b5cdb85f6-a**** -- touch /data/nas
他のポッドから作成したファイルにアクセスします。
この例では、
nas-static-5b5cdb85f6-b ****
ポッドが使用されています。kubectl exec nas-static-5b5cdb85f6-b**** -- ls /data
想定される出力:
nas
ポッドを再作成します。
ポッドを削除します。
kubectl delete pod nas-static-5b5cdb85f6-a****
別のコマンドラインインターフェイス (CLI) を開き、ポッドの削除と再作成の方法を確認します。
kubectl get pod -w -l app=nginx
ポッドの削除後もファイルが存在することを確認します。
再作成されたポッドの名前を照会します。
kubectl get pod
想定される出力:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-c**** 1/1 Running 0 32s nas-static-c5bb4746c-a**** 1/1 Running 0 32s
再作成されたポッドの
/data
パス内のファイルを照会します。この例では、
nas-static-5b5cdb85f6-c ****
ポッドが使用されています。kubectl exec nas-static-5b5cdb85f6-c**** -- ls /data
想定される出力:
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つのポッドの
/data
パス内のファイルを照会します。kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data kubectl exec nas-static-c5bb4746c-4**** -- ls /data
出力は返されません。 これは、
/data
パスにファイルが存在しないことを示します。ポッドの
/data
パスにnasという名前のファイルを作成します。この例では、
nas-static-5b5cdb85f6-n ****
ポッドが使用されています。kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
2つのポッドの
/data
パス内のファイルを照会します。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つのポッドで共有されていることを示します。
関連ドキュメント
TLSが有効になっているNASファイルシステムをマウントする方法の詳細については、「TLS が有効になっている NAS ファイルシステムをマウントするには、CSI をどのように使用すればよいですか?」をご参照ください。
権限の問題によりNASボリュームにアクセスできない場合は、「NASボリュームをマウントするときにシステムプロンプトが表示されます: 操作が許可されないのはなぜですか?」をご参照ください。
異なるユーザーとユーザーグループ間のデータセキュリティを確保する方法の詳細については、「FAQ」をご参照ください。
NASを使用する際の読み取りおよび書き込みアクセスの問題の詳細については、「ファイルへの読み取りおよび書き込みアクセスに関するよくある質問」をご参照ください。
ボリュームのサイズを動的に変更する場合は、動的にプロビジョニングされたNASボリュームを使用します。 詳細については、「動的にプロビジョニングされた NAS ボリュームをマウントする」をご参照ください。
汎用NASボリュームのディレクトリにクォータを指定して、NASボリュームのストレージスペースを管理できます。 詳細については、「動的にプロビジョニングされたNASボリュームの拡張」をご参照ください。
NASボリュームを直接使用するか、CNFSを使用してNASボリュームを管理し、NASのパフォーマンスとサービス品質 (QoS) 制御を改善できます。