我仍然无法从GCE容器访问云SQL实例。当我尝试打开mysql时,出现以下错误:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial
communication packet', system error: 0
但是,我的本地计算机上的连接工作正常(该实例具有公共IP,并且我已将我办公室的IP添加到“允许的网络”中)。因此,可以通过互联网访问该实例。
我猜db的访问控制阻止了我对gce网络的访问,但是我无法弄清楚如何配置它。
我将我的项目添加到"授权的App Engine应用程序"在Cloud SQL控制面板中,但似乎没有帮助。
修改 如果我添加" 0.0.0.0/0"对于Allowed Networks,一切运作良好。这显然不是我想要的,所以我需要输入什么呢?
EDIT2:我还可以从我的kubernetes群集中添加所有公共IP(通过gcloud compute instances list
获取)并手动将它们添加到云sql访问列表中。但是,这似乎不对,是吗?
答案 0 :(得分:4)
recommended solution是使用与0.0.0.0/0 CIDR的SSL连接。这是为了限制与正确密钥的连接。我还读到他们不会向您承诺特定的IP范围,因此CIDR / 14可能无法工作一段时间。出于同样的原因,我不得不与我的Cloud SQL建立SSL连接。
答案 1 :(得分:2)
您应该使用GCE实例的公共IP地址来正确地允许流向您的Cloud SQL实例(如您在EDIT2中所述)。
您可以在Cloud SQL文档中找到更多信息:https://cloud.google.com/sql/docs/gce-access
答案 2 :(得分:0)
如果您为Container Engine群集添加/ 14 CIDR块,因为源地址范围有效吗?
要查找群集的CIDR块,请单击Google Cloud Console中的群集名称,然后找到标有“容器地址范围”的行。