前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos7下Dnsmasq部署,统一管理物理机以及kubernetes所有网络的DNS解析

Centos7下Dnsmasq部署,统一管理物理机以及kubernetes所有网络的DNS解析

作者头像
Devops海洋的渔夫
发布2019-05-31 16:27:12
1.8K0
发布2019-05-31 16:27:12
举报
文章被收录于专栏:Devops专栏

前言

在经过上一篇章kubenetes集群部署CoreDNS之后,kubernetes集群中pod已经可以域名解析了,但是集群物理机的DNS与kubernetes管理并不统一,下面我们可以使用dnsmasq进行统一管理。


DNS管理拓扑示意图

dnsmasq部署于物理服务器上,而CoreDNS的上游DNS服务器默认会选择物理机网卡上设置的DNS,只要将dnsmasq作为物理机网卡设置的DNS,那么就可以直接设置为CoreDNS的上游DNS服务器了。


部署Dnsmasq服务

需要关闭selinux以及配置防火墙放行53端口号 关闭selinux

查看SELinux状态:

代码语言:javascript
复制
[root@server81 ~]# sestatus
SELinux status:                 disabled
[root@server81 ~]# 

关闭seliunx:

代码语言:javascript
复制
1、临时关闭(不用重启机器):(centos7无效,还是需要重启服务器)
setenforce 0                  ##设置SELinux 成为permissive模式
                              ##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可

配置防火墙

关闭防火墙:

代码语言:javascript
复制
systemctl stop firewalld.service       #停止firewall
systemctl disable firewalld.service  #禁止firewall开机启动

也可以放行端口号:

代码语言:javascript
复制
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

代码语言:javascript
复制
# 安装并启动Dnsmasq
yum install -y dnsmasq
service dnsmasq start 
service dnsmasq status

Dnsmasq配置 1、Dnsmasq的配置文件路径为:/etc/dnsmasq.conf

代码语言:javascript
复制
[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

代码语言:javascript
复制
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服务器

代码语言:javascript
复制
[root@server81 install_DNSmasq]# cat /etc/resolv.conf
nameserver 172.16.5.181
[root@server81 install_DNSmasq]# 
## 其中172.16.5.181就是我部署dnsmasq的服务器IP地址。

4、创建resolv.dnsmasq.conf文件并添加上游dns服务器的地址

代码语言:javascript
复制
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文件

代码语言:javascript
复制
cp /etc/hosts /etc/dnsmasq.hosts

Dnsmasq启动

代码语言:javascript
复制
chkconfig dnsmasq on
service dnsmasq restart

netstat -tunlp|grep 53 查看Dnsmasq是否正常启动:

代码语言:javascript
复制
[root@server81 install_DNSmasq]# netstat -tunlp|grep 53
tcp        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来提供服务入口。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.09.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kubernetes v1.11 二进制部署篇章目录
  • 前言
  • 部署Dnsmasq服务
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档