首页/云/Kubernetes 速查/CoreDNS 配置(Corefile)定制
网络与服务55 条

CoreDNS 配置(Corefile)定制

CoreDNS 行为由 kube-system/coredns ConfigMap 中的 Corefile 定义:可加 hosts 静态记录、调 forward 上游、开日志插件排查解析问题。

Kubernetes 速查云更新于 2026-10-13

CoreDNS 配置放在哪

集群内部的服务发现由 CoreDNS 提供,解析行为完全由 kube-system 命名空间里 coredns ConfigMap 中的 Corefile 决定。该文件由若干插件块组成:kubernetes 插件负责响应集群内部域名,forward 插件把外部域名交给上游解析,cache 插件缓存结果。自定义解析行为,就是从改这份配置开始。

基本信息

配置位置kube-system 命名空间下的 coredns ConfigMap
配置语言Corefile,按插件块书写
监听端口53(TCP 与 UDP)
生效方式reload 插件自动感知,必要时滚动重启
上游来源forward 指向的文件或指定解析服务器

典型使用场景

  • 为内部系统添加静态解析记录,避免逐个改业务侧 hosts
  • 外部域名要走指定的内部解析服务器,需要改 forward 目标
  • 排查解析超时或结果异常,临时打开日志插件观察查询
  • 调整缓存时长,在减轻上游压力与加快变更生效之间取舍
  • 核对集群内部域名后缀与业务配置是否一致,排除拼写错误

查看与默认内容

查看与默认内容
kubectl -n kube-system get cm coredns -o yaml     # 查看完整 Corefile
# 典型 Corefile 片段:
# .:53 {
#     errors              # 输出解析错误
#     health              # 健康检查端点
#     ready               # 就绪状态
#     kubernetes cluster.local in-addr.arpa ip6.arpa   # 集群内部域名
#     forward . /etc/resolv.conf                       # 外部域名转发
#     cache 30                                         # 缓存 30 秒
#     loop                                             # 检测转发环路
#     reload                                           # 自动加载配置
# }

生效与验证

生效与验证
kubectl -n kube-system rollout restart deploy/coredns   # 手动滚动重启
kubectl -n kube-system rollout status deploy/coredns    # 确认副本就绪
kubectl -n kube-system logs -l k8s-app=kube-dns --tail=50   # 看启动与解析错误
kubectl run dns-test --rm -it --image=busybox -- nslookup kubernetes.default   # 集群内验证

常用插件读法

插件作用使用提示
kubernetes响应集群内部域名默认服务域名为 cluster.local
forward转发外部查询可指向内部解析服务器或上级服务器
cache缓存解析结果时长越长,变更生效越慢
hosts静态解析记录适合少量固定域名,注意与上游优先级
log 与 errors输出查询日志和错误排查时临时开启,长期开启日志量很大
Corefile 语法错误会让 CoreDNS 无法启动,集群内所有服务解析随之失败。修改前备份原内容,改完立即检查 Pod 日志与就绪状态。
多数情况下 reload 插件会让改动自动生效,无需手动重启;若观察不到变化,再滚动重启部署,并用一次集群内解析测试确认结果。

易错点

  • 括号或缩进不匹配:CoreDNS 直接启动失败,影响面是整个集群的服务发现
  • 改完上游地址不做连通性验证:外部域名全部解析失败,业务表现为连接超时而非解析报错
  • 长期开启查询日志:日志量激增,把磁盘与日志采集链路拖垮
  • 修改前不备份:出问题时没有可回滚的原始内容,只能凭记忆重建

数据来源与参考

  • Kubernetes 官方文档 · Customizing DNS Service / CoreDNS
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌