2015-06-05 15 views
5

Ich habe immer noch Probleme beim Zugriff auf die Cloud SQL-Instanz von einem GCE-Container. Wenn ich versuche, mysql zu öffnen, bekomme ich folgende Fehlermeldung:Zugriff auf Google Cloud-SQL aus Google Container-Engine

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

Die Verbindung funktioniert gut von meinem lokalen Rechner, obwohl (Die Instanz hat eine öffentliche IP, und ich habe mein Büro IP zu den ‚erlaubt Networks hinzugefügt '). So ist die Instanz über das Internet gut erreichbar.

Ich denke, die Zugriffskontrolle der DB blockiert meinen Zugriff aus dem GCE-Netzwerk, aber ich bin nicht in der Lage, herauszufinden, wie dies zu konfigurieren ist.

Ich habe mein Projekt zu "Authorized App Engine Applications" im Cloud SQL Control Panel hinzugefügt, aber das scheint nicht zu helfen.

EDIT: Wenn ich "0.0.0.0/0" zu Erlaubte Netzwerke hinzufügen, funktioniert alles gut. Das ist offensichtlich nicht das, was ich will, also was muss ich stattdessen eingeben?

EDIT2: Ich könnte auch alle öffentlichen IP-Adressen aus meinem Kubernetes Cluster hinzufügen (erhalten durch gcloud compute instances list) und fügen Sie sie in die Cloud SQL-Zugriffsliste manuell. Aber das scheint nicht richtig zu sein, oder?

+0

Hallo, ich habe ein gleiches Problem. Wie sind Sie damit umgegangen? Ich denke, die Google Cloud Sql erlaubt nicht IP von Google Container-Engine, dann wo die IP hinzufügen? Und welche IP hinzufügen? – scho

Antwort

4

Die recommended solution ist SSL-Verbindung mit dem 0.0.0.0/0 CIDR zu verwenden. Dies ist, um die Verbindung mit dem richtigen Schlüssel zu begrenzen. Ich habe auch gelesen, dass sie Ihnen keinen bestimmten IP-Bereich versprechen, so dass das CIDR/14 manchmal nicht funktioniert. Aus den gleichen Gründen musste ich die SSL-Verbindung mit meinem Cloud SQL herstellen.

+0

Ah, ich habe diesen Artikel nicht gesehen. Vielen Dank. – Nuschk

+0

Wenn create pem folgt diesem Tutorial. Dann, wie man es benutzt? – scho

+0

Das hängt davon ab, wie Sie es verwenden müssen. Wahrscheinlich brauchen Sie ein bisschen mehr Informationen als das. –

0

Wenn Sie den/14 CIDR-Block für Ihren Container Engine-Cluster hinzufügen, da der Quelladressbereich funktioniert?

Um den CIDR-Block für Ihren Cluster zu finden, klicken Sie auf den Clusternamen in der Google Cloud Console und finden Sie die Zeile mit der Bezeichnung "Container Adressbereich".

+0

Danke für Ihren Vorschlag. Leider lässt es mich nicht einmal hinein. Sagt "Private Netzwerke können nicht auf die weiße Liste gesetzt werden". – Nuschk

+0

Ich kann eine Firewall-Regel erstellen, die 10.0.0.0/8 oder 10.28.0.0/14 als Quellbereich verwendet. –

1

Sie sollten die öffentlichen IP-Adressen der GCE-Instanzen verwenden, um den Datenverkehr zu Ihrer Cloud SQL-Instanz korrekt zuzulassen (wie Sie in EDIT2 erwähnt haben).

Sie können mehr Informationen in Cloud SQL Dokumentation: https://cloud.google.com/sql/docs/gce-access

+0

Ja, das würde funktionieren. Der Haken ist, dass ich denke, ich hätte gerne ephemere IPs auf den einzelnen Knoten. Das ist zumindest der Standard beim Erstellen eines Container-Engine-Clusters. Außerdem würde ich für jeden Knoten im Cluster auch eine statische IP benötigen. Aber naja, Container-Engine (und Kubernetes) scheinen Schneide zu sein, also denke ich, ich muss mit etwas davon leben. Es nervt mich nur ein wenig ... – Nuschk