- 博客/
以二进制形式部署 CoreDNS 服务器
作者
Johny
熟练的 云原生搬砖师
Table of Contents
背景#
CoreDNS 是 Golang 编写的一个插件式 DNS 服务器,Kubernetes 1.13 后内置的默认 DNS 服务器。特点如下:
插件化
:基于 Caddy 框架,实现了一个插件链的架构,将不同应用端功能抽象成插件形式,官网展示 插件列表。配置简单化
:使用 Corefile DSL 语法形式的配置文件,学习成本低。一体化的解决方案
:单独二进制可执行程序,内置插件已满足大多需求。
环境说明
- 操心系统:
ARMBIAN 5.77
- 主机IP:
192.168.8.113
安装部署#
下载安装
CoreDNS
wget https://github.com/coredns/coredns/releases/download/v1.8.5/coredns_1.8.5_linux_arm64.tgz tar xf coredns_1.8.5_linux_arm64.tgz mv coredns /usr/local/bin/
创建启动用户
useradd coredns -s /sbin/nologin
创建
Corefile
服务配置文件mkdir -p /data/coredns cat > /etc/coredns/Corefile << EOF .:53 { bind 0.0.0.0 hosts { #hangup ttl 60 reload 1m fallthrough } forward . /etc/resolv.conf cache { success 65536 3600 300 denial 8192 600 60 prefetch 1 60m 10% } reload 6s log errors } EOF chown coredns:coredns -R /etc/coredns
配置详解
ttl
记录保存时间以秒
为单位fallthrough
如果hosts
中找不到,则进入下一个阶段继续查找,如上述配置文件中,将转发给 系统默认 DNS 进行解析reload
自动重载配置文件forward
将解析转发到系统配置的上游 DNS 服务器进行解析cache
DNS 记录缓reload
自动加载配置文件的间隔时间log
打印日志errors
打印错误日志
创建
systemd
配置文件cat > /lib/systemd/system/coredns.service << EOF [Unit] Description=CoreDNS DNS server Documentation=https://coredns.io After=network.target [Service] PermissionsStartOnly=true LimitNOFILE=1048576 LimitNPROC=512 CapabilityBoundingSet=CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_BIND_SERVICE NoNewPrivileges=true User=coredns WorkingDirectory=/etc/coredns/ ExecStart=/usr/local/bin/coredns -conf=/etc/coredns/Corefile ExecReload=/bin/kill -SIGUSR1 \$MAINPID Restart=on-failure [Install] WantedBy=multi-user.target EOF
添加 主机记录
sed -i "/hangup/a 192.168.8.1 treesir.io" /etc/coredns/Corefile
删除主机记录
sed -i "/treesir.io/d" /etc/coredns/Corefile
启动服务
systemctl daemon-reload \ && systemctl enable coredns.service --now \ && systemctl status coredns.service
测试使用#
测试添加 A 记录
www.treesir.io
至192.168.8.1
sed -i "/hangup/a 192.168.8.1 www.treesir.io" /etc/coredns/Corefile
dig www.treesir.io @192.168.8.113
dig www.baidu.com @192.168.8.113
测试解析百度,同样正常得到解析。
TODO#
参考文档
相关文章
Coredns 出现间断性无法正常解析域名问题
·1536 字·4 分钟·
k8s
coredns
dns
kubernetes 集群中 控制平面 组件频繁发生重启的问题排查记录
·688 字·2 分钟·
k8s
coredns
flannel
fix
使用 Docker Compose 5分钟 部署 一台邮件服务器
·2610 字·6 分钟·
docker
email
install
dokcer-compose
记录一次 JupyterLab 插件打包问题的修复
·1485 字·3 分钟·
k8s
devops
jupyterlab
jenkins
使用 Cronjob 定时清理 ElasticSearch 中的日志索引
·455 字·1 分钟·
efk
k8s
shell
cronjob
初探 K8s VPA 垂直更改 Pod 资源请求
·643 字·2 分钟·
k8s
vpa
pod