当您创建像“my-instance-1”这样的新实例时,这意味着您的实例主机名也将是“my-instance-1”!
问题是,当您将主机名(例如)更改为“myhostname.mydomain.net”时,每次使用 Google SSH 浏览器工具或升级实例时,主机名都会自动更改为“my-instance-1”!
为什么 Google SSH 浏览器工具会更改实例主机名?
答案1
/etc/dhcp/dhclient.d/google_hostname.sh
在我的 CentOS VM 中,我发现由 RPM 安装的脚本google-compute-engine
实际上更改了主机名。当实例在启动期间获取其 IP 地址时,就会发生这种情况。
虽然这不是我真正想要的长期解决方案,但目前我只是删除了这个脚本。我hostnamectl
现在设置的主机名在重启后仍然存在。
该脚本很可能位于 Debian/Ubuntu VM 中的完全相同的位置,但我当然不会运行其中任何一个。
答案2
您可以在虚拟机实例中指定自己的主机名。
有两种简单的方法。
- 创建自定义元数据条目主机名,值为 my.hostname.com
然后我在我的 centos 服务器上像这样调用它:
hostname $(curl --silent "http://metadata.google.internal/computeMetadata/v1/instance/attributes/hostname" -H "Metadata-Flavor: Google")
结果是根据您的元数据设置的主机名。
- 通过 Google DHCP 服务分配您的静态内部 IP
我在“/etc/dhcp/dhclient.d”中创建了一个文件“google_hostname.sh”(使用 CentOS),该文件的内容如下:
#!/bin/bash
google_hostname_config() {
google_set_hostname
}
google_hostname_restore() {
:
}
结果是,当 Google 在您重启时分配您的临时内部 IP 时,它也会执行主机名。
更多信息:以下内容文章解释说,“主机名”是默认元数据条目的一部分,无法手动编辑任何默认元数据对。因此,每次系统重新启动时,您都需要使用脚本或其他东西来更改主机名,否则它将在每次重新启动时自动与元数据服务器重新同步。