我正在尝试从 Dataflow 管道访问在 GKE 中运行的 Kafka 和第 3 方服务(例如 InfluxDB)。
我有一个用于服务发现的 DNS 服务器,也在 GKE 中运行。我的网络中还有一条从 Dataflow 实例访问 GKE IP 范围的路由,这工作正常。我可以手动nslookup
从使用我的自定义服务器的 Dataflow 实例没有问题。
但是,我找不到设置附加 DNS 服务器的正确方法 运行我的 Dataflow 管道时 .我怎么能做到这一点,以便 KafkaIO
和类似的来源/作者可以根据我的自定义 DNS 解析主机名吗?sun.net.spi.nameservice.nameservers
使用起来很棘手,因为它必须在名称服务静态实例化之前很早就被调用。我会打电话java -D
,但 Dataflow 将直接运行代码本身。
此外,我不想只替换系统解析器,而只是将一个新的解析器附加到实例预配置的 GCP 项目特定的解析器。
最后,我还没有找到任何方法来使用启动脚本,例如用于带有 Dataflow 实例的常规 GCE 实例。
最佳答案
除了编辑框中的/etc/resolv.conf[1] 文件之外,我今天想不出在 VM 中指定自定义 DNS 的方法。我不知道是否可以共享默认网络。如果在 hostName.c.[PROJECT_ID].internal 上有可用的机器,如果 hostName 是稳定的 [2],这可以满足您的目的。
[1] https://cloud.google.com/compute/docs/networking#internal_dns_and_resolvconf [2] https://cloud.google.com/compute/docs/networking
关于google-cloud-platform - 用于 Google Cloud Dataflow 管道的自定义 DNS 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42844472/