我正在尝试为PostgreSQL设置云SQL SQL代理Docker映像,如下所述。我可以将我的应用程序连接到代理Docker映像,但代理时间出了。我怀疑这是我的凭证或港口,那么我该如何调试并找出它是否有效?这就是我项目
kubectl create secret generic cloudsql-instance-credentials --from-file=credentials.json=my-account-credentials.json
我的部署规格段:
spec:
containers:
- name: mara ...
- name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.11
command: ["/cloud_sql_proxy",
"-instances=<MY INSTANCE NAME>=tcp:5432",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-instance-credentials
mountPath: /secrets/cloudsql
readOnly: true
volumes:
- name: cloudsql-instance-credentials
secret:
secretName: cloudsql-instance-credentials
我的Cloudsql-Proxy的日志显示了一个超时:
2019/05/13 15:08:25 using credential file for authentication; email=646092572393-compute@developer.gserviceaccount.com
2019/05/13 15:08:25 Listening on 127.0.0.1:5432 for <MY INSTANCE NAME>
2019/05/13 15:08:25 Ready for new connections
2019/05/13 15:10:48 New connection for "<MY INSTANCE NAME>"
2019/05/13 15:10:58 couldn't connect to <MY INSTANCE NAME>: dial tcp <MY PRIVATE IP>:3307: getsockopt: connection timed out
问题:
i将5432指定为我的端口,但是如上所述,它碰到3307。这是正常的,如果不是正常,我如何指定5432?
如何检查我的凭据是否有问题?我的凭据文件来自我的服务帐户
123-compute@developer.gserviceaccount.com
当我进入云SQL控制台时,显示的服务帐户是p123-<somenumber>@gcp-sa-cloud-sql.iam.gserviceaccount.com
。他们看起来不一样吗?这有区别吗?
如果我在公共IP上提供云SQL实例,则可以使用。
i将5432指定为我的端口,但是如上所见,它是 击中3307
代理在您指定的端口(在这种情况下为5432
(上本地聆听,并通过端口3307连接到您的云SQL实例。这是预期的和正常的。
如何检查我的凭据是否有问题?
如果云SQL实例不存在,或者服务帐户无法访问,则代理将返回授权错误。连接超时错误意味着它未能到达云SQL实例。
我的凭据文件来自我的服务帐户123-compute@developer.gserviceaccount.com和当我进入Cloud SQL Console时显示的服务帐户是p123-@gcp-sa-cloud-sql.iam.gserviceaccount.com。他们看起来不一样吗?
一个只是文件的名称,另一个是服务帐户本身的名称。文件的名称不必匹配服务帐户的名称。您可以在服务帐户页面上查看服务帐户的名称和IAM角色。
2019/05/13 15:10:58无法连接到:Dial TCP:3307:getsockopt:连接时间
此错误意味着代理未能建立与实例的网络连接(通常是因为当前位置的路径不存在(。有两个常见原因:
首先,确保没有防火墙或端口3307上的外站连接的东西。
第二,由于您使用的是私有IP,因此您需要确保您在满足网络要求上运行代理的资源。
代理侦听端口3307。
端口3307由Cloud SQL auth代理使用来连接到云SQL SQL Auth Proxy Server。-https://cloud.google.com/sql/docs/postgres/connect-admin-proxy#troubleshooting
您可能需要创建以下防火墙:
- 方向:出口
- 在比赛中采取行动:允许
- 目的地过滤器:IP范围
0.0.0.0/0
- 协议和端口:TCP:3307&amp;TCP:5432