使用Terraform连接GCP Cloud Run与Filestore时遇网络问题求助
问题修复与排查方向
修复步骤
- 配置Cloud Run的VPC访问连接器
169.254.8.1是Cloud Run默认的公共出站NAT地址,说明你的服务未配置VPC访问,无法直接访问Filestore的私有内部IP。需在Terraform中为Cloud Run服务关联VPC访问连接器,确保服务与Filestore处于同一VPC网络:
# 创建VPC访问连接器 resource "google_vpc_access_connector" "filestore_connector" { name = "filestore-connector" region = "你的GCP区域" ip_cidr_range = "10.8.0.0/28" # 选择不与Filestore子网重叠的IP段 network = "你的VPC网络名称" } # 为Cloud Run服务配置VPC访问 resource "google_cloud_run_service" "your_service" { # 已有配置... template { spec { # 容器配置... vpc_access_connector { name = google_vpc_access_connector.filestore_connector.name egress = "ALL_TRAFFIC" # 仅需访问私有网络时,可设为"PRIVATE_RANGES_ONLY" } } } }
- 配置Filestore的防火墙规则
确保Filestore所在VPC的防火墙允许来自VPC连接器子网的NFS流量:
- 开放TCP/UDP端口111(RPC)和2049(NFS)的入站权限
- 源地址指定为VPC连接器的子网IP段(如示例中的10.8.0.0/28)
排查方向
- 验证VPC连接器状态:检查连接器是否处于RUNNING状态,若创建失败,通常是IP段与现有子网冲突,需调整
ip_cidr_range。 - 测试Filestore可用性:在同VPC内创建一台VM,使用相同的Filestore IP和挂载命令测试,确认Filestore本身可正常挂载,排除实例自身问题。
- 检查挂载命令参数:确保挂载路径正确(Filestore默认共享路径为
/fileshare),完整命令应为mount -t nfs 10.15.225.10:/fileshare /mnt/filestore,可尝试添加-o nfsvers=3指定NFS版本。 - 确认环境变量传递:检查Terraform中是否正确将Filestore IP注入Cloud Run的环境变量,避免变量名拼写错误或值传递失败。
- 验证Cloud Run出站IP:在服务中添加
curl ifconfig.me命令查看出站地址,若VPC访问配置生效,地址应来自连接器子网,而非169.254.8.1。 - 检查镜像依赖:确认Docker镜像已安装NFS客户端工具(Debian/Ubuntu用
nfs-common,RHEL/CentOS用nfs-utils),否则mount命令无法执行。
内容的提问来源于stack exchange,提问作者Stereo
相关产品推荐
相关产品推荐

