购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4.2 OpenShift Node节点DNS配置

2.4.1节介绍了Pod中的DNS配置,本节将介绍OpenShift Node节点上的DNS配置,包括resolv.conf文件的配置和dnsmasq的配置两个部分。

1.Pod所在宿主机中的resolv.conf文件

上一节的示例中,Pod mywebapp-2-5wj2t所在宿主机中的/etc/resolv.conf文件内容如下。


# nameserver updated by /etc/NetworkManager/dispatcher.d/99-origin-dns.sh
# Generated by NetworkManager
search cluster.local
nameserver 10.70.209.64

在使用Ansible部署OpenShift容器云环境时,Ansible会在每个节点上部署/etc/NetworkManager/dispatcher.d/99-origin-dns.sh文件。每当节点上的NetworkManager服务启动时,该文件就会被运行。它的主要任务包括以下几点。

·修改/etc/resolv.conf,设置搜索域。

·修改/etc/resolv.conf,将宿主机的默认路由网卡IP作为nameserver。本例中,Pod mywebapp-2-5wj2t所在宿主机的IP地址正是10.70.209.64。

·创建dnsmasq配置文件origin-dns.conf和origin-upstream-dns.conf。

·启动dnsmasq服务,并设置宿主机的默认路由网卡的IP为dnsmasq的监听IP。

·创建/etc/origin/node/resolv.conf。

因此,宿主机上的DNS请求也会转到本机上的53端口。

每当NetworkManager服务重启或宿主机重启时,宿主机的/etc/resolv.conf文件内容都会被覆盖,因此,请不要手动修改此文件。

2.Dnsmasq及其配置

从下面netstat -lntp | grep 53命令的输出中可以看出,有一个Dnsmasq进程(进程ID为90456)在Pod网段的网关(10.129.0.1)、Service网段的网关(172.17.0.1)、宿主机IP地址(10.70.209.64)这些IP的53端口上做TCP和UDP监听。


[root@node1 ~]# netstat -tulntp | grep 53
tcp       0   0 10.70.209.64:53    0.0.0.0:*  LISTEN 90456/dnsmasq       
tcp       0   0 172.17.0.1:53      0.0.0.0:*  LISTEN 90456/dnsmasq       
tcp       0   0 10.129.0.1:53      0.0.0.0:*  LISTEN 90456/dnsmasq       
tcp       0   0  127.0.0.1:53      0.0.0.0:*  LISTEN 11243/openshift     
udp       0   0 10.70.209.64:53    0.0.0.0:*          90456/dnsmasq       
udp       0   0 172.17.0.1:53      0.0.0.0:*           90456/dnsmasq       
udp       0   0 10.129.0.1:53      0.0.0.0:*         90456/dnsmasq       
udp       0   0 127.0.0.1:53       0.0.0.0:*         11243/openshift

而在127.0.0.1:53上做TCP和UDP监听的PID为11243的进程如下。


[root@node1 ~]# ps -ef | grep 11243
root      11243  11194  0 Oct01 ?        00:45:25 openshift start \
network --confi g=/etc/origin/node/node-confi g.yaml \ 
--kubeconfi g=/tmp/kubeconfi g --loglevel=2

OpenShift进程内封装了SkyDNS,它是一个开源的构建在etcd之上的分布式服务宣告(announcement)和发现(discovery)服务。利用它可通过DNS查询来发现可用的服务。关于SkyDNS的更多信息,请访问其开源社区 。开源社区版本的SkyDNS将记录保存在etcd中,在做查询时从etcd中获取数据并封装成DNS结果格式给客户端。在Node节点上运行的OpenShift进程利用了SkyDNS Server库,但它并没有采用默认的etcd后端,而是基于OpenShift API服务实现了新的后端,具体请查阅其代码 。SkyDNS调用OpenShift API服务来获取主机名、IP地址等信息,然后封装成标准DNS记录并返回给查询客户端。

Dnsmasq服务的配置目录为/etc/dnsmasq.d。origin-upstream-dns.conf文件中定义了上游DNS名字服务器。


server=10.72.8.10
server=10.2.1.175

这些上游服务器的地址是从DHCP服务器或所在主机的网卡配置文件中获取的。从下面Dnsmasq的启动日志中可看出,Dnsmasq将in-addr.arpa和cluster.local这两个域内的DNS请求都转到了127.0.0.1:53的SkyDNS上,而对其他请求则直接转到了上游DNS域名服务器上。因此,OpenShift中的Dnsmasq扮演的角色更多的是DNS查询的转发器和DNS信息的缓存器。


Oct  7 19:49:56 dnsmasq[90456]: using nameserver 10.2.1.175#53
Oct  7 19:49:56 dnsmasq[90456]: using nameserver 10.72.8.10#53
Oct  7 19:49:56 dnsmasq[90456]: using nameserver 127.0.0.1#53 for domain in- \ 
addr.arpa 
Oct  7 19:49:56 dnsmasq[90456]: using nameserver 127.0.0.1#53 for domain cluster. \ 
local

in-addr.arpa是DNS标准中的一个特殊域,称为逆向解析域,其目的是完成从IP地址到域名的逆向解析。假设待进行逆向解析的IP地址为218.30.103.170,其逆向解析域名则为170.103.30.218.in-addr.arpa。而30.172.in-addr.arpa则表示172.30.0.0/16网段的逆向解析域。 iVn1qnrMcu+hDuY0O2vtmlL8XZ2gvf7q1O8eXRV/c8Jj5yfVnn08fJTEnGS4yyaC

点击中间区域
呼出菜单
上一章
目录
下一章
×