Alibaba Cloud File Storage NAS (Network Attached Storage) は、共有アクセス、弾力性のあるスケーリング、高い信頼性、および高性能をサポートする分散ファイルシステムです。ビッグデータ分析、データ共有、Web アプリケーション、ロギングなどのユースケースに最適です。Container Storage Interface (CSI) プラグインを使用して、既存の NAS ファイルシステムから永続ボリューム (PV) と永続ボリューム要求 (PVC) を作成し、それらを Kubernetes ワークロードにマウントできます。これにより、コンテナーと Pod 間で永続的かつ共有されたデータストレージが可能になります。
前提条件
CSI プラグインがクラスターにインストールされていること。スペックアップが必要な場合は、「csi-plugin と csi-provisioner のスペックアップ」をご参照ください。
説明クラスターで FlexVolume を使用している場合は、FlexVolume は非推奨であるため、CSI にスペックアップしてください。詳細については、「FlexVolume から CSI へのスペックアップ」をご参照ください。ストレージコンポーネントのタイプを確認するには、 に移動し、[ストレージ] タブをクリックします。
既存の NAS ファイルシステムが次の要件を満たしていることを確認してください。そうでない場合は、「ファイルシステムを作成する」か、「動的にプロビジョニングされた NAS ボリュームをマウントする」をご参照ください。
プロトコルタイプ:
ネットワーク ファイル システム (NFS) である必要があります。
ACK は、サーバーメッセージブロック (SMB) プロトコルを使用する NAS ファイルシステムのマウントをサポートしていません。
マウントポイント:
クラスターノードと同じ VPC 内にある必要があります。
その [ステータス] は [利用可能] である必要があります。
マウントポイントの作成手順については、「マウントポイントの管理」をご参照ください。
VPC の制限:
NAS は、同じ VPC 内で実行されている Pod にのみマウントできます。
VPC ピアリングまたは Cloud Enterprise Network (CEN) が設定されている場合でも、VPC をまたいだマウントはサポートされていません。
これにより、計算ノードとストレージシステム間の低レイテンシーで安全な接続性が確保されます。
同じ VPC 内で、NAS は AZ をまたいだマウントをサポートします。
NAS ボリューム内のデータを暗号化するには、NAS ファイルシステムの作成時に暗号化を設定します。
使用上の注意
NAS は共有ストレージサービスです。単一の NAS ボリュームを複数の Pod にマウントできます。複数の Pod が同時にデータを書き込む場合、アプリケーションは独立してデータ整合性を確保する必要があります。
NAS への同時書き込みの制限に関する詳細については、「複数のプロセスまたはクライアントが同時にログファイルにデータを書き込むときに発生する可能性のある例外を防ぐにはどうすればよいですか?」および「NFS ファイルシステムへのデータ書き込みのレイテンシーを解決するにはどうすればよいですか?」をご参照ください。
アプリケーションテンプレートに
securityContext.fsgroupパラメーターが含まれている場合、kubelet はマウント後にchmodまたはchown操作を実行するため、マウント時間が増加する可能性があります。レイテンシーを減らすために、この設定は避けてください。詳細については、「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 の容量。
重要実際に利用可能な容量は、この値ではなく、NAS ファイルシステムの仕様によって決まります。詳細については、「汎用 NAS」および「エクストリーム NAS」をご参照ください。
accessModesアクセスモード。デフォルト:
ReadWriteMany。また、ReadWriteOnceおよびReadOnlyManyもサポートしています。drivernasplugin.csi.alibabacloud.comである必要があります。これは、Alibaba Cloud が提供する CSI プラグインが使用されることを示します。volumeHandlePV の一意の識別子。PV 名と一致する必要があります。各 PV には一意の値を指定する必要があります。
serverNAS マウントポイントのアドレス。マウントポイントはクラスターと同じ VPC 内にある必要があります。「マウントポイントの管理」をご参照ください。
pathマウントする NAS ファイルシステム内のサブディレクトリ。
設定しない場合、デフォルトはルート (
/(汎用 NAS の場合)、/share(エクストリーム NAS の場合)) になります。ディレクトリが存在しない場合は作成されます。
説明エクストリーム NAS の場合、パスは
/shareで始まる必要があります (例:/share/data)。mountOptionsNAS マウントパラメーター (NFS プロトコルバージョンを含む)。Extreme NAS は NFS v3 プロトコルのみをサポートするため、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 の名前。
accessModesPV のアクセスモードと一致する必要があります。デフォルト:
ReadWriteMany。ReadWriteOnceまたはReadOnlyManyに値を設定することもできます。storage要求されたストレージ容量。PV の容量を超えることはできません。
重要実際に利用可能な容量は、この値ではなく、NAS ファイルシステムの仕様によって決まります。詳細については、「汎用 NAS」および「エクストリーム NAS」をご参照ください。
matchLabelsPVC を PV にバインドするために使用されるラベル。
PVC を作成します。
kubectl create -f pvc-nas.yamlPVC を表示します。
kubectl get pvc期待される出力:
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 の名前。
アプリケーションをデプロイします:
kubectl create -f nas.yamlPod のステータスを確認します。
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 ボリュームのマウント (コンソールを使用)
ステップ 1: PV の作成
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム] ページで、[作成] をクリックします。
表示されるダイアログボックスで、パラメーターを設定します。
パラメーター
説明
例
PV タイプ
[NAS] を選択します。
NAS
ボリューム名
ボリュームの名前。名前はクラスター内で一意である必要があります。
pv-nas
容量
PV の容量。
重要実際に利用可能な容量は、この値ではなく、NAS ファイルシステムの仕様によって決まります。詳細については、「汎用 NAS」および「エクストリーム NAS」をご参照ください。
5Gi
アクセスモード
[ReadWriteMany] または [ReadWriteOnce] を選択します。
ReadWriteMany
CNFS を有効にする
Container Network File System (CNFS) を有効にするかどうかを指定します。CNFS を使用した NAS の管理 により、NAS のパフォーマンスとサービス品質 (QoS) コントロールを向上させることができます。
このガイドでは、直接 NAS マウントを使用します。CNFS を使用して既存の NAS ファイルシステムを構成する方法の詳細については、「CNFS を使用して NAS ファイルシステムを管理する (推奨)」をご参照ください。
無効
マウントターゲットドメイン名
CNFS が無効な場合に必須です。
[マウントポイントの選択] または [カスタム] を選択して、マウントする NAS ファイルシステムを設定します。マウントポイントのアドレスの表示方法の詳細については、「マウントポイントの管理」をご参照ください。
0c47****-mpk25.cn-shenzhen.nas.aliyuncs.co
詳細オプション (オプション)
マウントパス
マウントする NAS ファイルシステム内のサブディレクトリ。
設定しない場合、デフォルトはルート (
/(汎用 NAS の場合)、/share(エクストリーム NAS の場合)) になります。ディレクトリが存在しない場合は作成されます。
説明エクストリーム NAS の場合、パスは
/shareで始まる必要があります (例:/share/data)。/data
回収ポリシー
デフォルト値は [Retain] です。これは、PVC が削除されたときに、関連する PV と NAS ファイルシステムが保持され、手動でのみ削除できることを示します。
説明[削除] は
archiveOnDeleteと一緒に使用する必要があります。静的 PV はarchiveOnDeleteをサポートしていないため、ここで [削除] を選択しても、PVC が削除されたときに PV と NAS ファイルシステムは実際には削除されません。archiveOnDeleteを設定する場合は、「動的にプロビジョニングされた NAS ボリュームを使用する」をご参照ください。Retain
マウントオプション
NAS マウントパラメーター (NFS プロトコルバージョンを含む)。Extreme NAS は NFS v3 プロトコルのみをサポートするため、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」をご参照ください。
5
アクセスモード
デフォルト値は [ReadWriteMany] です。[ReadWriteOnce] または [ReadOnlyMany] に値を設定することもできます。
ReadWriteMany
ステップ 3: アプリケーションを作成し、NAS ボリュームをマウントする
クラスター詳細ページの左側のナビゲーションウィンドウで、 に移動します。
[デプロイメント] ページで、[イメージから作成] をクリックします。
アプリケーションのパラメーターを設定します。設定後、[作成] をクリックします。
次の表に、主要なパラメーターを示します。他のパラメーターはデフォルト設定を使用してください。詳細については、「Deployment を使用してステートレスアプリケーションを作成する」をご参照ください。
セクション
パラメーター
説明
例
基本情報
名前
Deployment のカスタム名を入力します。名前は、コンソールに表示されるフォーマット要件を満たす必要があります。
nas-test
レプリカ
Pod レプリカの数。
2
コンテナー
イメージ名
コンテナーイメージ。
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
必須リソース
CPU とメモリ。
0.25 Core, 512 MiB
ボリューム
[PVC の追加] をクリックし、パラメーターを設定します。
マウントソース: 作成した PVC を選択します。
コンテナーパス: NAS ファイルシステムをマウントするコンテナーパスを指定します。
マウントソース: pvc-nas
コンテナーパス: /data
アプリケーションのデプロイステータスを表示します。
[デプロイメント] ページで、アプリケーションの名前をクリックします。
[Pod] タブで、Pod が [実行中] 状態であることを確認します。
よくある質問
NAS ボリュームのマウントまたは使用中に問題が発生した場合は、以下をご参照ください。
リファレンス
CNFS は NAS ファイルシステムの独立した管理を可能にし、パフォーマンスと QoS コントロールを向上させます。ベストプラクティスについては、「CNFS を使用して NAS ファイルシステムを管理する (推奨)」をご参照ください。