EKS部署Open Metadata时EFS挂载失败:无法解析文件系统地址
解决EKS中EFS CSI驱动无法解析域名的挂载问题
核心问题定位
从报错和你的测试结果来看,问题本质是Pod无法解析EFS的域名fs-***.efs.my-region-code.amazonaws.com,但能连通挂载目标IP,说明DNS解析环节出现异常,结合EKS多节点环境,可从以下方向排查修复:
排查修复步骤
1. 验证EFS挂载目标的基础配置
- 确认EFS挂载目标必须创建在EKS集群所在VPC的私有子网中,且每个挂载目标对应集群节点所在的可用区
- 检查挂载目标安全组:允许集群节点安全组的NFS(2049端口)入站流量,同时允许出站的DNS(53端口UDP/TCP)流量
2. 修复Pod的DNS配置异常
既然Pod能通IP但解析不了域名,优先排查DNS链路:
- 检查CoreDNS状态:
执行kubectl get configmap coredns -n kube-system查看配置,确认无自定义拦截规则;若配置异常,执行kubectl rollout restart deployment coredns -n kube-system重启服务 - 验证Pod DNS策略:
查看故障Pod的yaml配置,确认dnsPolicy为默认的ClusterFirst;若自定义了dnsConfig,需添加VPC内置DNS服务器(地址为VPC网段+2,比如VPC网段10.0.0.0/16,DNS就是10.0.0.2) - Pod内直接测试DNS:
进入故障Pod:kubectl exec -it <pod-name> -- /bin/bash
执行nslookup fs-***.efs.my-region-code.amazonaws.com,若返回NXDOMAIN说明DNS解析失败;再手动指定VPC DNS测试:nslookup fs-***.efs.my-region-code.amazonaws.com 10.0.0.2(替换为你的VPC DNS地址),若能解析则说明Pod DNS配置有误
3. 绕过DNS,直接用IP挂载EFS
如果DNS问题暂时无法快速修复,可直接在PV中指定挂载目标IP,绕过域名解析:
apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc csi: driver: efs.csi.aws.com volumeHandle: fs-*** volumeAttributes: mountOptions: "addr=<efs-mount-target-ip>"
将<efs-mount-target-ip>替换为你实际的EFS挂载目标私有IP即可
4. 多节点环境的子网与节点关联检查
- 确认集群所有节点都在EFS挂载目标所在子网内,或节点子网与挂载目标子网有路由连通
- 检查节点安全组:允许出站到EFS挂载目标的2049端口,以及出站到DNS服务器的53端口
- 若问题间歇性出现,可能是部分节点DNS配置异常,可尝试重启异常节点或重新部署节点组
内容的提问来源于stack exchange,提问作者Lucas Abreu
相关产品推荐
相关产品推荐

