KVM虚拟机部署K8S重启后/etc/hosts内容丢失

前言

使用KVM开了虚拟机部署K8S,部署完成后重启,节点的pod等信息无法获取到,查看报错初步推测为域名解析失效,查看/etc/hosts后发现安装k8s时添加的内容全部消失

网上搜索一番之后发现了

如果直接修改 /etc/hosts 文件,重启后会还原丢失修改,原因是腾讯云默认使用了 Cloud-Init 进行初始化操作。

官方说明参见:https://cloud.tencent.com/document/product/213/34698

官方描述中说 "2018年9月后使用公共镜像创建的实例不会出现 /etc/hosts 配置在重启后被覆盖的问题"。

然而实际还是会被覆盖。

据我所知腾讯云之类的云服务商大部分都是kvm虚拟化,我推测也可能是采用了 Cloud-Init 进行初始化操作。

所以就手动修改 Cloud-Init 模板:

cd /etc/cloud/templates
ls

会看到很多 hosts.***.tmpl 文件,根据你的Linux发行版进行修改。

为了防止小白问找不到自己发行版,所以这里解释一下:

Ubuntu 是基于 Debian 的衍生版,CentOS7 是 RedHat 源码遵循GPL再编译的版本,CentOS8 以后是 RedHat 的试验田版本。

所以这样就明白了吧。假设你是 CentOS,就修改 "hosts.redhat.tmpl"。

sudo vim hosts.redhat.tmpl

根据你的需要进行修改:

## template:jinja
{#
This file /etc/cloud/templates/hosts.redhat.tmpl is only utilized
if enabled in cloud-config.  Specifically, in order to enable it
you need to add the following to config:
  manage_etc_hosts: True
-#}
127.0.0.1 {
 {fqdn}} {
 {hostname}}
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4

::1 {
 {fqdn}} {
 {hostname}}
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

完成后重启服务器就会根据模板重新加载 Hosts。

sudo reboot

相关推荐

  1. KVM虚拟部署K8S/etc/hosts内容丢失

    2024-01-02 11:44:03       38 阅读
  2. K8S容器挂了一直但不成功原因及解决

    2024-01-02 11:44:03       36 阅读
  3. k8s部署虚拟和物理区别

    2024-01-02 11:44:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-02 11:44:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-02 11:44:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-02 11:44:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-02 11:44:03       18 阅读

热门阅读

  1. 深入理解@Resource与@Autowired:用法与区别解析

    2024-01-02 11:44:03       37 阅读
  2. JDK下载地址

    2024-01-02 11:44:03       48 阅读
  3. GRU算法

    GRU算法

    2024-01-02 11:44:03      32 阅读
  4. ansible搭建和基本使用

    2024-01-02 11:44:03       42 阅读
  5. 数据库-期末考前复习-第1章-绪论

    2024-01-02 11:44:03       32 阅读
  6. React 实现 Step组件

    2024-01-02 11:44:03       44 阅读
  7. react怎么实现跨页面传参

    2024-01-02 11:44:03       40 阅读