我在Google Compute Engine上运行偶尔启动的服务器。我不想支付静态IP地址,只是在实例运行时使用临时IP地址。 GCE是否会向DNS发布从实例名称到我可以使用的短暂IP或CNAME到的映射?例如。像instancename.projectname.googlecompute.com
这样的TTL足够低,可以在启动后很快解决它指向我实例的IP地址?
我在文档中找不到这样的内容,但如果它不存在,我会感到非常惊讶。
答案 0 :(得分:3)
是的,通过DNS名称访问您的实例的唯一方法是自己创建DNS条目,例如指向静态IP地址的静态A记录或指向您的短暂地址的动态DNS条目(这是我为我的实例做了什么。)
计算引擎不像App Engine那样提供预定义的主机名,指向 app_name .appspot.com。
我的DNS提供商freedns.afraid.org使DDNS变得相当简单。对于要命名的主机,创建一个静态A记录,然后单击DDNS链接,它会为您提供一个wget或curl命令行,以便从VM实例上的cron作业运行。
但是还有很多其他DNS提供商可以做类似的事情。
答案 1 :(得分:2)
鉴于实际问题的答案是否定的,这个答案可能仍然有助于那些能够通过脚本获取ip adddress而不需要手动查找它的人。
如果安装并设置了gcloud命令,则可以使用相当长的参数列表输出正在运行的实例的IP地址。要轻松显示当前分配的地址,请将以下函数添加到shell初始化文件中:
get_gce_ip()
{
local instance="${1%%.*}"
gcloud compute instances list --filter="$instance" \
--format='value(networkInterfaces[0].accessConfigs[0].natIP)'
}
使用该功能,只需将这两行添加到.ssh / config
,就可以使用ssh instancename.googl
方便地访问任何主机
Host *.googl
ProxyCommand nc `get_gce_ip "%h"` %p
显然,这些并不是DNS条目的完全替代品,但在某些情况下,它们可能有所帮助。