从私有GKE群集连接到公共云SQL [英] Connecting to public Cloud SQL from a private GKE cluster

查看:20
本文介绍了从私有GKE群集连接到公共云SQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用cloud-sql-proxy从GKE集群连接到有公网IP的云SQL实例。我使用以下命令创建了我的群集:

gcloud services enable compute.googleapis.com
gcloud services enable container.googleapis.com
gcloud container clusters create my-cluster 
  --disk-size=10GB 
  --machine-type=e2-small 
  --node-locations=us-central1-b,us-central1-c,us-central1-f 
  --num-nodes=1 
  --preemptible 
  --release-channel=regular 
  --workload-pool=my-production.svc.id.goog 
  --zone=us-central1-f 
  --no-enable-master-authorized-networks 
  --enable-ip-alias 
  --enable-private-nodes 
  --master-ipv4-cidr 172.16.0.32/28

我使用以下命令创建了我的云SQL:

gcloud sql instances create my-db 
  --database-version=POSTGRES_12 
  --region=us-central1 
  --storage-auto-increase 
  --storage-size=10 
  --storage-type=SSD 
  --tier=db-f1-micro

我还使用以下命令设置了一个服务帐户:

gcloud iam service-accounts create my-service-account
gcloud iam service-accounts add-iam-policy-binding 
  --role=roles/iam.workloadIdentityUser 
  --member="serviceAccount:my-production.svc.id.goog[default/my-service-account]" 
  my-service-account@my-production.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding my-production 
  --member serviceAccount:"my-service-account@my-production.iam.gserviceaccount.com" 
  --role "roles/cloudsql.client"

实例中cloud-sql-proxy的侧车容器设置如下:

      - name: cloud-sql-proxy
        image: gcr.io/cloudsql-docker/gce-proxy:1.20.2
        command:
          - "/cloud_sql_proxy"
          - "-instances=my-production:us-central1:my-db=tcp:5432"
          - "-term_timeout=20s"

尽管如此,当我的应用程序尝试连接到Cloud SQL实例时,我在cloud-SQL-Proxy日志中看到以下错误:

2021/03/19 21:30:02 couldn't connect to "my-production:us-central1:my-db": dial tcp MY_DB_PUBLIC_IP:3307: connect: connection timed out

查看后发现实例可以访问Internet(我可以访问www.google.com),应该可以连接到云SQL的公网IP。我可以在笔记本电脑上毫无问题地使用cloud-sql-proxy并连接到那里的实例。我遗漏了什么?我还可以检查什么?

我找到GKE private cluster and cloud sql proxy connection,但我启用了SQL管理API。Connection between Private GKE and Cloud SQL仅谈论不能访问Internet的GKE群集。

推荐答案

结论是:

  • 请勿使用www.google.com检查节点是否可以在GCP的基础设施上访问Internet。似乎www.google.com被视为GCP上的内部流量。尝试在专用GKE群集上获取www.amazon.com失败。
  • 要从内网GKE集群连接到云SQL,请使用云SQL内网IP(请记住在cloud-sql-proxy中添加-ip_address_types=PRIVATE)。

这篇关于从私有GKE群集连接到公共云SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆