有些文章说用关闭(删除)systemd-resolved
,而使用 resolvconf 、openresolv、Unbound 替换,测试发现在ubuntu 20.04.2 LTS NetworkManager
已经被 systemd-networkd
取代,复杂度(依赖关系)较高。所以研究依然保持使用systemd-resolved
而不使用127.0.0.53
的配置思路。
后来发现systemd-resolved
会产出两个运行配置,如下
默认/etc/resolv.conf
软链接到/run/systemd/resolve/stub-resolv.conf
,那么只需将/etc/resolv.conf
软链接到/run/systemd/resolve/resolv.conf
而/run/systemd/resolve/* 生成的配置文件是由/etc/systemd/resolved.conf
决定,于是就写了下边的配置脚本,放到服务器上一执行,确实已经不是指向127.0.0.53了。
主要参考了这篇
下文是讲解了为啥systemd-resolved要搞127.0.0.53:53
既然不用127.0.0.53了,那么我们能直接关闭127.0.0.53:53吗?
执行后再ss -tunlp
查看53端口,127.0.0.53:53监听已经没了。
k8s相关
另发现kubeadm(v1.21.3)安装的kubelet 默认会使用 /run/systemd/resolve/resolv.conf
,也可以手工更改,配置( /var/lib/kubelet/config.yaml)的说明在https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/
查看resolvConf字段的文档发现Default: “/etc/resolv.conf”,那为什么kubeadm安装完后会变成/run/systemd/resolve/resolv.conf
呢?此处暂留有疑问(20210923)
查了下kubeadm init 的日志,发现kubeadm-init阶段的各个操作
其中kubelet-start是负责Write a file with KubeletConfiguration and an environment file with node specific kubelet settings, and then (re)start kubelet.
经过查询代码,代码,kubeadm是对环境作了默认的检测,从而得到了一份可用的配置。而二进制的安装就需要在/var/lib/kubelet/config.yaml
自己指定下,决不能使用127.0.0.53:53的resolv.conf
争夺/etc/resolv.conf控制权
推荐阅读—> 米开杨重新夺回对 /etc/resolv.conf 的控制权
- https://man7.org/linux/man-pages/man5/resolv.conf.5.html
评论前必须登录!
注册