我想知道是否有办法为GCE VM实例(作为VM主机)上托管的虚拟机(VirtualBox)设置静态IP地址。
我想在我的GCE VM实例上运行两个VirtualBox VM,我想公开访问它们。
答案 0 :(得分:3)
是的,您可以这样做,但您还应该考虑是否需要在另一个虚拟机(GCE VM)内运行一个虚拟机(VirtualBox)的额外开销。直接在GCE VM上运行会更高效,您可以通过Google Cloud Platform API轻松创建/销毁/控制这些VM。
此外,如果您已经在使用Vagrant等VirtualBox虚拟机的自动化框架,请注意Vagrant natively supports GCE VMs,因此只需对配置进行一些更改,即可使用Vagrant创建/像本地VirtualBox虚拟机一样轻松地修改/连接/销毁您的GCE虚拟机。
作为静态外部IP的替代方案,请考虑使用域名映射到您的实例的短暂外部IP。您可以使用Google Cloud DNS来管理DNS映射。
有关静态外部IP的更多信息,请参阅docs:
静态外部IP地址
如果您需要分配给项目的静态外部IP地址并且在明确释放之前一直存在,则可以保留新的静态外部IP地址或将短暂的外部IP地址提升为静态外部IP地址。将
gcloud compute
与addresses create
命令一起使用,或对相应的区域地址集合发出PUT请求以保留静态外部IP地址。分配给实例的静态外部IP地址是区域资源,您必须在创建地址时选择IP地址所属的区域。
[...]
限制
静态外部IP地址一次只能由一个资源使用。您无法为多个资源分配静态外部IP地址。
除非将IP地址与保留给该项目的静态外部IP地址列表进行比较,否则无法判断IP地址在分配给资源后是静态还是短暂的。使用
addresses list
子命令查看项目可用的静态外部IP地址列表。
请注意,静态外部IP也附带一些cost:
IP地址定价
Type Price/Hour Static IP address (assigned but unused) $0.01 Static IP address (assigned and in use) No charge Ephemeral IP address (attached to instance or forwarding rule) No charge
答案 1 :(得分:1)
我分两步解决了这个问题:
gcloud compute instances delete-access-config <instance> --access-config-name "External NAT"
其中<instance>
是您要更新的实例的名称,而外部NAT 是配置的名称,由于其默认值,它可能具有该值。你可以检查它运行:
gcloud计算实例描述--zone = us-west1-a
如果要绑定静态地址,可能要将其绑定到DNS地址,请执行类似这样的操作
gcloud compute instances add-access-config <instance> --access-config-name="External NAT" --address=xxx.xxx.xxx.xxx
请务必将--zone
附加到任何 gcloud 命令,以避免任何歧义。您可以从项目中的有效地址配置中获取address
,您可以这样获得:
gcloud compute addresses list
不要使用NAME
,而是使用ADDRESS
。您应该在实例的同一区域中选择一个地址。附上地址后,您会看到在最后一个查询的STATUS
字段中,它会显示 IN USE 。
Et瞧!