如何控制/etc/hosts文件不被覆盖

How to control /etc/hosts file from over writing

我正在使用 Debian Jessie 映像在 AWS 上部署 Kops Kubernetes 集群。

我的是一个混合环境,我的人工制品位于我们 DC 的物理环境中。现在我遇到了一个问题,除非我在 /etc/hosts 文件中指定了人工制品的 FQDN 和 IP,否则我的工作节点无法从人工制品中提取图像。

所以这是一个手动编辑,我这样做后一切正常。因此,我继续将数据添加到 Kops 工作节点组的附​​加 userdata 中,但一段时间后我看到工作节点上的主机文件被覆盖,这在节点重新启动时也很明显。

那我该如何解决!!

真正的答案是运行你自己的DNS服务器,或者至少使用DNS主机名来解析。如果您的路由器支持,您可以设置本地主机名 (machine-1.local)

如果这不可能,如果您拥有虚拟机,则可以尝试 puppet 之类的解决方案。另外,我相信 Kubernetes 确实有一个 DNS 插件。此外,您可以在启动时使用 crontab 来写入主机文件,但这是一个肮脏的解决方案。

此外,每次 DHCP 更新都会重写您的主机文件。您可以使用静态 IP,但还是要使用 DNS。

另一种解决方法是将其放入您的 /etc/rc.local 文件中:

如果文件存在,将此添加到末尾:

echo '<ip-address-of-artifactory> <fqdn-of-artifactory>' >> /etc/hosts

如果文件不存在,请创建它:

$ cat << EOF > /etc/rc.local
#!/bin/sh -e
#
echo '<ip-address-of-artifactory> <fqdn-of-artifactory>' >> /etc/hosts
EOF
$ chmod 755 /etc/rc.local
$ reboot # check that it works