Network Attached Storage (NAS) ボリュームは、ビッグデータ分析、データ共有、Web アプリケーション、ログの永続化などのシナリオに最適です。静的なストレージリソースを手動で作成および構成する代わりに、永続ボリューム要求 (PVC) と StorageClass を使用して動的にプロビジョニングできます。これにより、システムが自動的に永続ボリューム (PV) を作成できます。動的にプロビジョニングされた NAS ボリュームは、subpath、sharepath、filesystem の 3 つのメソッドを使用してマウントできます。
前提条件
CSI プラグインがクラスターにインストールされていること。アップグレードが必要な場合は、「csi-plugin と csi-provisioner のアップグレード」をご参照ください。
説明クラスターで FlexVolume を使用している場合は、FlexVolume は非推奨であるため、CSI にアップグレードしてください。詳細については、「FlexVolume から CSI へのアップグレード」をご参照ください。ストレージコンポーネントのタイプを確認するには、 に移動し、[ストレージ] タブをクリックします。
File Storage NAS サービスが有効化されていること。
初めて使用する場合は、File Storage NAS 製品ページ の画面の指示に従ってサービスを有効化します。
制限事項
SMB プロトコルを使用する NAS ファイルシステムのマウントはサポートされていません。
NAS ファイルシステムは、同じ VPC (VPC) 内の Pod にのみマウントできます。VPC をまたいだマウントはサポートされていません。
説明同じ VPC 内では、NAS ボリュームは異なるアベイラビリティーゾーン (AZ) をまたいでマウントできます。
汎用型 NAS と超高速型 NAS ファイルシステムでは、接続性、ファイルシステムの数、プロトコルタイプに関して異なる制約があります。詳細については、「制限」をご参照ください。
使用上の注意
NAS は共有ストレージサービスです。単一の NAS ボリュームを複数の Pod にマウントできます。複数の Pod が同時にデータを書き込む場合、アプリケーションは独立してデータ整合性を確保する必要があります。
NAS への同時書き込みの制限に関する詳細については、「複数のプロセスまたはクライアントが同時にログファイルにデータを書き込むときに発生する可能性のある例外を防ぐにはどうすればよいですか?」および「NFS ファイルシステムへのデータ書き込みの遅延を解決するにはどうすればよいですか?」をご参照ください。
アプリケーションテンプレートに
securityContext.fsgroupパラメーターが含まれている場合、kubelet はマウント後にchmodまたはchown操作を実行するため、マウント時間が増加する可能性があります。遅延を減らすためにこの設定を避けてください。詳細については、「NAS 永続ボリュームのマウントに必要な時間が増加する」をご参照ください。
マウント後に NAS マウントポイントを削除しないでください。削除すると、システムが応答しなくなる可能性があります。
マウントメソッド
StorageClass の volumeAs パラメーターは、PV と NAS ファイルシステムまたはそのサブディレクトリとの関係を定義します。必要に応じてマウントメソッドを選択してください。
マウントメソッド | 説明 | ユースケース |
サブディレクトリタイプの PV を作成します。各 PV は同じ NAS ファイルシステム内のユニークなサブディレクトリに対応します。 |
| |
StorageClass で指定された同じ共有ディレクトリを指すすべての PV を作成します。PV ごとに新しいサブディレクトリは作成されません。 | 異なる名前空間の複数の Pod が同じ NAS サブディレクトリをマウントする必要がある。 | |
filesystem の使用 (非推奨) | 各 PV に対して NAS ファイルシステムを自動的に作成します。1 つの PV は 1 つの NAS ファイルシステム全体に対応します。 | アプリケーションが、ワークロードとともに動的に作成および削除する必要がある専用の NAS ファイルシステムを必要とする場合。 |
subpath メソッドを使用したマウント
subpath メソッドには、Container Storage Interface (CSI) コンポーネントのバージョン 1.31.4 以降が必要です。アップグレードするには、「csi-plugin と csi-provisioner のアップグレード」をご参照ください。
ステップ 1: NAS ファイルシステムとマウントポイントの情報を取得する
NAS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
NAS ファイルシステムとマウントポイントを作成します。
ファイルシステムがネットワーク ファイル システム (NFS) プロトコルを使用し、マウントポイントがクラスターノードと同じ VPC にあることを確認してください。
既存の NAS ファイルシステムがある場合は、これらの要件を満たしていることを確認してください。
ない場合は、作成してください。手順については、「ファイルシステムの作成」および「マウントポイントの管理」をご参照ください。
マウントポイントのアドレスを取得します。
ファイルシステム ID をクリックします。左側のナビゲーションウィンドウで、[マウントポイント] をクリックします。
[マウントポイント] セクションで、ステータスが [利用可能] であることを確認し、マウントポイントのアドレスをコピーします。
ステップ 2: StorageClass を作成する
kubectl
次の YAML マニフェストを変更し、
alicloud-nas-subpath.yamlとして保存します。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s" archiveOnDelete: "true" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retain allowVolumeExpansion: trueパラメーター
説明
mountOptionsNAS ボリュームのマウントオプションで、NFS プロトコルのバージョンを含みます。NFSv3 の使用を推奨します。超高速型 NAS は NFSv3 のみをサポートします。
parametersvolumeAsマウントメソッド。この例では、値を
subpathに設定して、サブディレクトリタイプの PV を作成します。1 つの PV は NAS ファイルシステム内の 1 つのサブディレクトリに対応します。serverマウントポイントのアドレスとマウントする NAS ファイルシステムのサブディレクトリ。フォーマットは
<NAS マウントポイントアドレス>:<マウントディレクトリ>です。サブディレクトリを指定しない場合、デフォルトでルートディレクトリ/がマウントされます。archiveOnDeletereclaimPolicyがDeleteに設定されている場合にバックエンドストレージのデータを削除するかどうかを指定します。NAS は共有ストレージサービスであるため、このパラメーターは確認のために追加されています。true(デフォルト): ディレクトリまたはファイルは保持され、archived-{pvName}.{timestamp}に名前が変更されます。false: バックエンドストレージリソースは完全に削除されます。
説明高トラフィックのワークロードの場合、このパラメーターを
falseに設定することは推奨されません。詳細については、「NAS 永続ボリュームに関するよくある質問」をご参照ください。バックエンドストレージのデータを完全に削除するには、kubectl を使用して
parameters.archiveOnDeleteをfalseに設定する必要があります。
provisionerドライバーのタイプ。値は
nasplugin.csi.alibabacloud.comに設定する必要があり、Alibaba Cloud NAS CSI プラグインが使用されることを示します。reclaimPolicyPV のリクレームポリシー。デフォルト値は
Deleteです。Retainもサポートされています。Delete: この値はarchiveOnDeleteと一緒に使用する必要があります。archiveOnDeleteがtrueの場合、PVC が削除されても NAS ファイルシステム内のファイルは名前が変更されるだけで削除されません。archiveOnDeleteがfalseの場合、PVC が削除されると NAS ファイルシステム内のファイルが削除されます。重要これにより、NAS ファイルシステム内の subpath ディレクトリとそのファイルが削除されます。NAS ファイルシステム自体は削除されません。NAS ファイルシステムを削除するには、「ファイルシステムの削除」をご参照ください。
Retain: PVC が削除されても、PV と NAS ファイルシステム内のファイルは保持されます。手動で削除する必要があります。
データのセキュリティが最優先事項である場合は、偶発的なデータ損失を防ぐために、このパラメーターを
Retainに設定することをお勧めします。allowVolumeExpansion汎用型 NAS ファイルシステムでのみサポートされます。
trueに設定すると、StorageClass によって動的に作成される PV にディレクトリクォータが構成され、利用可能な容量が制限されます。また、PVC を更新してボリューム容量を拡張することもできます。詳細については、「動的にプロビジョニングされた NAS ボリュームのディレクトリクォータを設定する」をご参照ください。説明NAS クォータは非同期で有効になります。PV が動的に作成された後、ディレクトリクォータがすぐに有効にならない場合があります。短時間で大量のデータを書き込むと、ストレージ使用量が容量制限を超える可能性があります。「ディレクトリクォータ」をご参照ください。
StorageClass を作成します。
kubectl create -f alicloud-nas-subpath.yaml
コンソール
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
[StorageClasses] ページで、[作成] をクリックします。
表示されるダイアログボックスで、パラメーターを構成し、[OK] をクリックします。
次の表に構成を示します。
構成
説明
例
[名前]
StorageClass の名前。フォーマット要件については UI を参照してください。
alicloud-nas-subpath
[PV タイプ]
[NAS] を選択します。
NAS
[マウントポイントの選択]
NAS ファイルシステムのマウントポイントのアドレス。
0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com
[ボリュームモード]
ボリュームのアクセスモード。この例では、subpath メソッドを使用するために [サブディレクトリ] を選択します。各 PV に対してマウントパスの下にユニークなサブディレクトリが自動的に作成されます。データは
<NAS マウントポイント>:<マウントパス>/<pv-name>/に保存されます。説明このモードには CSI コンポーネントのバージョン 1.31.4 以降が必要です。それ以外の場合、システムはデフォルトで共有ディレクトリモードになります。
サブディレクトリ
[マウントパス]
マウントする NAS ファイルシステム上のサブディレクトリ。
設定しない場合、デフォルトでルートディレクトリがマウントされます。
指定したディレクトリが存在しない場合は、自動的に作成されてからマウントされます。
説明ルートディレクトリは、汎用型 NAS ファイルシステムの場合は
/、超高速型 NAS ファイルシステムの場合は/shareです。超高速型 NAS ファイルシステムにサブディレクトリをマウントする場合、pathは/shareで始まる必要があります (例:/share/data)。/k8s
[リクレームポリシー]
PV のリクレームポリシー。偶発的なデータ損失を防ぐために [Retain] を推奨します。
[Delete]: このパラメーターは
archiveOnDeleteと一緒に構成する必要があります。コンソールで [Delete] を選択しても、PVC を削除する際に NAS ボリューム上のデータは実際には削除されません。これは、基盤となるarchiveOnDeleteパラメーターが UI を通じて構成できないためです。archiveOnDeleteを構成するには、YAML マニフェストを使用して PV を作成します。YAML テンプレートについては、kubectl タブを参照してください。[Retain]: PVC が削除されても、PV と NAS ボリューム上のデータは削除されません。手動で削除する必要があります。
Retain
[マウントオプション]
NAS ボリュームのマウントオプションで、NFS プロトコルのバージョンを含みます。NFSv3 の使用を推奨します。超高速型 NAS は NFSv3 のみをサポートします。
デフォルト値を維持
StorageClass が作成されると、[StorageClasses] リストで表示できます。
ステップ 3: PVC を作成する
kubectl
YAML マニフェストを変更し、
nas-pvc.yamlとして保存します。kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-subpath resources: requests: storage: 20Giパラメーター
説明
accessModesボリュームのアクセスモード。デフォルト値は
ReadWriteManyです。ReadWriteOnceとReadOnlyManyもサポートされています。storageClassNameバインドする StorageClass の名前。
storageリクエストするボリュームの容量。
PVC を作成します。
kubectl create -f nas-pvc.yamlPV が作成され、PVC にバインドされたことを確認します。
kubectl get pvc出力には
STATUSがBoundと表示され、CSI コンポーネントが StorageClass に基づいて自動的に PV を作成し、PV を PVC にバインドしたことを示します。NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-a7540d97-0f53-4e05-b7d9-557309****** 20Gi RWX Retain Bound default/nas-csi-pvc alicloud-nas-subpath <unset> 5m
コンソール
詳細ページの左側のナビゲーションペインで、 を選択します。
[永続ボリューム要求] ページで、[作成] をクリックします。
[PVC の作成] ダイアログボックスで、パラメーターを構成し、[OK] をクリックします。
構成
説明
例
[PVC タイプ]
[NAS] を選択します。
[NAS]
[名前]
PVC の名前。名前空間内で一意である必要があります。
pvc-nas割り当てモード
この例では、[StorageClass の使用] を選択します。
[StorageClass の使用]
[既存の StorageClass]
[StorageClass の選択] をクリックし、前のステップで作成したものを選択します。
alicloud-nas-subpath[容量]
ボリュームの容量。この設定は、アプリケーションが使用できる最大容量を制限するものではありません。
20Gi
[アクセスモード]
デフォルト値は [ReadWriteMany] です。[ReadWriteOnce] または [ReadOnlyMany] を選択することもできます。
[ReadWriteMany]
ステップ 4: アプリケーションを作成し、NAS ボリュームをマウントする
kubectl
2 つの Deployment を作成し、同じ PVC をマウントします。これにより、同じ NAS ファイルシステム内の同じサブディレクトリを共有できます。
同じ NAS ファイルシステム上のユニークなサブディレクトリに異なる Pod を割り当てるには、ターゲットディレクトリごとに異なる StorageClass と PVC を作成します。
次の YAML マニフェストを変更し、ファイルをそれぞれ
nginx-1.yamlとnginx-2.yamlとして保存します。nginx-1.yamlとnginx-2.yamlの次の構成は、metadata.nameの値を除いて同じです。2 つのアプリケーションは同じ PVC にバインドされます。nginx-1.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nas-test-1 labels: app: nginx spec: 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: nas-pvc mountPath: "/data" # NAS ボリュームがコンテナーにマウントされるパス volumes: - name: nas-pvc persistentVolumeClaim: claimName: nas-csi-pvc # PVC をバインドするために使用nginx-2.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nas-test-2 labels: app: nginx spec: 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: nas-pvc mountPath: "/data" # NAS ボリュームがコンテナーにマウントされるパス volumes: - name: nas-pvc persistentVolumeClaim: claimName: nas-csi-pvc # PVC をバインドするために使用2 つの Deployment を作成します。
kubectl create -f nginx-1.yaml -f nginx-2.yamlPod が実行中であることを確認します。
kubectl get pod -l app=nginx出力は、同じ NAS ファイルシステムの同じサブディレクトリが異なるアプリケーションにマウントされていることを示します。
NAME READY STATUS RESTARTS AGE nas-test-1-b75d5b6bc-vqwq9 1/1 Running 0 51s nas-test-2-b75d5b6bc-8k9vx 1/1 Running 0 44s
コンソール
次の手順を繰り返して、同じ PVC をマウントする 2 つの Deployment を作成し、NAS ファイルシステム内の単一のサブディレクトリを共有できるようにします。
クラスター詳細ページの左側のナビゲーションペインで、 に移動します。
[デプロイメント] ページで、[イメージから作成] をクリックします。
パラメーターを構成してアプリケーションを作成します。
次の表に主要なパラメーターを示します。他のパラメーターはデフォルト設定のままにできます。詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。
構成ステップ
パラメーター
説明
例
[基本情報]
[名前]
Deployment のカスタム名を入力します。名前はコンソールに表示されるフォーマット要件を満たす必要があります。
deployment-nas-1[レプリカ]
Pod レプリカの数。
1
[コンテナー]
[イメージ名]
アプリケーションのデプロイに使用されるイメージのアドレス。
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6[必須リソース]
必要な vCPU とメモリリソース。
0.25 vCPU, 512 MiB
[ボリューム]
[PVC の追加] をクリックし、パラメーターを構成します。
[マウントソース]: 作成した PVC を選択します。
[コンテナーパス]: NAS ファイルシステムをマウントするコンテナーパスを指定します。
マウントソース:
pvc-nasコンテナーパス:
/data

アプリケーションのデプロイステータスを表示します。
[デプロイメント] ページで、アプリケーションの名前をクリックします。
[Pod] タブで、Pod が [実行中] 状態であることを確認します。
sharepath メソッドを使用したマウント
ステップ 1: NAS ファイルシステムとマウントポイントの情報を取得する
NAS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
NAS ファイルシステムとマウントポイントを作成します。
ファイルシステムがネットワーク ファイル システム (NFS) プロトコルを使用し、マウントポイントがクラスターノードと同じ VPC にあることを確認してください。
既存の NAS ファイルシステムがある場合は、これらの要件を満たしていることを確認してください。
ない場合は、作成してください。手順については、「ファイルシステムの作成」および「マウントポイントの管理」をご参照ください。
マウントポイントのアドレスを取得します。
ファイルシステム ID をクリックします。左側のナビゲーションウィンドウで、[マウントポイント] をクリックします。
[マウントポイント] セクションで、ステータスが [利用可能] であることを確認し、マウントポイントのアドレスをコピーします。
ステップ 2: StorageClass を作成する
kubectl
alicloud-nas-sharepath.yamlという名前のファイルを次の YAML マニフェストで作成し、必要に応じてパラメーターを変更します。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-sharepath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: sharepath server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/sharepath" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retainパラメーター
説明
mountOptionsNAS ボリュームのマウントオプションで、NFS プロトコルのバージョンを含みます。NFSv3 の使用を推奨します。超高速型 NAS は NFSv3 のみをサポートします。
parametersvolumeAsマウントメソッド。この例では、値を
sharepathに設定します。これは、PV が作成されるときに実際のディレクトリは作成されず、代わりに StorageClass で指定されたパスが使用されることを示します。つまり、各 PV は同じ NAS ディレクトリにマッピングされます。serverマウントポイントのアドレスとマウントする NAS ファイルシステムのサブディレクトリ。フォーマットは
<NAS マウントポイントアドレス>:<マウントディレクトリ>です。サブディレクトリを指定しない場合、デフォルトでルートディレクトリ
/がマウントされます。NAS ファイルシステムにディレクトリが存在しない場合は、自動的に作成されてからマウントされます。
汎用型 NAS ファイルシステムのルートディレクトリは
/で、超高速型 NAS ファイルシステムの場合は/shareです。超高速型 NAS ファイルシステムのサブディレクトリをマウントする場合、pathは/shareで始まる必要があります (例:/share/data)。provisionerドライバーのタイプ。値は
nasplugin.csi.alibabacloud.comに設定する必要があり、Alibaba Cloud NAS CSI プラグインが使用されることを示します。reclaimPolicyPV のリクレームポリシー。sharepath メソッドを使用する場合、このパラメーターを
Retainに設定する必要があります。StorageClass を作成します。
kubectl create -f alicloud-nas-sharepath.yaml
コンソール
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
[StorageClasses] ページで、[作成] をクリックします。
表示されるダイアログボックスで、パラメーターを構成し、[OK] をクリックします。
次の表に主要な構成を示します。
構成
説明
例
[名前]
StorageClass の名前。フォーマット要件については UI を参照してください。
alicloud-nas-sharepath[PV タイプ]
[NAS] を選択します。
[NAS]
[マウントポイントの選択]
NAS ファイルシステムのマウントポイントのアドレス。
0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com[ボリュームモード]
ボリュームのアクセスモード。この例では、sharepath メソッドを使用するために [共有ディレクトリ] を選択します。PV が作成されるとき、実際のディレクトリは作成されません。代わりに、StorageClass で指定されたパスが使用されます。これは、各 PV が同じ NAS ディレクトリにマッピングされることを意味します。このメソッドは、名前空間をまたいでディレクトリを共有する必要があるシナリオに最適です。
[共有ディレクトリ]
[マウントパス]
マウントする NAS ファイルシステム上のサブディレクトリ。
設定しない場合、デフォルトでルートディレクトリがマウントされます。
指定したディレクトリが存在しない場合は、自動的に作成されてからマウントされます。
説明ルートディレクトリは、汎用型 NAS ファイルシステムの場合は
/、超高速型 NAS ファイルシステムの場合は/shareです。超高速型 NAS ファイルシステムにサブディレクトリをマウントする場合、pathは/shareで始まる必要があります (例:/share/data)。/sharepath[リクレームポリシー]
sharepath メソッドを使用する場合、このパラメーターを
Retainに設定する必要があります。Retain
[マウントオプション]
NAS ボリュームのマウントオプションで、NFS プロトコルのバージョンを含みます。NFSv3 の使用を推奨します。超高速型 NAS は NFSv3 のみをサポートします。
デフォルト値を維持
StorageClass が作成されると、[ストレージクラス] リストで表示できます。
ステップ 3: PVC を作成する
次の例は、2 つの異なる名前空間に PVC を作成する方法を示しています。
kubectl
NAS ボリュームを異なる名前空間の Pod にマウントするには、まず 2 つの名前空間を作成します。
ns1とns2の名前空間を作成します。kubectl create ns ns1 kubectl create ns ns2次の YAML マニフェストを変更し、
pvc.yamlとして保存します。kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns1 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20Gi --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns2 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20Giパラメーター
説明
accessModesボリュームのアクセスモード。デフォルト値は
ReadWriteManyです。ReadWriteOnceとReadOnlyManyもサポートされています。storageClassNameバインドする StorageClass の名前。
storageリクエストするボリュームの容量。
PVC を作成します。
kubectl create -f pvc.yamlPV が作成され、PVC にバインドされたことを確認します。
kubectl get pv出力は、CSI コンポーネントが StorageClass に基づいて自動的に 2 つの PV を作成し、それらを異なる名前空間の 2 つの PVC にバインドしたことを示します。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-0b448885-6226-4d22-8a5b-d0768c****** 20Gi RWX Retain Bound ns1/nas-csi-pvc alicloud-nas-sharepath <unset> 74s nas-bcd21c93-8219-4a11-986b-fd934a****** 20Gi RWX Retain Bound ns2/nas-csi-pvc alicloud-nas-sharepath <unset> 74s
コンソール
ns1とns2の名前空間を作成します。詳細については、「名前空間の作成」をご参照ください。詳細ページの左側のナビゲーションペインで、 を選択します。
ns1名前空間に PVC を作成します。[永続ボリューム要求] ページで、[名前空間] を [ns1] に設定し、[作成] をクリックします。
[PVC の作成] ダイアログボックスで、パラメーターを構成し、[OK] をクリックします。
構成
説明
例
[PVC タイプ]
[NAS] を選択します。
[NAS]
[名前]
PVC の名前。名前空間内で一意である必要があります。
pvc-nas[割り当てモード]
この例では、[StorageClass の使用] を選択します。
[StorageClass の使用]
[既存の StorageClass]
[StorageClass の選択] をクリックし、作成したものを選択します。
alicloud-nas-sharepath[容量]
ボリュームの容量。
20Gi
[アクセスモード]
デフォルト値は [ReadWriteMany] です。[ReadWriteOnce] または [ReadOnlyMany] を選択することもできます。
[ReadWriteMany]
前の手順を繰り返して、
ns2名前空間に別の PVC を作成します。[永続ボリューム要求] ページに戻ります。
ns1とns2の名前空間で、2 つの PVC が自動的に作成された PV にバインドされていることを確認します。
ステップ 4: アプリケーションを作成し、NAS ボリュームをマウントする
2 つの異なる名前空間にアプリケーションを作成し、対応する名前空間の PVC をマウントします。アプリケーションは StorageClass で定義された NAS ディレクトリを共有します。
kubectl
次の YAML コンテンツをそれぞれ
nginx-ns1.yamlとnginx-ns2.yamlとして保存し、必要に応じて変更します。nginx-ns1.yamlとnginx-ns2.yamlの次の構成は、metadata.namespaceの値を除いて同じです。2 つのアプリケーションは、それぞれの名前空間の PVC にバインドされます。nginx-ns1.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nas-test namespace: ns1 spec: 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: nas-pvc mountPath: "/data" volumes: - name: nas-pvc persistentVolumeClaim: claimName: nas-csi-pvcnginx-ns2.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nas-test namespace: ns2 spec: 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: nas-pvc mountPath: "/data" volumes: - name: nas-pvc persistentVolumeClaim: claimName: nas-csi-pvc2 つの Deployment を作成します。
kubectl create -f nginx-ns1.yaml -f nginx-ns2.yamlPod が実行中であることを確認します。
kubectl get pod -A -l app=nginx出力は、同じ NAS ファイルシステムの同じサブディレクトリが異なる名前空間の Pod にマウントされていることを示します。
NAMESPACE NAME READY STATUS RESTARTS AGE ns1 nas-test-b75d5b6bc-ljvfd 1/1 Running 0 2m19s ns2 nas-test-b75d5b6bc-666hn 1/1 Running 0 2m11s
コンソール
クラスター詳細ページの左側のナビゲーションペインで、 に移動します。
ns1名前空間に Deployment を作成し、対応する PVC をマウントします。[名前空間] を [ns1] に設定し、[イメージから作成] をクリックします。
パラメーターを構成してアプリケーションを作成します。
次の表に主要なパラメーターを示します。他のパラメーターはデフォルト設定のままにできます。詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。
構成ステップ
パラメーター
説明
例
[基本情報]
[名前]
Deployment のカスタム名を入力します。名前はコンソールに表示されるフォーマット要件を満たす必要があります。
nginx[レプリカ]
Pod レプリカの数。
2
[コンテナー]
[イメージ名]
アプリケーションのデプロイに使用されるイメージのアドレス。
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6[必須リソース]
必要な vCPU とメモリリソース。
0.25 vCPU, 512 MiB
[ボリューム]
[PVC の追加] をクリックし、パラメーターを構成します。
[マウントソース]: 作成した PVC を選択します。
[コンテナーパス]: NAS ファイルシステムをマウントするコンテナーパスを指定します。
マウントソース:
pvc-nasコンテナーパス:
/data

前の手順を繰り返して、
ns2名前空間に別の Deployment を作成し、対応する PVC をマウントします。[デプロイメント] ページに戻ります。
ns1とns2の名前空間で、2 つの Deployment のステータスを表示します。Pod が実行中であり、対応する PVC がマウントされていることを確認します。
filesystem メソッドを使用したマウント
アプリケーションが NAS ファイルシステムとマウントポイントを動的に作成および削除する必要がある場合は、filesystem メソッドを使用して NAS ボリュームをマウントできます。filesystem タイプの NAS ボリュームを使用する Pod は、1 つのファイルシステムと 1 つのマウントポイントしか作成できません。
デフォルトでは、filesystem タイプの動的にプロビジョニングされた NAS ボリュームが削除されると、ファイルシステムとマウントポイントは保持されます。PV リソースが解放されると同時に NAS ファイルシステムとマウントポイントを解放するには、StorageClass で reclaimPolicy を Delete に、deleteVolume を true に設定する必要があります。
ステップ 1: RAM 権限の付与 (ACK 専用クラスター のみ必須)
ステップ 2: StorageClass を作成する
ステップ 3: PVC を作成する
ステップ 4: アプリケーションを作成し、NAS ボリュームをマウントする
NAS の共有ストレージと永続ストレージの機能を検証する
前の例で作成した複数の Pod は、同じ NAS ファイルシステムをマウントします。次の手順を実行して、機能を検証できます。
1 つの Pod にファイルを作成し、別の Pod でそのファイルを確認して、共有ストレージ機能を検証します。
Deployment を再作成し、新しい Pod のファイルシステムにデータが存在するかどうかを確認して、永続ストレージ機能を検証します。
Pod 情報を表示します。
kubectl get pod | grep nas-testサンプル結果:
nas-test-*****a 1/1 Running 0 40s nas-test-*****b 1/1 Running 0 40s共有ストレージを検証します。
Pod にファイルを作成します。
この例では、
nas-test-*****aPod を使用します。kubectl exec nas-test-*****a -- touch /data/test.txt他の Pod からファイルを表示します。
この例では、
nas-test-*****bPod を使用します。kubectl exec nas-test-*****b -- ls /data期待される出力は、新しく作成されたファイル
test.txtが共有されていることを示します。test.txt
永続ストレージを検証します。
Deployment を再作成します。
kubectl rollout restart deploy nas-testPod が再作成されるまで待ちます。
kubectl get pod | grep nas-testサンプル結果:
nas-test-*****c 1/1 Running 0 67s nas-test-*****d 1/1 Running 0 49s再作成された Pod にログインし、ファイルがファイルシステムにまだ存在するかどうかを確認します。
この例では、
nas-test-*****cPod を使用します。kubectl exec nas-test-*****c -- ls /data次の出力は、ファイルがまだ NAS ファイルシステムに存在し、再作成された Pod のマウントディレクトリからアクセスできることを示しています。test.txt
test.txt
よくある質問
NAS ボリュームのマウントまたは使用中に問題が発生した場合は、以下をご参照ください。
リファレンス
Container Network File System (CNFS) を使用して、NAS ファイルシステムを独立して管理し、そのパフォーマンスとサービス品質 (QoS) 制御を向上させることができます。詳細については、「CNFS を使用した NAS ファイルシステムの管理 (推奨)」をご参照ください。
subpath メソッドを使用してマウントされた汎用型 NAS ファイルシステムは、ディレクトリクォータ機能をサポートしています。サブディレクトリ PV の容量制限を設定して、リソース使用率を向上させることができます。詳細については、「動的にプロビジョニングされた NAS ボリュームのディレクトリクォータを設定する」をご参照ください。
