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里面

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM