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

升级cloudsql-proxy至v1.31.0后报instanceDoesNotExist错误

问题原因

该报错和你使用M1设备、拉取ARM架构适配的v1.31.0版本镜像无直接关联,v1.31.0版本的Cloud SQL Proxy收紧了启动参数校验规则、调整了Cloud SQL API的调用逻辑,旧版本可兼容的不规范配置在该版本下会直接触发instanceDoesNotExist 404错误,常见触发场景如下:

  • 实例连接名不完整:旧版本对-instances参数容忍度较高,支持模糊匹配简写的实例信息,v1.31强制要求所有实例必须填写项目ID:实例所在区域:实例名的三段式完整连接名,任意字段缺失、拼写错误都会直接返回实例不存在。
  • 多实例分隔符使用错误:旧版本支持空格分隔多个实例连接名,v1.31仅识别英文逗号作为多实例分隔符。如果参数里用空格分隔多实例,代理会把空格后的内容识别为其他启动参数,实际传入的实例名是截断后的无效字符串,触发404。
  • 服务账号权限/归属错误:-credential_file指定的服务账号如果不属于实例所在项目,或者未被授予Cloud SQL Client角色,API不会返回权限不足错误,会直接返回实例不存在响应。
  • 私有IP场景参数缺失:如果目标Cloud SQL实例仅开启私有IP、未分配公网IP,v1.31默认走公网探测实例,未指定私有IP连接参数时会探测失败,抛出实例不存在错误。
排查解决步骤
  1. 修正-instances参数格式
    直接从Cloud SQL控制台实例详情页复制官方给出的完整实例连接名,不要手动拼写。多实例场景下,所有实例连接名之间仅用英文逗号分隔,不要加多余空格,正确配置示例:
    - command:
      - /cloud_sql_proxy
      - --dir=/cloudsql
      - -instances=proj-123:asia-southeast1:db-main,proj-123:asia-southeast1:db-log
      - -credential_file=/credentials/sa-key.json
    
  2. 校验凭证有效性
    进入运行中的代理Pod,执行以下命令验证凭证是否有权限访问目标实例:
    kubectl exec -it <db-proxy的pod名称> -- sh
    # 激活挂载的服务账号
    gcloud auth activate-service-account --key-file=<配置里的credential_file路径>
    # 拉取目标项目下的Cloud SQL实例列表
    gcloud sql instances list --project=<目标实例所属项目ID>
    
    如果返回的实例列表中找不到目标实例,先确认挂载的凭证文件是否正确,再给对应服务账号绑定目标项目的Cloud SQL Client角色即可。
  3. 补全私有IP连接参数
    如果目标实例仅开放私有IP,在启动参数中新增以下配置,同时确认集群VPC和Cloud SQL实例的私有网络连通:
    - -ip_address_types=PRIVATE
    
  4. 开启debug日志定位解析问题
    如果以上步骤都没解决,在启动参数中加-log_debug_stdout=true,重启Pod后查看日志中打印的实际请求的实例名称,确认是否存在参数解析截断、特殊字符转义导致的实例名错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:33:29