我正在 Google Cloud 中设置 OpenShift 集群,并启动了一堆虚拟机。我还有一个 Google Cloud DNS 区域,我已在其中注册了我设置的虚拟机的主机名。我希望能够通过我在 Google Cloud DNS 区域中配置的主机名来引用所有虚拟机,而不是通过 Google Cloud Platform 为它们提供的本地名称。请问我该怎么做?
我尝试编辑 resolv.conf(它们都是 Centos 7 Linux VM),但是这不起作用,而且我知道每次 DHCP 租约续订时它都会被覆盖。
为了更详细地解释,我将使用 1 VM 作为示例。我有一个名为“nat-gateway”的 VM。它的“主机名 -f”是 nat-gateway.c.MyProjectName.internal,我可以使用 nat-gateway 和它的 fqdn nat-gateway.c.MyProjectName.internal 对其进行 ping 操作。在我的 Cloud DNS 区域(称为 cloud.abc.gcp)上,我为 nat-gateway 创建了一条 A 记录,我希望能够使用 nat-gateway.cloud.abc.gcp 对其进行 ping 操作。因此,对于我的所有 VM,我希望通过它们相应的 cloud.abc.gcp 主机名对其进行 ping 操作。
非常感谢您的帮助,谢谢。
答案1
简短的回答是肯定的。这是有可能的。
长话短说,这不是 Cloud DNS 的预期用途。但以下步骤可以使其行为几乎符合您的要求:
在您的 Cloud DNS 上创建指向您的 nat-gateway 的内部 IP 的 A 记录(例如:10.128.0.3)
附注:您可以在创建虚拟机时保留内部 IP 地址,或者促进将正在使用的临时内部 IP 地址更改为静态地址,因为 A 记录指向其内部 IP。
等待 Cloud DNS 传播 A 记录并 ping nat-gateway.cloud.abc.gcp 主机名。
结果:
如果在同一个 VPC 内并且防火墙允许 ping,它将把 Cloud DNS 主机名解析为 FQDN nat-gateway.c.MyProjectName.internal,并且可以正常 ping。
如果在 VPC 之外但使用 VPN 或 VPC Peering 连接到它(例如:项目 A VPC A 使用 VPN 隧道连接到项目 B VPC B,并且所有防火墙和路由均适用,则一个实例可以使用解析为内部 IP 地址的 Cloud DNS 主机名从另一个网络访问另一个实例)
如果尝试 ping 的机器未连接到您的 nat-gateway 的 VPC,它将把主机名解析为保留的 IP 地址,但无法访问它(预期行为)。
最后,Cloud DNS 不会直接解析 FQDN nat-gateway.c.MyProjectName.internal,而是解析与其关联的 IP,当在同一个 VPC 中使用时,IP 将再次由 VPC 的内部 DNS 解析为 FQDN nat-gateway.c.MyProjectName.internal。