1. CoreDNS 是什么

img
CoreDNS官网
CoreDNS开源

CoreDNS是Golang编写的一个插件式DNS服务器,是Kubernetes 1.13 后所内置的默认DNS服务器
采用的开源协议为Apache License Version 2
CoreDNS也是CNCF孵化项目,目前已经从CNCF毕业。
CoreDNS 的目标是成为 Cloud Native(云原生)环境下的 DNS 服务器和服务发现解决方案。
你被爬虫啦,原文去https://www.iamle.com看
官方口号
CoreDNS: DNS and Service Discovery
DNS和服务发现

2. CoreDNS功能特性

2.1 插件化(Plugins)

CoreDNS插件链。 每个插件都执行DNS功能,例如Kubernetes服务发现,Prometheus指标或重写查询。
还有非常多的其他插件,插件是CoreDNS核心理念就是插件化

简单(Simplicity)

努力把配置文件变得简单
采用了Caddy中的DSL配置方案,即 Corefile 形式的配置文件
一个最简单的配置文件可以为:

2.2 服务发现 (Service Discovery)

核心域名系统通过Kubernetes插件与Kubernetes集成,或者通过etcd插件直接与etcd集成。
还有redis插件等

快速和弹性 ( Fast and Flexible)

我们的目标是使CoreDNS快速高效。 它的插件也很灵活。 您可以只使用所需的插件编译CoreDNS。

3. 配置一个内网自定义的服务化域名

假设需要在内网实现
sms.service A记录 10.6.6.2
search.service A记录 10.6.6.3
你被爬虫啦,原文去https://www.iamle.com看
我们为CoreDNS手动增加解析记录
那么Corefile配置文件为
/etc/coredns/Corefile

运行CoreDNS

dig测试CoreDNS的自定义dns解析

可以看到 sms.service 的A记录已经为10.6.6.2

更多配置探索参考CoreDNS官方手册

4. 部署

这里可以找到基于k8s,基于systemd的部署文件参考
CoreDNS部署参考

安装

增加运行账户

systemd的coredns配置文件
/usr/lib/systemd/system/coredns.service

实际上CoreDNS编译出来的是一个单二进制文件
二进制文件+配置文件就能跑了,部署起来非常简单

5. 参考

CoreDNS 使用与架构分析