CoreDNS部署笔记
在企业高可用DNS架构部署方案博文中我们使用的是传统老牌DNS软件--Bind, 现在不少企业内部流行容器化部署,所以我们也可以将Bind替换为 CoreDNS。同时CoreDNS是 Kubernetes的一个重要组件,稳定性不必担心。
部署
CoreDNS部署方式非常简单
- config/corefile
vqiu.cn.:53 {
whoami
forward . 10.10.100.20
cache {
success 200
denial 100
}
}
. {
hosts {
fallthrough
}
forward . 223.5.5.5:53 223.6.6.6:53
reload 30s
health
errors
cache 180
log
loadbalance
prometheus 0.0.0.0:9153
file /etc/coredns/db.example.com example.com
}
配置文件各参数的含义如下:
名称 | 含义 |
---|---|
errors | 错误会被记录到标准输出。 |
health | 健康状况,可以通过http://localhost:8080/health查看。 |
kubernetes | 根据服务的IP响应DNS查询请求,Cluster Domain默认为cluster.local。 |
prometheus | 可以通过http://localhost:9153/metrics获取prometheus格式的监控数据。 |
proxy | 本地无法解析后,向上级地址进行查询,默认使用宿主机的/etc/resolv.conf配置。 |
cache | 缓存时间。 |
vqiu.cn
需要条件转发的域名
config/db.example.com
$ORIGIN example.com.
@ 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. (
2018070500 ; serial
7200 ; refresh in seconds (2 hours is 7200)
3600 ; retry (1 hour)
1209600 ; expire (2 weeks)
3600 ; minimum (1 hour)
)
3600 IN NS a.iana-servers.net.
3600 IN NS b.iana-servers.net.
gateway IN A 192.168.1.1
docker-compose.yml
version: '2.4'
services:
coredns:
cpus: 1
mem_limit: 512m
memswap_limit: 512m
mem_swappiness: 0
image: coredns/coredns:1.8.3
#container_name: coredns
restart: always
networks:
- dns
volumes:
- './config:/etc/coredns:ro'
scale: 1
ports:
- "53:53/udp"
- "53:53/tcp"
- "9153:9153/tcp"
- "8080:8080/tcp" # 健康检测URL /health
command: -conf /etc/coredns/Corefile
networks:
dns:
external:
name: dns-net
Tips:单机跑一个应用容器时网络建议使用
host
模式
服务启动
docker-compose up -d
监控数据预览
Grafana
ID:12539