我在安装了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)。有人可以帮我这个吗?谢谢。
假设它不仅仅是在实例启动时的一个狭窄的时间窗口中尚未分配地址,在运行时你不必担心外部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
。启动VM备份应该让它再次运行。