1

我在安装了 Datalab 的 DataProc 上创建了一个集群。我使用以下命令访问 dataLab:

export ZONE=us-central1-b;export CLUSTER_NAME=test;

gcloud compute ssh ${CLUSTER_NAME}-m --zone=${ZONE} --ssh-flag='-D 10001' --ssh-flag='-N' --ssh-flag='-n'

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
"http://${CLUSTER_NAME}-m:8080" \
--proxy-server='socks5://localhost:10001' \
--host-resolver-rules='MAP * 0.0.0.0 , EXCLUDE localhost' \
--user-data-dir='/tmp'

它工作了一段时间。我根本没有改变任何东西,但是在我运行上面相同的命令大约 2-3 小时后,我无法再次访问 dataLab,并收到以下错误:

ERROR: (gcloud.compute.ssh) Instance [test-m] in zone [us-central1-b] has not been allocated an external IP address yet. Try rerunning this command later.

后来我尝试了很多次,但从第一个错误中永远无法成功。这发生在我创建的每个集群上(即一段时间后无法访问集群的dataLab)。谁能帮我解决这个问题?谢谢你。

4

1 回答 1

1

假设它不仅仅是在实例启动时尚未分配地址的狭窄时间窗口中,那么在运行时您不必担心外部 IP 被解除分配,因此这可能是一个错误的错误。

当实例处于 TERMINATED 状态时,这通常会错误地发生。这与您配置为根本不使用外部 IP 的情况形成对比,否则您会收到类似Instance [foo] in zone [bar] does not have an external IP address. 这是因为在一个 TERMINATED 实例中,没有活动的 VM 资源,但是配置元数据仍然必须包含一个networkInterface配置来保存实例的完整配置元数据,并且gcloud compute逻辑当前假设如果networkInterfaces.accessConfigs定义了它,则预期“最终“有natIP领域。

检查以确保STOP在您离开时没有人点击您的虚拟机。启动虚拟机备份应该让它再次工作。

于 2019-04-05T22:34:16.343 回答