Ubuntu 18.04的DNS问题(已解决)

原创
2018/08/18 20:55
阅读数 7.1W

Kubernetes出现Pod中无法解析DNS的问题(Ubuntu 16.04),经过摸索,得到了解决(参见:Kubernetes中的Pod无法访问外网-Ubuntu16.04 LTS )。但在升级到Ubuntu 18.04后,该问题再次出现,而且老办法也不灵了!

咋整?

下面的几个思路,都试了一遍:

  • /etc/resolv.conf,这是一般修改的文件,但这次改了以后,重启系统后又被改回去了。系统提示该文件是由networkmanager创建的。
  • /etc/systemd/resolved.conf,是resolv服务的配置,改了以后重启服务,好像没啥变化。

  • /run/resolveconf/resolv.conf,有人说是/etc/resolv.conf的连接指向文件,但我的系统没有。

  • /etc/resolvconf/resolv.conf.d/head,这个目录下有几个据说是resolv的配置文件,据说用于更新/etc/resolv.conf文件,但与/etc/resolv.conf里的数据不同。下面采用办法编辑了这个文件,终于搞定了。

  • Networkmanager

    • /etc/networkmanager/interfaces,以前版本都是该这里头的,没有效果。

  • dnsmasq,虽然系统安装了,但是配置都是空的,应该没有作用。

  • netplan,这是Ubuntu 18.04的主流配置,可是里面的/etc/netplan目录是空的(不知道/etc/resolv.conf里的内容从哪里来的)。

 

不知道哪一个是真正起作用的了,实在不行的话,就只能蛮干了。

Disable systemd-resolved:

https://www.feiqy.com/ubuntu-dns/

systemctl disable systemd-resolved

没有效果,重启系统也没有效果。

 

需要注意的是:

  • Kubernetes目前的DNS会从宿主机/etc/resolv.conf复制到pod。
  • 因此,其它的设置方式即使在宿主机有效,但在kubernetes的pod中是无效的。

修改/etc/resolv.conf的指向:

#修改/etc/resolv.conf为软链接,从resolvconf配置文件来更新。
sudo mv /etc/resolv.conf /etc/resolv.conf.orig
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

#修改/etc/resolvconf/resolv.conf.d/head或者base
sudo nano /etc/resolvconf/resolv.conf.d/head

#然后,应用一下。
sudo resolvconf -u

#再去看一下,应该已经变了。
cat /etc/resolv.conf

这个是可以的!虽然笨了点。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
3 评论
0 收藏
0
分享
返回顶部
顶部