CSI プラグインは、subPath を介してマウントされた汎用 NAS のサブディレクトリに対するディレクトリクォータをサポートしており、容量の上限を設定してストレージ使用率を向上させることができます。クォータに達した場合、サービスを中断することなく PVC サイズを増やすことで、サブディレクトリをオンラインで拡張できます。
前提条件
開始する前に、以下を確認してください。
-
クラスターに CSI プラグインのバージョン v1.18.8.45 以降がインストールされていること。アップグレードするには、「csi-plugin と csi-provisioner の更新」をご参照ください。
-
NFS マウントターゲットを持つ汎用 NAS ファイルシステムがあること。ない場合は、「汎用 NAS ファイルシステムの作成」をご参照ください。
-
クラスターノードと同じ VPC 内にマウントターゲットがあり、その [ステータス] が [アクティブ] に設定されていること。ない場合は、新しいマウントターゲットを作成してください。詳細については、「マウントターゲットの管理」をご参照ください。
制限事項
ディレクトリクォータは、以下のすべての条件を満たす、動的にプロビジョニングされた NAS ボリュームでのみサポートされています。
-
プロトコル:NFS
-
NAS タイプ:汎用 NAS
-
マウント方法:subPath
ディレクトリクォータは、静的にプロビジョニングされた NAS ボリュームや、sharepath または filesystem メソッドを使用してマウントされた、動的にプロビジョニングされたボリュームではサポートされていません。
ディレクトリクォータの制限事項の完全なリストについては、「ディレクトリクォータ」をご参照ください。
例
-
以下の YAML コンテンツを編集し、alicloud-nas-quota-sc.yaml として保存します。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-quota-sc mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath # 値を subpath に設定します。 server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com" # NFS プロトコルを使用する汎用 NAS ファイルシステムのマウントターゲット。 archiveOnDelete: "false" path: "/test" volumeCapacity: "true" # ディレクトリクォータ機能を有効にします。 provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Delete allowVolumeExpansion: true # ディレクトリクォータ機能を有効にして、動的にプロビジョニングされたボリュームの拡張を許可します。説明ディレクトリクォータ機能を有効にするには、
allowVolumeExpansionまたはvolumeCapacityをtrueに設定します。allowVolumeExpansionがtrueに設定されている場合、volumeCapacityパラメーターは有効にならず、ディレクトリクォータ機能は有効のままになります。主要なパラメーターを次の表に示します。詳細については、「NAS動的ボリュームの使用」をご参照ください。
パラメーター
説明
parametersvolumeAsこのパラメーターを
subpathに設定して、NAS ファイルシステムのサブディレクトリを PV としてマウントします。この値は、ディレクトリクォータ機能に必須です。serverNAS ファイルシステムのマウントターゲット。マウントターゲットのアドレスを表示するには、「マウントターゲットの管理」をご参照ください。
pathマウントされる NAS ファイルシステムのサブディレクトリ。デフォルト値は
/です。Extreme NAS ファイルシステムの場合、パスは/shareで始まる必要があります。volumeCapacityディレクトリクォータ機能を有効にするかどうかを指定します。
allowVolumeExpansionがtrueに設定されている場合、このパラメーターは有効にならず、クォータ機能は有効のままになります。allowVolumeExpansion汎用 NAS ファイルシステムでのみ利用可能です。このパラメーターを true に設定すると、StorageClass によって動的にプロビジョニングされる PV にクォータが設定されます。
-
StorageClass を作成します。
kubectl apply -f alicloud-nas-quota-sc.yaml
結果の確認
-
手順 2 で StatefulSet によってマウントされた /data ディレクトリに 10 GiB のデータを書き込みます。
dd if=/dev/zero of=10G.txt bs=1M count=10000 -
5~15 分後、サブディレクトリのクォータ詳細を確認します。
-
NAS コンソールにログインします。
-
左側のナビゲーションペインで、を選択します。
-
対象のファイルシステムを見つけ、[操作] 列の
アイコンをクリックし、[クォータ管理] をクリックします。 -
[クォータ管理] ページで、[操作] 列の [クォータの管理] をクリックします。
サブディレクトリには 20 GiB のクォータ制限があり、現在 10 GiB が使用されています。
20 GiB のクォータに達すると、それ以上の書き込みでは
Disk quota exceededエラーが返されます。
-
-
クォータに達したら、ボリュームをオンラインで拡張します。
-
ボリュームを拡張します。
説明ボリューム拡張は実行中のサービスを中断しません。
kubectl patch pvc nas-pvc-nas-sts-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}' -
PV 情報を照会します。
kubectl get pv期待される出力:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nas-63c37cc2-b21e-4b56-b26f-**** 30Gi RWX Delete Bound default/nas-pvc-nas-sts-0 alicloud-nas-quota-sc 25m23s -
PVC 情報を照会します。
kubectl get pvc期待される出力:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nas-pvc-nas-sts-0 Bound nas-63c37cc2-b21e-4b56-b26f-**** 30Gi RWX alicloud-nas-quota-sc 25m10s
-