阿里云容器服务ACK部署了CoreDNS作为集群内的DNS服务器,您可以通过查看CoreDNS日志来分析CoreDNS解析慢、访问高危请求域名等问题。本文介绍如何开启CoreDNS日志分析与监控能力。
前提条件
- 已安装日志组件logtail-ds。
在创建集群时,ACK默认选中日志组件logtail-ds。如果您未安装日志组件logtail-ds,关于如何手动安装的操作,请参见通过日志服务采集Kubernetes容器日志。
- 确保日志应用alibaba-log-controller版本不低于0.2.0.0-76648ee-aliyun。
如果alibaba-log-controller版本低,可直接升级logtail-ds组件。关于如何升级组件,请参见管理组件。
步骤一:开启CoreDNS日志插件
- 开启前,请确保CoreDNS组件为最新版本。升级具体操作,请参见管理组件。
- 全新部署的CoreDNS默认开启log插件,如已开启请忽略本步骤。
在命名空间kube-system下,ACK集群有一个coredns配置项。您可以通过在coredns配置项中的Corefile字段中加上log插件,开启CoreDNS域名解析的日志。关于如何修改配置项的具体步骤,请参见修改配置项。
Corefile: |
.:53 {
errors
log // 此处添加Log插件。
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
// 如果有其它的域,且该域容器需要被采集日志,也需要增加Log插件,格式一致。
demo.com:53 {
...
log //此处添加Log插件。
}
步骤二:开启CoreDNS日志服务
方式一:通过ACK控制台开启
方式二:通过命令行开启
日志采集配置针对ACK进行了自定义资源CRD扩展,您可以直接部署AliyunLogConfig的CRD配置,Log Controller会自动创建日志服务相关采集配置和报表资源。关于如何创建自定义资源AliyunLogConfig的具体步骤,请参见管理自定义资源。
- 下述配置只针对默认CoreDNS中的日志格式生效。如果您自定义了CoreDNS的日志格式,请修改上述CRD配置中的正则表达式Regex部分。
- 关于自定义CoreDNS的日志格式的更多信息,请参见log。
- 关于更详细的日志采集流程及采集配置,请参见通过DaemonSet-CRD方式采集容器日志。
关于如何配置存储、网络、弹性伸缩等资源的AliyunLogConfig的CRD,请参见步骤一:创建系统插件的日志配置文件。
步骤三:查看CoreDNS日志采集
步骤四:创建CoreDNS日志告警
在Kubernetes CoreDNS日志分析仪表盘页面中,您可以根据仪表盘中单个图表进行告警设置。此操作仅支持在日志服务控制台上进行操作。
关闭日志采集
kubectl -n kube-system delete AliyunLogConfig k8s-coredns-log
删除成功后,CoreDNS输出的日志将不再上报到日志服务SLS中。