如何以编程方式查找使用 Dataproc 创建的 Google 集群的外部 IP 地址?

How to programatically find the external IP address of a Google Cluster created with Dataproc?

当我使用 Google 的 Dataproc 创建计算集群时,如果集群名称在项目中为 "MyCluster","MyProject-107701" 则主集群在内部被识别为 "mycluster-m.c.myproject-107701.internal"(不确定“.c”的来源,但这是使用 nslookup 揭示的内容)。在 "mycluster-m" 上执行 nslookup 会显示内部 ip,但不会显示外部 ip。

我可以在控制台的虚拟机页面上看到外部 ID。但是,我不确定如何以编程方式获取此信息(使用 Java - 缺少抓取 html 页)。

我希望能够创建一个集群,return 外部进程的 IP 地址,然后将连接,但不想使用 gsutil 连接。我该怎么做?是否可以通过 Dataproc Java API 获取外部 IP 地址?

这可以通过两个 API 的组合来实现。第一次调用是对 Dataproc API 进行调用,以获取集群的主节点的最终列表。这可以通过 clusters.get, and extracting a master-node name from cluster.config.masterConfig.instanceNames.

来完成

获得主实例名称后,您可以使用 Compute Engine API 到 get the GCE Instance and from the GCE instance, you can extract networkInterfaces[0].accessConfig.natIP