google-cloud-platform - 将域名服务器添加到 Google Container Optimized OS
问题描述
我想把我们自己的域名服务器添加到 COS 中,我该怎么做?
它只是创建以下内容/etc/dhcp/dhclient.conf
:
prepend domain-name-servers <domain ip>;
我已经添加了上述配置,但我仍然无法在 COS VM 实例中使用我的域。有什么我错过的吗?
如何在不重置/重启的情况下重启 COS 中的网络适配器?
解决方案
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 重新启动而持续存在。
推荐阅读
- javascript - iOS 14 WKWebView 正文滚动问题
- php - 为什么我的 PHP 电子邮件表单发送的是空白电子邮件
- arrays - 使用 Object.keys 方法将获取的异步数据添加到数组的问题?
- javascript - 带 2 位小数的输入值
- azure - Azure VM:权限被拒绝
- llvm - 在 Ubuntu 18.04 上安装 numba 时 LLVM 版本不匹配
- javascript - 如何使垫选择列表自动选择一个选项
- python - LSTM 时间序列预测 - 验证损失和测试损失低于训练损失
- r - 非重复项仍包含在具有重复项的重复项列表中()
- c - STM32闪烁LED错误寄存器?