搭建DNS服务器用于Kubernetes ingress域名解析

问题背景:

我们的kubernetes环境中使用了ingress-nginx,使用host进行路由。

例如:
console.demo.com路由到 console,管理服务
storage.demo.com路由到storage,存储服务
payment.demo.com路由到payment,支付服务
还有一些动态生成的,url也需要路由到不同的服务中。例如:
有些时候会给一些付费用户部署一个单独的服务,例如
xxxxxxx.user-zone.demo.com

那么,以上不同的子域名,都需要解析到同一个ingress controller上,然后由ingress controller进行路由。

DNS搭建

假设将DNS部署在192.168.0.18服务器上,这个IP后面会用到。

因为需要暴露53端口,所以服务器上监听的该端口需要先关掉。

$ sudo netstat -anp | grep LISTEN | grep ":53"
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      694/systemd-resolve
$ sudo systemctl stop systemd-resolved
$ sudo systemctl disable systemd-resolved
$ sudo vi /etc/systemd/resolved.conf
[Resolve]
DNS=114.114.114.114
FallbackDNS=8.8.8.8
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
DNSStubListener=no
#ReadEtcHosts=yes
$ sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ nslookup jianshu.com
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
Name:   jianshu.com
Address: 39.98.74.233

创建目录/opt/dns/data,用于存储数据

docker run \
  --name dns-server \
  -d \
  --restart=always \
  --publish 53:53/tcp \
  --publish 53:53/udp \
  --publish 10000:10000/tcp \
  --volume /opt/dns/data:/data \
  sameersbn/bind:latest

进入界面,进行DNS解析配置

打开界面进行配置,[https://192.168.0.18:10000], 端口为10000,协议为https

用户名root
密码password

进入配置界面,配置master zone
进入master zone配置界面
进入addresses配置界面
配置并保存addresses

重启docker container生效配置

$ docker restart dns-server

在windows中配置DNS,然后就可以访问了

本地指向DNS Server,就可以访问了

> nslookup payment.demo.com
服务器:  UnKnown
Address:  192.168.0.18

名称:    payment.demo.com
Address:  192.168.0.98

> nslookup console.demo.com
服务器:  UnKnown
Address:  192.168.0.18

名称:    console.demo.com
Address:  192.168.0.98

> nslookup storage.demo.com
服务器:  UnKnown
Address:  192.168.0.18

名称:    storage.demo.com
Address:  192.168.0.98

# 任意一个子域名 + demo.com都被解析到了192.168.0.98了。
> nslookup OMG.demo.com
服务器:  UnKnown
Address:  192.168.0.18

名称:    omg.demo.com
Address:  192.168.0.98

你可能感兴趣的:(搭建DNS服务器用于Kubernetes ingress域名解析)