CoreDNS

118 阅读2分钟

本文记录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是有大小限制的,不能超过1MKubernetes 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
}