【问题标题】:Cannot access google cloud SQL from google container engine无法从谷歌容器引擎访问谷歌云 SQL
【发布时间】:2015-06-05 11:50:44
【问题描述】:

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

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

但是,在我的本地计算机上连接工作正常(该实例有一个公共 IP,我已将我办公室的 IP 添加到“允许的网络”中)。因此,可以通过 Internet 访问该实例。

我猜数据库的访问控制阻止了我从 gce 网络的访问,但我无法弄清楚如何配置它。

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

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

EDIT2:我还可以从我的 kubernetes 集群中添加所有公共 IP(通过 gcloud compute instances list 获得)并手动将它们添加到云 sql 访问列表中。但是,这似乎不对,不是吗?

【问题讨论】:

  • 嗨,我也有同样的问题。你是怎么处理的?我认为google cloud sql不允许来自google容器引擎的ip,那么在哪里添加ip呢?并添加哪个ip?

标签: google-cloud-sql google-kubernetes-engine


【解决方案1】:

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

【讨论】:

  • 啊,我没看到这篇文章。谢谢。
  • 如果创建 pem 请遵循该教程。那怎么用呢?
  • 这取决于您需要如何使用它。可能需要更多信息。
  • 我在这里问过同样的问题:stackoverflow.com/questions/33773448/…DATABASE_URL 我使用的是完整的字符串连接格式。那么如何添加--ssl-ca、--ssl-cert、--ssl-key选项呢?
【解决方案2】:

您应该使用 GCE 实例的公共 IP 地址来正确允许流量到您的 Cloud SQL 实例(正如您在 EDIT2 中提到的那样)。

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

【讨论】:

  • 是的,可以。问题是我想我想在单个节点上拥有临时 IP。这至少是创建容器引擎集群时的默认设置。此外,我还需要集群中每个节点的静态 IP。但是哦,好吧,容器引擎(和 kubernetes)似乎是最前沿的,所以我想我必须忍受其中的一些。这只是让我有点烦恼......
【解决方案3】:

如果您将 Container Engine 集群的 /14 CIDR 块添加为源地址范围,是否可行?

要查找集群的 CIDR 块,请单击 Google Cloud Console 中的集群名称,然后找到标有“容器地址范围”的行。

【讨论】:

  • 感谢您的建议。不幸的是,它甚至不让我进入它。说“不能将私有网络列入白名单”。
  • 我可以创建一个使用 10.0.0.0/8 或 10.28.0.0/14 作为源范围的防火墙规则。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
  • 2017-02-09
  • 2014-10-30
相关资源
最近更新 更多