我在安装了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)。谁能帮我这个忙吗?谢谢。
答案 0 :(得分:1)
假设它不仅在实例启动时处于狭窄的时间范围内,还没有分配地址,在运行时,您不必担心外部IP被释放,因此很可能是错误的错误。
通常,当实例处于TERMINATED状态时,这会错误地发生。这与您配置为完全不使用外部IP的情况相反,否则您将收到类似Instance [foo] in zone [bar] does not have an external IP address
的消息。这是因为在TERMINATED实例中,没有活动的VM资源,但是配置元数据必须仍然包含networkInterface
配置,以保留实例的完整配置元数据,并且gcloud compute
逻辑当前假定如果定义了networkInterfaces.accessConfigs
,期望“最终”具有natIP
字段。
检查以确保有人不在时不在您的VM上单击STOP
。启动虚拟机备份应使其重新工作。