您可以使用Amazon EFS 创建具有ReadWriteMany 访问模式的PersistentVolume。
Amazon EKS Announced 于 2019 年 9 月 19 日支持 Amazon EFS CSI 驱动程序,这使得使用标准 Kubernetes 接口为在 AWS 上运行的 EKS 和自我管理的 Kubernetes 集群配置弹性文件存储变得简单。
在 Kubernetes 中运行的应用程序可以
使用 EFS 文件系统在横向扩展组中的 pod 之间共享数据,
或与在 Kubernetes 内部或外部运行的其他应用程序一起使用。
EFS 还可以帮助 Kubernetes 应用程序实现高可用性,因为
所有写入 EFS 的数据都会写入多个 AWS 可用区。
如果 Kubernetes pod 被终止并重新启动,CSI 驱动程序将
重新连接 EFS 文件系统,即使 pod 在
不同的 AWS 可用区。
您可以按照EKS-EFS-CSI user guide 将 Amazon EFS CSI 驱动程序部署到 Amazon EKS 集群,基本上是这样的:
第 1 步:部署 Amazon EFS CSI 驱动程序
kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"
注意:此命令需要 1.14 或更高版本的 kubectl。
第 2 步:为您的 Amazon EKS 集群创建 Amazon EFS 文件系统
步骤 2.1:为您的 Amazon EFS 挂载点创建一个允许入站 NFS 流量的安全组。
第 2.2 步:向您的安全组添加一条规则,以允许来自您的 VPC CIDR 范围的入站 NFS 流量。
步骤 2.3:创建配置了您刚刚创建的安全组的 Amazon EFS 文件系统。
现在您可以在 EKS Kubernetes 项目中使用具有 ReadWriteMany 访问模式的 EFS 以及以下示例清单文件:
1. efs-storage-class.yaml:创建存储类
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: efs-sc
provisioner: efs.csi.aws.com
kubectl apply -f efs-storage-class.yaml
2。 efs-pv.yaml:创建 PersistentVolume
apiVersion: v1
kind: PersistentVolume
metadata:
name: ftp-efs-pv
spec:
storageClassName: efs-sc
persistentVolumeReclaimPolicy: Retain
capacity:
storage: 10Gi # Doesn't really matter, as EFS does not enforce it anyway
volumeMode: Filesystem
accessModes:
- ReadWriteMany
csi:
driver: efs.csi.aws.com
volumeHandle: fs-642da695
注意:您需要将 volumeHandle 值替换为您的 Amazon EFS 文件系统 ID。
3. efs-pvc.yaml:创建 PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ftp-pv-claim
labels:
app: ftp-storage-claim
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: efs-sc
应该是这样的。详细说明请参考上述official user guide,您也可以在其中找到示例应用来验证您的设置。