Centos7下Dnsmasq部署,统一管理物理机以及kubernetes所有网络的DNS解析
原创内容,转载请注明出处
前言
在经过上一篇章kubenetes集群部署CoreDNS之后,kubernetes集群中pod已经可以域名解析了,但是集群物理机的DNS与kubernetes管理并不统一,下面我们可以使用dnsmasq进行统一管理。
DNS管理拓扑示意图
dnsmasq部署于物理服务器上,而CoreDNS的上游DNS服务器默认会选择物理机网卡上设置的DNS,只要将dnsmasq作为物理机网卡设置的DNS,那么就可以直接设置为CoreDNS的上游DNS服务器了。
部署Dnsmasq服务
需要关闭selinux以及配置防火墙放行53端口号
关闭selinux
查看SELinux状态:
[root@server81 ~]# sestatusSELinux status: disabled [root@server81 ~]#
关闭seliunx:
1、临时关闭(不用重启机器):(centos7无效,还是需要重启服务器) setenforce 0 ##设置SELinux 成为permissive模式 ##setenforce 1 设置SELinux 成为enforcing模式2、修改配置文件需要重启机器: 修改/etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=disabled 重启机器即可
配置防火墙
关闭防火墙:
systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动
也可以放行端口号:
firewall-cmd --zone=public --add-port=53/tcp --permanent firewall-cmd --zone=public --add-port=53/udp --permanent firewall-cmd --reload firewall-cmd --list-all
安装dnsmasq
# 安装并启动Dnsmasqyum install -y dnsmasq service dnsmasq start service dnsmasq status
Dnsmasq配置
1、Dnsmasq的配置文件路径为:/etc/dnsmasq.conf
[root@server81 install_DNSmasq]# ls -ll /etc/dnsmasq.conf -rw-r--r-- 1 root root 25375 Sep 26 14:33 /etc/dnsmasq.conf
2、编辑/etc/dnsmasq.conf
resolv-file=/etc/resolv.dnsmasq.conf //dnsmasq 会从这个文件中寻找上游dns服务器strict-order //去掉前面的#addn-hosts=/etc/dnsmasq.hosts //在这个目里面添加记录listen-address=127.0.0.1,172.16.5.181,172.16.5.87 //监听地址
配置截图如下:
3、修改/etc/resolv.conf 指向部署的dnsmasq服务器
[root@server81 install_DNSmasq]# cat /etc/resolv.confnameserver 172.16.5.181[root@server81 install_DNSmasq]# ## 其中172.16.5.181就是我部署dnsmasq的服务器IP地址。
4、创建resolv.dnsmasq.conf文件并添加上游dns服务器的地址
touch /etc/resolv.dnsmasq.conf echo 'nameserver 202.96.134.133' > /etc/resolv.dnsmasq.conf echo 'nameserver 202.96.128.86' >> /etc/resolv.dnsmasq.conf
提示:resolv.dnsmasq.conf中设置的是真正的Nameserver,可以用电信、联通等公共的DNS。
5、创建dnsmasq.hosts文件
cp /etc/hosts /etc/dnsmasq.hosts
Dnsmasq启动
chkconfig dnsmasq on service dnsmasq restart
netstat -tunlp|grep 53 查看Dnsmasq是否正常启动:
[root@server81 install_DNSmasq]# netstat -tunlp|grep 53tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 49133/dnsmasq tcp6 0 0 :::9099 :::* LISTEN 17753/calico-felix tcp6 0 0 :::53 :::* LISTEN 49133/dnsmasq udp 0 0 0.0.0.0:53 0.0.0.0:* 49133/dnsmasq udp6 0 0 :::53 :::* 49133/dnsmasq udp6 0 0 fe80::58ce:53ff:feb:123 :::* 1965/ntpd [root@server81 install_DNSmasq]#
测试Dnsmasq
添加域名解析,然后使用物理机ping测试:
在kubernetes容器中进行ping测试:
原因是因为dnsmasq是在CoreDNS部署之后才部署的,CoreDNS在启动的时候已经设置好了上游DNS服务器了,那么只要重启一下CoreDNS就可以解决这个问题,让CoreDNS重新设置上游服务器。
重启CoreDNS之后,重新在容器内ping测test-server的域名以及外网www.baidu.com的域名,测试是否正常解析内网地址以及外网地址。
从上面的结果来看,dnsmasq已经成为了CoreDNS的上游DNS服务器了,这样只要管理好dnsmasq的域名配置,就可以统一管理各台物理机以及kubernetes所有服务的DNS解析了。
下一个问题
在解决了kuberntes集群的DNS管理之后,那么下一个问题就是外部如何请求服务进入kubernetes集群呢?
如何提供服务的请求入口呢?
kubernetes有nodeport、ingress等等方式。
下一篇章,我会介绍使用ingress来提供服务入口。
作者:DevOps海洋的渔夫
链接:https://www.jianshu.com/p/26051ec4c461
共同学习,写下你的评论
评论加载中...
作者其他优质文章