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

Asa*_*Asa 7 amazon-web-services kubernetes terraform amazon-efs amazon-eks

首先,先介绍一下这个问题的背景。

  • 我有一个EKS版本 >= 的集群1.15
  • - /EFS等工作正常EKS security groupmount target
  • inCSI的驱动程序已安装并按预期工作EFSEKS
  • 我部署了一个名为efs-sc使用EFS CSI驱动程序作为配置程序的存储类
  • 我可以访问EFSPod 上的音量

/但是......只有当它是被定义为持久卷资源定义中的路径的根路径时,它才有效kubernetes

Terraform 0.12 语法示例

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
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

接入efs点配置如下

在此输入图像描述

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

我正在寻找这个解决方案efs-provisioner但我不知道这将从当前配置中解决什么问题。

hol*_*est 1

似乎发生的情况是/access-point-path您安装的文件系统中不存在该路径。

当您使用访问点时,访问点指定的路径将安装为/文件系统的路径。

假设这是您的EFS的状态:

|__ access-point-path/
Run Code Online (Sandbox Code Playgroud)

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

这就是为什么/有效和access-point-path/无效的原因。