1. 给主机添加 DNS
1.1 CentOS
第一种方法: /etc/resolv.conf
管理 DNS
- 禁用
NetworkManager
如果不禁用 NetworkManager
,在重启 NetworkManager
组件之后,直接在 /etc/resolv.conf
中添加的 DNS 记录会丢失。
1
2
3
4
| vim /etc/NetworkManager/NetworkManager.conf
[main]
dns=none
|
在 [main]
部分添加 dns=none
。
- 此时重启
NetworkManager
,对已经添加到 /etc/resolv.conf
的记录无影响
1
| systemctl restart network
|
第二种方式: NetworkManager
管理 DNS
- 查看本地网络
1
2
3
4
5
6
| nmcli connection show
NAME UUID TYPE DEVICE
ens192 03da7500-2101-c722-2438-d0d006c28c73 ethernet ens192
br-006fb59057ed 07e61d55-0c2e-4d63-bba9-52854cf9ad75 bridge br-006fb59057ed
virbr0 ff8cf6fe-0613-4ba8-ac32-0afd2c6044b6 bridge virbr0
|
- 修改 NetworkManager 网卡配置文件
获取到本地网卡名为 ens192
之后,即可编辑该网卡的配置文件,添加 DNS。
1
2
3
4
5
| vim /etc/sysconfig/network-scripts/ifcfg-ens192
#添加
DNS1=119.29.29.29
DNS2=2114.114.114.114
|
- 重启 NetworkManager 生成配置文件
需要注意的是,此时在 /etc/resolv.conf
文件中的 DNS 记录会被清理掉,请注意备份。
1
| cp /etc/resolv.conf /etc/resolv.conf.backup-$(date +%Y%m%d-%H%M%S)
|
1
| systemctl restart network
|
- 查看生成的
/etc/resolv.conf
文件
1
2
3
4
5
| cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 119.29.29.29
nameserver 114.114.114.114
|
1.2 Ubuntu
由于 resolv.conf
是自动生成的,需要改 resolved.conf
才行。
1
2
3
4
5
| vim /etc/systemd/resolved.conf
[Resolve]
DNS=114.114.114.114
DNS=8.8.8.8
|
接着重启 resolve 服务。
1
| systemctl restart systemd-resolved.service
|
最后,还可以确认下配置是否生效。
1
| systemd-resolve --status
|
2. 重启 Nodelocaldns
在 Pod 中发起外部请求时,解析逻辑是 nodelocaldns -> 节点配置的 DNS -> 返回 IP。
1
| kubectl -n kube-system rollout restart ds nodelocaldns
|
3. 参考