本文记录CoreDNS的一些使用场景配置
# 设置 baidu.com 域名转发到 8.8.8.8 9.9.9.9 去处理;其余任意域名转发到本机 /etc/resolv.conf 文件中指定的 nameserver 处理
baidu.com:53 {
forward baidu.com 8.8.8.8 9.9.9.9
log
}
.:53 {
forward . /etc/resolv.conf
log
}
# 复用配置片段,(monitor)定义配置片段的名字,import调用配置片段
(monitor) {
prometheus localhost:9153
}
baidu.com:53 {
forward baidu.com 8.8.8.8 9.9.9.9
import monitor
log
}
.:53 {
forward . /etc/resolv.conf
import monitor
log
}
# 配置 corefile 变更自动重新加载
reload
只对corefile有效,如果需要自动重新加载zone配置需要使用auto
插件。- 通过配置文件的
SHA512
来确认是否需要重新加载文件,如果新的配置文件存在错误,则不会自动变更,只会沿用原来旧的配置文件。 - 配置重载之后可以通过
coredns_reload_failed_total{}
指标来判断重载是否失败;通过coredns_reload_version_info{hash, value}
来判断重载的次数以及hash。
(common) {
prometheus localhost:9154
reload 2s
}
baidu.com:53 {
forward baidu.com 8.8.8.8 9.9.9.9
import common
log
}
.:53 {
forward . /etc/resolv.conf
import common
log
}
# 自动加载域名解析配置
- auto插件指定
zones
对应的db文件目录,auto插件中的reload指定多久从磁盘重新加载一次zonedb
文件,这里有一点要特别注意,自动变更的前提是zonedb
文件中serial
发生变化。
(common) {
prometheus localhost:9154
reload 2s
}
baidu.com:53 {
forward baidu.com 8.8.8.8 9.9.9.9
import common
log
}
.:53 {
# 多个zones可以用空格隔开
auto soa.internal.taqu.cn {
directory /var/tmp/coredns_test/zones db\.(.*) {1}
reload 5s
}
forward . /etc/resolv.conf
import common
log
}
# 在coredns配置中绑定A记录
- hosts插件可以指定域名和 IP 的绑定关系,需要注意
hosts
插件使用一定要配合fallthrough
否则非hosts
内的域名将无法解析;另外要注意的点就是configmap
是有大小限制的,不能超过1M
Kubernetes ConfigMap,配置如下:
(common) {
prometheus localhost:9154
reload 2s
}
baidu.com:53 {
forward baidu.com 8.8.8.8 9.9.9.9
import common
log
}
.:53 {
# 指定解析的域名
hosts {
1.1.1.1 bbs.soa.internal.ttt.cn.
1.1.1.2 mall.soa.internal.ttt.cn.
fallthrough
}
transfer {
to *
}
forward . /etc/resolv.conf
import common
log
}