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

Posted

技术标签:

【中文标题】是否可以使用 AWS EFS 访问点在 EKS 中挂载 kubernetes 持久卷?【英文标题】:Is it possible to use AWS EFS access points to mount a kubernetes persistent volume in EKS? 【发布时间】:2020-08-06 05:49:02 【问题描述】:

首先要说明这个问题的背景。

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

但是...它仅在根路径/ 被定义为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
      
    
  

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

efs 接入点是这样配置的

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

我正在寻找这个解决方案efs-provisioner,但我看不出这个当前配置会解决什么问题。

【问题讨论】:

问题解决了吗?我有类似的情况:指定访问点时,EKS 无法挂载 EFS 卷。似乎无法在/var/lib/kubelet/pods/<pod-id>/内创建挂载目录 【参考方案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]

【讨论】:

【参考方案2】:

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

使用接入点时,接入点指定的路径挂载为文件系统的/

假设这是您的 EFS 的状态:

|__ access-point-path/

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

这就是/ 有效而access-point-path/ 无效的原因。

【讨论】:

以上是关于是否可以使用 AWS EFS 访问点在 EKS 中挂载 kubernetes 持久卷?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon EKS 中 EFS 持久性存储

Amazon EKS 中 EFS 持久性存储

AWS EFS 是不是足够快以执行 PHP 代码?

安装EKS EFS CSI在Pod出现之前已超时

在 AWS EFS 上使用 flock 来模拟关键部分是不是安全?

k8s在AWS EKS部署并通过ALB访问k8s Dashboard保姆级教程