首页 > 解决方案 > 将域名服务器添加到 Google Container Optimized OS

问题描述

我想把我们自己的域名服务器添加到 COS 中,我该怎么做?

它只是创建以下内容/etc/dhcp/dhclient.conf

  prepend domain-name-servers <domain ip>;

我已经添加了上述配置,但我仍然无法在 COS VM 实例中使用我的域。有什么我错过的吗?

如何在不重置/重启的情况下重启 COS 中的网络适配器?

标签: google-cloud-platformgoogle-container-optimized-os

解决方案


COS 使用“cloud-init”。如果您想将 dns 服务器作为这样的配置添加到 COS,您可以使用 cloud-init 作为在实例启动时配置实例的一种方式。cloud-init 工具期望其配置在实例元数据的用户数据键的值中。更多信息1

要将 cloud-init 的配置传递给实例,您需要使用以下标志创建实例:--metadata-from-file user-data=[filename],或者添加 user-data=[filename] 键值对从控制台到实例,文件将存储在外部位置,如云存储,您将提供 URL。在设置元数据时,也可以将配置复制到 value 部分。可以在以下链接中找到指定名称服务器和域的示例配置。

通过将元数据中的 yaml 配置值(但保留“user-data”键)替换为以下配置,您可以将 resolv.conf 配置为使用自定义名称服务器并让实例使用这些名称服务器进行地址解析。

例如,您可以创建一个名为 cloud-config-resolv 的文件,其中包含以下内容:

#cloud-config

write_files:
- path: /etc/systemd/resolved.conf
permissions: "0644"
owner: root:root
content: |
# This is my custom resolv.conf!
[Resolve]
DNS= 8.8.8.8 (Use your IP)

runcmd:
- ['systemctl', 'restart', 'systemd-resolved']

然后,您可以运行以下命令将 [Your-IP] 添加到 resolv.conf。

gcloud compute instances create instance-name \
--image-family cos-stable \
--image-project cos-cloud \
--metadata-from-file user-data=cloud-config-resolv \
--zone us-central1-a

我没有确认它会在 24 小时后持续存在,因为 dhcp 租约已更新并且所有更改都已清除。但是该文件确实会通过网络守护程序重新启动和 VM 重新启动而持续存在。


推荐阅读