无法从 google 容器引擎访问 google 云 SQL

Cannot access google cloud SQL from google container engine

我在从 GCE 容器访问云 SQL 实例时仍然遇到问题。当我尝试打开 mysql 时,出现以下错误:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial 
                    communication packet', system error: 0

虽然我的本地计算机连接正常(该实例有一个 public IP,我已将我办公室的 IP 添加到 'allowed Networks')。因此,该实例可以通过 Internet 正常访问。

我猜数据库的访问控制阻止了我从 gce 网络访问,但我不知道如何配置它。

我在 Cloud SQL 控制面板中将我的项目添加到 "Authorized App Engine Applications",但这似乎没有帮助。

编辑: 如果我将“0.0.0.0/0”添加到允许的网络,一切正常。这显然不是我想要的,那么我需要输入什么呢?

EDIT2: 我还可以从我的 kubernetes 集群(通过 gcloud compute instances list 获得)添加所有 public IP,并将它们添加到云端 sql 手动访问列表。但是,这好像不太对吧?

如果您将容器引擎集群的 /14 CIDR 块添加为源地址范围,这行得通吗?

要查找集群的 CIDR 块,请单击 Google Cloud Console 中的集群名称并找到标有 "Container address range" 的行。

您应该使用 GCE 实例的 public IP 地址正确允许流量到您的云 SQL 实例(如您在 EDIT2 中提到的)。

您可以在 Cloud SQL 文档中找到更多信息:https://cloud.google.com/sql/docs/gce-access

recommended solution 是使用与 0.0.0.0/0 CIDR 的 SSL 连接。这是为了限制连接到正确的密钥。我还读到他们不会向您承诺特定的 IP 范围,因此 CIDR /14 有时可能无法正常工作。出于同样的原因,我必须与我的云 SQL 建立 SSL 连接。