是否可以使用AWS EFS访问点在EKS中安装kubernetes持久卷?

时间:2020-04-23 02:05:19

标签: amazon-web-services kubernetes terraform eks efs

首先在这个问题上加上一些背景。

  • 我有一个{> EKS版本的1.15集群
  • EFS-EKS security group / mount target等正常工作
  • CSIEFS的{​​{1}}驱动程序已安装并按预期工作
  • 我已经使用EKS驱动程序作为预配置程序部署了名为efs-sc的存储类
  • 我可以访问广告连播上的EFS CSI

但是...仅当根路径EFS被定义为/持久卷资源定义中的路径时,它才起作用。

具有Terraform 0.12语法的示例

kubernetes

当我尝试指定访问点的路径时,卷的安装失败。

resource "kubernetes_persistent_volume" "vol" { metadata { name = "my-vol" } spec { capacity = { storage = "15Gi" } access_modes = ["ReadWriteMany"] storage_class_name = "efs-sc" persistent_volume_reclaim_policy = "Recycle" persistent_volume_source { nfs { path = "/" # -> OK it works properly # path = "/access-point-path" -> NOT WORKING server = var.efs-storage-apt-server } } } } 接入点的配置如下

enter image description here

这是一个限制吗?我错过了什么吗?

我一直在寻找此解决方案efs-provisioner,但我看不出此当前配置将解决什么问题。

2 个答案:

答案 0 :(得分:1)

现在有可用的文档:https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/access_points/README.md#create-access-points-in-efs

您需要使用更新的 EFS CSI 驱动程序。访问点在 PersistentVolume 的 volumeHandle 下定义。最近的 EFS CSI 驱动不再支持动态绑定,因此需要为每个 PersistentVolumeClaim 手动创建 PersistentVolume。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: efs-pv1
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: efs-sc
  csi:
    driver: efs.csi.aws.com
    volumeHandle: [FileSystemId]::[AccessPointId]

答案 1 :(得分:0)

似乎正在发生的事情是,挂载的文件系统中不存在路径/access-point-path

使用访问点时,访问点指定的路径将挂载为文件系统的/

让我们假设这是您的 EFS 的状态:

|__ access-point-path/

使用/access-point-path中的访问点将其安装在部署中时,它只会看到一个空文件夹,因为access-point-path文件夹现在是部署的根目录(/) 。没有要绑定的access-point-path文件夹。

这就是/有效而access-point-path/不起作用的原因。