首先在这个问题上加上一些背景。
EKS
版本的1.15
集群EFS
-EKS
security group
/ mount target
等正常工作CSI
中EFS
的{{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
}
}
}
}
接入点的配置如下
这是一个限制吗?我错过了什么吗?
我一直在寻找此解决方案efs-provisioner,但我看不出此当前配置将解决什么问题。
答案 0 :(得分:1)
您需要使用更新的 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/
不起作用的原因。