云容器实例 CCI-插件管理:为CoreDNS配置日志输出选项

时间:2024-09-27 16:27:02

为CoreDNS配置日志输出选项

CoreDNS使用log插件 域名 解析日志打印到标准输出,可通过配置日志输出选项灵活定义输出的日志内容,可在 AOM 中查看解析日志。在域名解析请求量较大的业务场景下,频繁打印域名解析日志到标准输出可能会对CoreDNS的性能造成明显的影响。

当前log插件支持解析成功、解析失败和解析错误三种日志输出选项配置,如图:
图3 选项配置

对应的后端配置格式如下:

log [NAMES...] [FORMAT] {
    class CLASSES...
}

CLASSES表示应记录的响应类别,是一个以空格分隔的列表。

日志输出选项配置具体含义如下:

  • 输出解析成功日志:

    勾选后将在log插件CLASSES中添加success响应参数,CoreDNS会将解析成功的日志打印到标准输出。

  • 输出解析失败日志:

    勾选后将在log插件CLASSES中添加denial响应参数, CoreDNS会将解析失败的日志,例如NXDOMAIN或nodata响应(名称存在,类型不存在)打印到标准输出。

  • 输出解析错误日志:

    勾选后将在log插件CLASSES中添加error响应参数,CoreDNS会将解析错误的日志打印到标准输出,例如SERVFAIL、NOTIMP、REFUSED等任何表示远程服务器不解析的请求消息,便于及时发现DNS服务器不可用等问题。

  • 全不勾选:

    如果未选中上述任一配置,则将关闭日志插件。

    关闭日志插件仅影响CoreDNS的解析记录,而CoreDNS服务进程的日志记录依然会显示,不过该部分日志量极小,对性能无影响。

以勾选“输出解析成功日志”与“输出解析失败日志”为例,其后端log插件配置为:
log . {
    class success denial
}

创建成功的CoreDNS对应的ConfigMap如下:

apiVersion: v1
data:
  Corefile: |-
    .:5353 {
        cache 30
        errors
        log . {
          classes success denial
        }
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream /etc/resolv.conf
          fallthrough in-addr.arpa ip6.arpa
        }
        loadbalance round_robin
        prometheus 0.0.0.0:9153
        proxy . /etc/resolv.conf
        reload
    }
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
support.huaweicloud.com/usermanual-cci/cci_01_0057.html