安装CoreDNS
1. 为什么要引入CoreDNS
看看豆包的回答:
引入 CoreDNS 主要是为了解决传统 DNS 服务在现代分布式系统(尤其是 Kubernetes 等容器编排环境)中存在的局限性,同时提供更灵活、可扩展、插件化的 DNS 解决方案。其核心价值体现在以下几个方面:
传统 DNS 服务的局限性
传统 DNS 服务(如 BIND)设计初衷是为静态网络环境提供域名解析,在动态、分布式的现代架构中存在明显不足:
- 配置复杂:依赖大量静态文件(如 Zone 文件),修改需重启服务,难以应对频繁变化的网络(如容器的创建 / 销毁)。
- 扩展性差:功能扩展需修改源码或依赖第三方补丁,无法按需组合功能。
- 适配云原生场景弱:对服务发现、动态域名更新、多集群解析等云原生需求支持不足。
- 性能与资源占用:部分传统 DNS 服务资源占用较高,在容器化环境中不够轻量。
CoreDNS 的引入本质上是 DNS 服务从 “静态、单一功能” 向 “动态、可扩展、云原生友好” 的演进。它通过插件化架构、动态更新能力、轻量部署特性,完美适配了现代分布式系统(尤其是 Kubernetes)的需求,同时兼顾了传统 DNS 场景的灵活性和可管理性,因此成为当前主流的 DNS 解决方案。
即解决传统DNS服务的局限性,适配现代化分布式系统的需求。
废话不多说,直接拿来用看看。
- CoreDNS官网:https://coredns.io/ 英文的。
- Github源码仓库: https://github.com/coredns/coredns 。
- 英文手册:https://coredns.io/manual/toc/ 。
- 中文手册:https://coredns.golang.ac.cn/manual/toc/ 。
- 插件列表:https://coredns.io/explugins/ 。
- 中文插件列表:https://coredns.golang.ac.cn/explugins/,看起来和官方默认的插件列表不一样。
2. 下载和安装CoreDNS
当前最新的版本是1.13.1:

点击页面的【Download】按钮,直接跳转到github下载页面:https://github.com/coredns/coredns/releases/tag/v1.13.1 .
下载第5项的 coredns_1.13.1_linux_amd64.tgz :

下载完成后,将其上传到Linux服务器上。
sh
# 查看上传的文件
[root@localhost ~]# ll coredns_1.13.1_linux_amd64.tgz
-rw-r--r-- 1 root root 22279119 2025-11-12 21:56 coredns_1.13.1_linux_amd64.tgz
# 查看压缩包的sha256哈希值
[root@localhost ~]# sha256sum coredns_1.13.1_linux_amd64.tgz
1693b2bc2091981bc870c89c69fba13bd97d985cb3486e0bc2e932d73964cca8 coredns_1.13.1_linux_amd64.tgz
[root@localhost ~]#可以看到,与页面上面显示的哈希值sha256:1693b2bc2091981bc870c89c69fba13bd97d985cb3486e0bc2e932d73964cca8是一致的,说明文件是正常的。
解压文件:
sh
[root@localhost ~]# tar -zxvf coredns_1.13.1_linux_amd64.tgz
coredns
[root@localhost ~]# ll coredns
-rwxr-xr-x 1 1001 1001 75808952 2025-10-09 04:28 coredns
[root@localhost ~]#修改文件所有者和所有组,并将coredns移动到/usr/bin目录下:
sh
# 修改文件所有者和所有组
[root@localhost ~]# chown root.root coredns
[root@localhost ~]# ll coredns
-rwxr-xr-x 1 root root 75808952 2025-10-09 04:28 coredns
# 移动文件到/usr/bin目录下
[root@localhost ~]# mv coredns /usr/bin/
[root@localhost ~]# ll /usr/bin/coredns
-rwxr-xr-x 1 root root 75808952 2025-10-09 04:28 /usr/bin/coredns
[root@localhost ~]#可以看到解压后就一个文件。尝试执行coredns相关命令。
2.1 查看coredns版本和帮助信息
coredns -version可查看CoreDNS版本信息。coredns -h可查看帮助信息。
sh
[root@localhost ~]# coredns -version
CoreDNS-1.13.1
linux/amd64, go1.25.2, 1db4568
[root@localhost ~]# coredns -h
Usage of coredns:
-conf string
Corefile to load (default "Corefile")
-dns.port string
Default port (default "53")
-p string
Default port (default "53")
-pidfile string
Path to write pid file
-plugins
List installed plugins
-quiet
Quiet mode (no initialization output)
-version
Show version
[root@localhost ~]#