Menu Close
5.7.6. AWS EFSの動的プロビジョニング
AWS EFS CSI ドライバーは、他のCSIドライバーとは異なる形態の動的プロビジョニングをサポートしています。既存のEFSボリュームのサブディレクトリとして新しいPVをプロビジョニングします。PVはお互いに独立しています。しかし、これらはすべて同じEFSボリュームを共有しています。ボリュームが削除されると、そのボリュームからプロビジョニングされたすべてのPVも削除されます。EFS CSIドライバーは、そのようなサブディレクトリごとにAWSアクセスポイントを作成します。AWS アクセスポイントの制限により、1つのStorageClass
/EFSボリュームから動的にプロビジョニングできるPVは120までとなります。
なお、PVC.spec.resources
はEFSでは強制されません。
以下の例では、5GiBの容量を要求しています。しかし、作成されたPVは無限であり、どんな量のデータ(ペタバイトのような)も保存することができます。ボリュームに大量のデータを保存してしまうと、壊れたアプリケーション、あるいは不正なアプリケーションにより、多額の費用が発生します。
AWSのEFSボリュームサイズのモニタリングを使用することを強く推奨します。
前提条件
手順
動的プロビジョニングを有効にするには、以下の手順を実施します。
以下のように
StorageClass
を作成します。kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: efs-sc provisioner: efs.csi.aws.com parameters: provisioningMode: efs-ap 1 fileSystemId: fs-a5324911 2 directoryPerms: "700" 3 gidRangeStart: "1000" 4 gidRangeEnd: "2000" 5 basePath: "/dynamic_provisioning" 6
- 1
- 動的プロビジョニングを有効にするには、
provisioningMode
にefs-ap
を指定する必要があります。 - 2
fileSystemId
には、上記で手動で作成したEFSボリュームのIDを指定してください。- 3
directoryPerms
は、ボリュームのルートディレクトリのデフォルトパーミッションです。この場合、ボリュームには所有者のみがアクセスできます。- 4 5
gidRangeStart
とgidRangeEnd
は、AWSアクセスポイントのGIDを設定する際に使用するPOSIXグループID(GID)の範囲を設定します。指定しない場合、デフォルトの範囲は50000 - 7000000です。プロビジョニングされた各ボリューム、つまりAWSのアクセスポイントには、この範囲からの固有GIDが割り当てられます。- 6
basePath
は、動的にプロビジョニングされたボリュームを作成する際に使用されるEFSボリューム上のディレクトリです。この場合、EFSボリューム上に「/dynamic_provisioning/<random uuid>」としてPVがプロビジョニングされます。PVを使用するポッドには、そのサブディレクトリのみがマウントされます。
注記クラスタ管理者は、それぞれが異なるEFSボリュームを使用する複数の
StorageClasses
を作成することができます。上記で作成した
StorageClass
を参照して、通常通りPVC(またはStatefulSetやTemplate)を作成します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test spec: storageClassName: efs-sc accessModes: - ReadWriteMany resources: requests: storage: 5Gi
動的プロビジョニングの設定に問題がある場合は、AWS EFS troubleshootingを参照してください。