You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud Function连接Google VM实例失败求助

排查Cloud Function无法访问VM实例的步骤

以下是针对你的场景的具体排查方向,按优先级排序:

1. 确认Serverless VPC访问连接器的核心配置

  • 检查连接器状态:必须处于RUNNING状态,若为PROVISIONING或ERROR状态,等待恢复或重新创建
  • 核对IP范围:连接器的IP段不能与VM所在子网的IP范围重叠,否则会导致路由冲突
  • 验证CF关联:确认Cloud Function的配置中已正确选择该连接器,若勾选了Allow traffic to private IPs only,确保你请求的是VM的内部IP(而非外部IP)

2. 检查VM实例的网络与系统防火墙

  • 确认VM的内部IP与你在CF代码中请求的地址完全一致,避免拼写错误
  • 验证VM与连接器属于同一个VPC网络,跨VPC访问需要额外配置对等连接,新手优先确保同VPC
  • 检查VM操作系统自带的防火墙(如Ubuntu的ufw、CentOS的firewalld):必须开放5432(PostgreSQL)或80端口给VPC的IP范围(或连接器的IP段),很多新手会忽略系统防火墙,只配置了GCP云防火墙

3. 验证GCP云防火墙规则的有效性

  • 目标匹配:若VM设置了网络标签,防火墙规则的目标必须选择对应的标签;未设置标签则选All instances in network
  • 来源范围:防火墙规则的来源IP范围必须包含Serverless VPC连接器的IP段(或直接覆盖VPC子网范围,如10.0.0.0/16)
  • 方向与端口:规则方向为入站(Ingress),且明确开放5432/80端口,协议选择tcp

4. 测试VPC内部连通性

  • 在同一VPC下创建一个临时测试VM,通过SSH登录后执行以下命令测试:
    • ping目标VM的内部IP:ping 10.x.x.x(替换为你的VM内部IP)
    • 测试端口连通性:telnet 10.x.x.x 5432或nc -zv 10.x.x.x 5432
      如果测试VM能连通,说明VPC内部网络正常,问题出在Cloud Function的配置或代码;如果不通,聚焦VM或防火墙配置

5. 检查Cloud Function的代码与部署

  • 确认代码中请求的是VM的内部IP,而非外部IP(VPC连接器仅支持访问内部IP)
  • 给axios请求添加超时参数,看是否能触发更明确的错误:
    axios.get('http://10.x.x.x', { timeout: 10000 })
    
  • 确认依赖安装:部署时确保axios已正确安装,使用gcloud命令部署会自动安装package.json中的依赖,若手动打包需包含node_modules

6. 查看日志定位问题

  • 查看Cloud Function日志:在GCP控制台→Cloud Functions→你的函数→Logs,查看是否有connection refused(端口未开)或其他错误提示
  • 查看VM系统日志:在VM实例页面→Logs,检查是否有来自Cloud Function的连接请求被拦截的记录

内容的提问来源于stack exchange,提问作者bstras21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:00:18