k8s集群之上游dns--dnsmasq,统一管理kubernetes的dns解析
1、概述
首先部署好kubernetes集群并采用Coredns进行解析,这样集群内部的服务都能通过内部域名进行访问。但是集群内部的coredns与物理机的dns解析不完全统一,coredns不能解析物理机的hostname。所以需要一个统一的dns来管理两者。主要是建立一个coredns的上游dns服务,将物理机环境的解析添加进去。使用dnsmasq做上游的dns,统一管理coredns和物理机集群的hostname解析。dnsmasq部署于物理服务器上,而CoreDNS的上游DNS服务器默认会选择物理机网卡上设置的DNS,只要将dnsmasq作为物理机网卡设置的DNS,那么就可以直接设置为CoreDNS的上游DNS服务器了.
2、部署
#centos yum -y install dnsmasq
修改配置文件,配置文件默认是/etc/dnsmasq.conf,主要是修改如下:
resolv-file=/etc/resolv.dnsmasq.conf strict-order listen-address=127.0.0.1,10.2.73.110 addn-hosts=/etc/dnsmasq.hosts
参数解释:
resolv-file 定义dnsmasq从哪里获取上游DNS服务器的地址, 默认是从/etc/resolv.conf获取。在此我们定义的是从/etc/resolv.dnsmasq.conf文件中获得。
strict-order 表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
listen-address 定义dnsmasq监听的地址,默认是监控本机的所有网卡上
addn-hosts 添加主机记录,就和/etc/hosts文件一样,添加物理机hostname和ip映射
文件:
# cat /etc/resolv.dnsmasq.conf nameserver 10.42.25.1 nameserver 10.42.25.2 nameserver 114.114.114.114
根据自己的服务器填写。
# cat /etc/dnsmasq.hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.2.73.110 ku
3、启动服务
system start dnsmasq system enable dnsmasq system status dnsmasq
将物理机的/etc/resolv.conf里面nameserver地址换成dnsmasq的服务地址,默认监听53端口。
nameserver 10.2.73.110
由于集群里面的Coredns已经提前部署好了,所以默认使用的是之前的/etc/resolv.conf里面的nameserver,所以不能解析node name,所以需要重新部署一下Coredns:
kubectl delete pod coredns-576cbf47c7-6t85b -n kube-system kubectl delete pod coredns-576cbf47c7-wlsrd -n kube-system
等待几秒钟服务会自动部署好。
4、测试dns
1)在物理机上面,访问外网测试
2)在pod里面
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
- Kubernetes(K8S)集群管理Docker容器(部署篇)
- Kubernetes(K8S)集群管理Docker容器(概念篇)
- Kubernetes(K8S)集群管理Docker容器(部署篇)
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
- 为Kubernetes集群里的容器提供DNS服务,用于解析service名称
- Kubernetes(K8S)集群管理Docker容器(概念篇)
- k8s集群之kubernetes-dashboard和kube-dns组件部署安装
- Kubernetes(K8S)集群管理Docker容器(部署篇) 推荐
- 基于kubernetes构建Docker集群管理详解
- 搭建kubernetes(v1.3.3)集群及相关管理组件
- Kubernetes1.91(K8s)安装部署过程(七)--coredns安装
- 基于Kubernetes构建Docker集群管理详解
- Tomcat7集群共享Session 基于redis进行统一管理(转)
- China Azure中部署Kubernetes(K8S)集群
- K8S集群tls证书管理