1

Ich versuche, über eine Dataflow-Pipeline auf Kafka- und Drittanbieterdienste (z. B. InfluxDB) zuzugreifen, die in GKE ausgeführt werden.Angepasster DNS-Resolver für Google Cloud Dataflow-Pipeline

Ich habe einen DNS-Server für Service Discovery, auch in GKE ausgeführt. Ich habe auch eine Route in meinem Netzwerk, um auf den GKE IP-Bereich von Dataflow-Instanzen zuzugreifen, und das funktioniert gut. Ich kann manuell nslookup von den Dataflow-Instanzen mit meinem benutzerdefinierten Server ohne Probleme.

Allerdings kann ich keinen geeigneten Weg zum Einrichten eines zusätzlichen DNS-Servers beim Ausführen meiner Dataflow-Pipeline finden. Wie kann ich das erreichen, so dass KafkaIO und ähnliche Quellen/Schreiber Hostnamen gegen meinen benutzerdefinierten DNS auflösen können?

sun.net.spi.nameservice.nameservers ist schwierig zu verwenden, da es sehr früh aufgerufen werden muss, bevor der Namensdienst statisch instanziiert wird. Ich würde java -D anrufen, aber Dataflow wird den Code selbst direkt ausführen.

Außerdem möchte ich nicht nur die Systemresolver ersetzen, sondern lediglich einen neuen an die GCP-projektspezifischen Resolver anhängen, mit denen die Instanz vorkonfiguriert ist.

Schließlich habe ich keine Möglichkeit gefunden, ein Startskript wie für eine reguläre GCE-Instanz mit den Dataflow-Instanzen zu verwenden.

+0

https://github.com/kubernetes/kubernetes/issues/33483 hat einige Diskussionen zu diesem Thema. – peay

+0

Ich kann mir heute keinen Weg vorstellen, ein benutzerdefiniertes DNS in einer VM anders als die Datei /etc/resolv.conf[1] in der Box zu bearbeiten. Ich weiß nicht, ob es möglich ist, das Standardnetzwerk zu teilen. Wenn es Maschinen gibt, sind sie bei hostName.c. [PROJECT_ID] .internal verfügbar, was Ihren Zweck erfüllen kann, wenn hostName stabil ist [2]. [1] https://cloud.google.com/compute/docs/networking#internal_dns_and_resolvconf[2] https://cloud.google.com/compute/docs/networking –

Antwort

1

Ich kann mir heute keine Möglichkeit vorstellen, einen benutzerdefinierten DNS in einer VM anders als die Datei /etc/resolv.conf[1] in der Box zu bearbeiten. Ich weiß nicht, ob es möglich ist, das Standardnetzwerk zu teilen. Wenn es Maschinen gibt, sind sie bei hostName.c. [PROJECT_ID] .internal verfügbar, was Ihren Zweck erfüllen kann, wenn hostName stabil ist [2].

[1] https://cloud.google.com/compute/docs/networking#internal_dns_and_resolvconf [2] https://cloud.google.com/compute/docs/networking

Verwandte Themen