File Storage NAS ボリュームは、ビッグデータ分析、データ共有、Web アプリケーション、ログの永続化などのシナリオに最適です。静的にプロビジョニングされた永続ボリュームを使用することに加えて、永続ボリューム要求 (PVC) を作成し、StorageClass を設定してストレージリソースを動的に割り当てることができます。これにより、システムが自動的に永続ボリューム (PV) をプロビジョニングするため、事前にストレージリソースを手動で作成および設定する必要がなくなります。動的にプロビジョニングされた NAS ボリュームは、subpath、sharepath、または filesystem メソッドを使用してマウントできます。
前提条件
CSI コンポーネントは、デフォルトでクラスターにインストールされています。コンポーネントをアップグレードするには、「CSI コンポーネントのアップグレード」をご参照ください。
説明FlexVolume は非推奨です。クラスターが FlexVolume コンポーネントを使用している場合、ボリュームをマウントする前に FlexVolume から CSI に移行する必要があります。詳細については、「FlexVolume から CSI への移行」をご参照ください。ストレージコンポーネントのタイプは、 ページの [ストレージ] タブで確認できます。
File Storage NAS サービスが有効化されています。
初めて File Storage NAS を使用する場合は、File Storage NAS 製品ページ の画面上の指示に従ってサービスを有効化してください。
制限事項
SMB プロトコルを使用する NAS ファイルシステムのマウントはサポートされていません。
NAS ファイルシステムは、同じ VPC 内の Pod にのみマウントできます。VPC 間のマウントはサポートされていません。
説明同じ VPC 内であれば、NAS ボリュームは異なるゾーンをまたいでマウントできます。
汎用型 NAS と超高速型 NAS ファイルシステムでは、接続性、ファイルシステムの数、プロトコルタイプに関して異なる制約があります。詳細については、「制限事項」をご参照ください。
注意事項
NAS は共有ストレージを提供します。1 つの NAS ボリュームを複数の Pod にマウントできます。複数の Pod が同時にボリュームにデータを書き込む場合、アプリケーション側でデータ整合性を確保する必要があります。
NAS への同時書き込みに関する制限事項の詳細については、「複数のプロセスまたはクライアントが同時にログファイルにデータを書き込む際に発生する可能性のある例外を防ぐにはどうすればよいですか?」および「NFS ファイルシステムへのデータ書き込みの遅延を解決するにはどうすればよいですか?」をご参照ください。
アプリケーションテンプレートで
securityContext.fsgroupパラメーターを設定すると、kubelet はボリュームのマウント後にchmodまたはchown操作を実行します。これにより、マウント時間が増加します。securityContext.fsgroupパラメーターを設定済みで、マウント時間を短縮したい場合は、「NAS ボリュームのマウント時間の延長」をご参照ください。NAS ボリュームをマウントした後は、NAS マウントポイントを削除しないでください。削除すると、システムが応答しなくなる可能性があります。
マウント方法
StorageClass の volumeAs パラメーターは、PV と NAS ファイルシステムまたはそのサブディレクトリとの関係を定義します。要件に応じてマウント方法を選択できます。
マウント方法 | 説明 | ユースケース |
サブディレクトリタイプの PV を作成します。各 PV は、同じ NAS ファイルシステム内の一意のサブディレクトリに対応します。 |
| |
StorageClass で指定された同じ共有ディレクトリを指すすべての PV を作成します。PV ごとに新しいサブディレクトリは作成されません。 | 異なる名前空間にまたがる複数の Pod が、同じ NAS サブディレクトリをマウントする必要がある場合。 | |
filesystem メソッドを使用したマウント (非推奨) | PV ごとに NAS ファイルシステムを自動的に作成します。1 つの PV は NAS ファイルシステム全体に対応します。 | 動的に作成および削除されるマウントポイントとともに、個別の NAS ファイルシステムが使用される場合。 |
subpath メソッドを使用したマウント
subpath メソッドには、CSI コンポーネントのバージョン 1.31.4 以降が必要です。コンポーネントをアップグレードするには、「CSI コンポーネントのアップグレード」をご参照ください。
ステップ 1: NAS ファイルシステムとマウントポイント情報の取得
NAS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
NAS ファイルシステムとマウントポイントを作成します。
NFS プロトコルを使用する NAS ファイルシステムのみマウントできます。マウントポイントとクラスターノードは同じ VPC 内にある必要があります。
既存の NAS ファイルシステムがある場合は、要件を満たしていることを確認してください。
利用可能な NAS ファイルシステムがない場合は、要件を満たす 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パラメーター
説明
mountOptionsNFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例:
vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。parametersvolumeAsマウント方法。この例では、値を
subpathに設定して、サブディレクトリタイプの PV を作成します。1 つの PV は、NAS ファイルシステム内の 1 つのサブディレクトリに対応します。serverマウントする NAS ファイルシステムのマウントポイントアドレスとサブディレクトリ。フォーマットは
<NAS マウントポイントアドレス>:<マウントディレクトリ>です。サブディレクトリを指定しない場合、デフォルトでルートディレクトリ/がマウントされます。archiveOnDeletereclaimPolicyがDeleteに設定されている場合に、バックエンドのストレージデータを削除するかどうかを指定します。NAS は共有ストレージサービスであるため、このパラメーターは確認のために追加されています。true(デフォルト): ディレクトリまたはファイルは保持され、archived-{pvName}.{timestamp}に名前が変更されます。false: バックエンドのストレージリソースは完全に削除されます。
説明高トラフィックのワークロードの場合、このパラメーターを false に設定することは推奨されません。詳細については、「動的にプロビジョニングされた NAS ボリュームを使用すると、コントローラーのタスクキューがいっぱいになり、新しい PV を作成できなくなる」をご参照ください。
バックエンドのストレージデータを完全に削除するには、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 ファイルシステムでのみサポートされます。このパラメーターを有効にすると、StorageClass によって動的に作成される PV にディレクトリクォータが設定され、利用可能な容量が制限されます。また、PVC を更新してボリューム容量を拡張することもできます。詳細については、「動的にプロビジョニングされた NAS ボリュームのディレクトリクォータの設定」をご参照ください。
説明NAS クォータは非同期で有効になります。PV が動的に作成された後、ディレクトリクォータがすぐに有効にならない場合があります。短時間で大量のデータを書き込むと、ストレージ使用量が容量制限を超える可能性があります。NAS ディレクトリクォータの詳細については、「ディレクトリクォータ」をご参照ください。
StorageClass を作成します。
kubectl create -f alicloud-nas-subpath.yaml
コンソール
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[ストレージクラス] ページで、[作成] をクリックします。
[作成] ダイアログボックスで、StorageClass のパラメーターを設定し、[作成] をクリックします。
以下は主要な設定項目です。
設定項目
説明
値の例
名前
StorageClass の名前。フォーマット要件の詳細については、コンソールの指示をご参照ください。
alicloud-nas-subpath
永続ボリュームタイプ
[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 のリクレームポリシー。偶発的なデータ損失を防ぐために、[保持] を選択することを推奨します。
[削除]: このパラメーターは
archiveOnDeleteと一緒に設定する必要があります。コンソールで [削除] を選択しても有効になりません。これは、PVC を削除しても PV と NAS ボリューム上のデータが削除されないことを意味します。これは、基盤となるarchiveOnDeleteパラメーターを UI から設定できないためです。archiveOnDeleteを設定するには、YAML マニフェストを使用して PV を作成します。YAML テンプレートについては、kubectl タブをご参照ください。[保持]: PVC が削除されても、PV と NAS ボリューム上のデータは削除されません。手動で削除する必要があります。
保持
[マウントオプション]
NFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例:
vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。デフォルト値を保持
StorageClass が作成された後、[ストレージクラス] リストで表示できます。
ステップ 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 を表示します。
kubectl get pvc出力は、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 の作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックします。
設定項目
説明
値の例
PVC タイプ
NAS を選択します。
NAS
名前
PVC の名前。名前は名前空間内で一意である必要があります。
pvc-nas
割り当てモード
この例では、[StorageClass を使用] を選択します。
StorageClass を使用
既存のストレージクラス
[StorageClass を選択] をクリックし、前のステップで作成した StorageClass を選択します。
alicloud-nas-subpath
容量
ボリュームの容量。この設定は、アプリケーションが使用できる最大容量を制限するものではありません。
20Gi
アクセスモード
デフォルト値は [ReadWriteMany] です。[ReadWriteOnce] または [ReadOnlyMany] を選択することもできます。
ReadWriteMany
ステップ 4: アプリケーションの作成と NAS ボリュームのマウント
kubectl
2 つのデプロイメントを作成し、同じ PVC をマウントします。これにより、同じ NAS ファイルシステム内の同じサブディレクトリを共有できます。
同じ NAS ファイルシステムの異なるサブディレクトリを複数の Pod にマウントするには、サブディレクトリごとに異なる StorageClass と PVC を作成し、それらの PVC を Pod にマウントします。
次の YAML コンテンツを変更し、ファイルを nginx-1.yaml と nginx-2.yaml として保存します。
次の 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 つのデプロイメントを作成します。
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 つのデプロイメントを作成します。これにより、NAS ファイルシステム内の単一のサブディレクトリを共有できます。
左側のナビゲーションウィンドウで、 を選択します。
[ステートレス] ページで、[イメージから作成] をクリックします。
パラメーターを設定してアプリケーションを作成します。
次の表に主要なパラメーターを示します。他のパラメーターはデフォルト設定のままにできます。詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。
設定項目
パラメーター
説明
例
基本情報
名前
デプロイメントのカスタム名を入力します。名前はコンソールに表示されるフォーマット要件を満たす必要があります。
deployment-nas-1
[レプリカ数]
デプロイメントのレプリカ数。
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 プロトコルを使用する NAS ファイルシステムのみマウントできます。マウントポイントとクラスターノードは同じ VPC 内にある必要があります。
既存の NAS ファイルシステムがある場合は、要件を満たしていることを確認してください。
利用可能な NAS ファイルシステムがない場合は、要件を満たす NAS ファイルシステムとマウントポイントを作成してください。詳細については、「ファイルシステムの作成」および「マウントポイントの管理」をご参照ください。
マウントポイント情報を取得します。
ファイルシステム ID をクリックします。左側のナビゲーションウィンドウで、[マウントと使用] をクリックします。
[マウントポイント] セクションで、マウントポイントのステータスが [利用可能] であることを確認し、マウントポイントアドレスを取得します。
ステップ 2: StorageClass の作成
kubectl
次の内容を alicloud-nas-sharepath.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パラメーター
説明
mountOptionsNFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例:
vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。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 コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[ストレージクラス] ページで、[作成] をクリックします。
[作成] ダイアログボックスで、StorageClass のパラメーターを設定し、[作成] をクリックします。
主要な設定項目は以下の通りです。
設定項目
説明
例の値
名前
StorageClass の名前。フォーマット要件の詳細については、コンソールの指示をご参照ください。
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に設定する必要があります。保持
[マウントオプション]
NFS プロトコルバージョンを含む、NAS ボリュームのマウントオプション。デフォルトでは、マウントに NFSv3 プロトコルが使用されます。プロトコルバージョンを指定できます (例:
vers=4.0)。異なる NAS タイプでサポートされている NFS プロトコルの詳細については、「NFS プロトコル」をご参照ください。デフォルト値を保持
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要求するボリュームの容量です。
重要デフォルトでは、NAS ボリュームの実際に利用可能な容量は、この構成によって制限されません。容量は NAS ファイルシステムの仕様によって決まります。詳細については、「汎用型 NAS」および「Extreme NAS」をご参照ください。
汎用型 NAS ファイルシステムを使用し、StorageClass の
allowVolumeExpansionをtrueに設定した場合、CSI コンポーネントはこの構成に基づいてディレクトリクォータを設定し、NAS ボリュームの利用可能な容量を制限します。
PVC を作成します。
kubectl create -f pvc.yamlPV を表示します。
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 の名前空間を作成します。詳細については、「名前空間の作成」をご参照ください。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
ns 名前空間に永続ボリューム要求 (PVC) を作成します。
[永続ボリューム要求] ページで、[名前空間] を [ns1] に設定し、[作成] をクリックします。
[PVC の作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックします。
設定項目
説明
値の例
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 として保存します。
次の 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 つのデプロイメントを作成します。
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 名前空間にデプロイメントを作成し、対応する PVC をマウントします。
[名前空間] を [ns1] に設定し、[イメージから作成] をクリックします。
パラメーターを設定してアプリケーションを作成します。
次の表に主要なパラメーターを示します。他のパラメーターはデフォルト設定のままにできます。詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。
設定項目
パラメーター
説明
例
基本情報
名前
デプロイメントのカスタム名を入力します。名前はコンソールに表示されるフォーマット要件を満たす必要があります。
nginx
レプリカ
デプロイメントのレプリカ数。
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 名前空間に別のデプロイメントを作成し、対応する PVC をマウントします。
[ステートレス] ページに戻り、ns1 と ns2 名前空間の 2 つのデプロイメントのステータスを確認して、Pod が実行中であり、対応する PVC がアタッチされていることを確認します。
filesystem メソッドを使用したマウント
アプリケーションが NAS ファイルシステムとマウントポイントを動的に作成および削除する必要がある場合は、filesystem メソッドを使用して NAS ボリュームをマウントします。filesystem メソッドを使用する場合、各 PV は新しい NAS ファイルシステムとマウントポイントに対応します。
デフォルトでは、filesystem タイプの動的にプロビジョニングされた PV が削除されると、対応する NAS ファイルシステムとマウントポイントは保持されます。PV が削除されたときにファイルシステムとマウントポイントを自動的に削除するには、StorageClass で reclaimPolicy を Delete に、deleteVolume を true に設定する必要があります。
ステップ 1: RAM 権限の設定と付与 (ACK 専用クラスター のみ必須)
ステップ 2: StorageClass の作成
ステップ 3: PVC の作成
ステップ 4: アプリケーションの作成と NAS ボリュームのマウント
NAS の共有ストレージと永続ストレージの検証
前の例で作成した Pod は、同じ NAS ファイルシステムをマウントします。次の操作を実行してストレージを検証できます:
1 つの Pod にファイルを作成し、別の Pod からそのファイルを表示して、共有ストレージを検証します。
デプロイメントを再作成し、新しく作成された 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-*****aという名前の Pod を使用します:kubectl exec nas-test-*****a -- touch /data/test.txt他の Pod からファイルを表示します。
次の例では、
nas-test-*****bという名前の Pod を使用します:kubectl exec nas-test-*****b -- ls /data期待される出力は、新しいファイル
test.txtが共有されていることを示しています:test.txt
永続ストレージ機能を検証します。
デプロイメントを再作成します。
kubectl rollout restart deploy nas-testPod を照会し、新しい Pod が作成されるのを待ちます。
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-*****cという名前の Pod を使用します:kubectl exec nas-test-*****c -- ls /data期待される出力は、NAS ファイルシステム内のデータがまだ存在し、新しい Pod のマウントディレクトリから取得できることを示しています:
test.txt
よくある質問
NAS ボリュームのマウントまたは使用中に問題が発生した場合は、トラブルシューティングのために次のトピックをご参照ください。
関連ドキュメント
Container Network File System (CNFS) を使用して、NAS ファイルシステムを独立して管理し、そのパフォーマンスとサービス品質 (QoS) 制御を強化できます。詳細については、「CNFS を使用した NAS ファイルシステムの管理」をご参照ください。
subpath メソッドを使用してマウントされた汎用型 NAS ファイルシステムは、ディレクトリクォータ機能をサポートしています。サブディレクトリ PV の容量制限を設定して、リソース使用率を向上させることができます。詳細については、「動的にプロビジョニングされた NAS ボリュームのディレクトリクォータの設定」をご参照ください。
