EKS使用aws-efs-csi-driver动态置备EFS卷指定root权限无效问题
问题原因
你使用的aws-efs-csi-driver v1.3.0版本中,EFS接入点(efs-ap)模式的动态置备默认限定UID/GID分配范围为50000-60000,且不会读取StorageClass中配置的uid、gid参数,所以会自动分配50004这类范围中的ID,导致权限不符合预期。
解决方法
方法1:升级CSI驱动版本(推荐)
将aws-efs-csi-driver升级到v1.4.0及以上版本,该版本开始支持自定义UID/GID分配范围,放开限制后你配置的uid: "0"、gid: "0"即可生效。
修改后的StorageClass配置参考:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: test-sc provisioner: efs.csi.aws.com parameters: provisioningMode: efs-ap fileSystemId: fs-ddd8b9e9 directoryPerms: "775" uid: "0" gid: "0" gidAllocateRange: "0-65535" # 新增参数,放开ID分配范围 reclaimPolicy: Retain mountOptions: - tls
注意:配置更新后需要删除旧的PVC、PV,以及EFS控制台中自动生成的旧接入点,重新创建资源后即可生效。
方法2:静态置备(不升级驱动可用)
如果暂时无法升级驱动,可以手动创建EFS接入点后用静态方式挂载:
- 登录AWS EFS控制台,找到文件系统
fs-ddd8b9e9,手动创建接入点:- 根目录路径自定义,例如
/test-root - 所有者用户ID填
0,所有者组ID填0 - 根目录权限填
775
- 根目录路径自定义,例如
- 创建静态PV,绑定刚才创建的接入点:
apiVersion: v1 kind: PersistentVolume metadata: name: efs-root-pv spec: capacity: storage: 50Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: test-sc csi: driver: efs.csi.aws.com volumeHandle: fs-ddd8b9e9::fsap-xxxxxxxxxxxxxx # 替换为你手动创建的接入点ID
- 原有PVC无需修改,创建后会自动绑定该PV,挂载后目录权限即为
root:root。
内容的提问来源于stack exchange,提问作者Xetius
相关产品推荐
相关产品推荐

