Please enable Javascript to view the contents

给 Kubernetes 集群新增外部 DNS 服务

 ·  ☕ 1 分钟

1. 给主机添加 DNS

1.1 CentOS

第一种方法: /etc/resolv.conf 管理 DNS

  1. 禁用 NetworkManager

如果不禁用 NetworkManager,在重启 NetworkManager 组件之后,直接在 /etc/resolv.conf 中添加的 DNS 记录会丢失。

1
2
3
4
vim /etc/NetworkManager/NetworkManager.conf

[main]
dns=none

[main] 部分添加 dns=none

  1. 此时重启 NetworkManager,对已经添加到 /etc/resolv.conf 的记录无影响
1
systemctl restart network 

第二种方式: NetworkManager 管理 DNS

  1. 查看本地网络
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   
  1. 修改 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
  1. 重启 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 
  1. 查看生成的 /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. 参考


微信公众号
作者
微信公众号