coredns简介

CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件。CoreDNS是云本土计算基金会启动阶段项目。
CoreDNS是SkyDNS的继任者。 SkyDNS是一个薄层,暴露了DNS中的etcd中的服务。 CoreDNS建立在这个想法上,是一个通用的DNS服务器,可以与多个后端(etcd,kubernetes等)进行通信。
CoreDNS旨在成为一个快速灵活的DNS服务器。 这里的关键灵活指的是:使用CoreDNS,您可以使用DNS数据进行所需的操作。 还可以自已写插件来实现DNS的功能。
CoreDNS可以通过UDP / TCP(旧式的DNS),TLS(RFC 7858)和gRPC(不是标准)监听DNS请求。
CoreDNS目前支持的行为,括号里面的英文表示插件:

  • 从文件提供区域数据; 支持DNSSEC(仅限NSEC)和DNS(file)。
  • 从主机检索区域数据,即充当辅助服务器(仅限AXFR)(secondary)。
  • 快速签署区域数据(dnssec)
  • 响应负载均衡(loadbalance)
  • 允许区域传输,即充当主服务器(file)
  • 从磁盘自动加载区域文件(auto)
  • 缓存(cache)
  • 对endpoint的健康检查(health)
  • 使用ETCD作为后端,即SkyDNS(ETCD)的101.5%替换(etcd)
  • 使用k8s(kubernetes)作为后端(kubernetes)
  • 作为一个代理转发查询到一些其他(递归)域名服务器(proxy)
  • 提供指标(使用Prometheus)(metrics)
  • 提供查询(log)和错误(errors)日志记录
  • 支持CH类:version.bind和friends(chaos)
  • 分析支持(pprof)
  • 重写查询(qtype,qclass和qname)(rewrite)
  • 回传所使用的IP地址,传输和端口号(whoami)

安装

查找coredns的release版本,当前测试版本为:1.7.0

https://github.com/coredns/coredns/releases

下载

wget https://github.com/coredns/coredns/releases/download/v1.7.0/coredns_1.7.0_linux_amd64.tgz
tar xf coredns_1.7.0_linux_amd64.tgz
mv coredns /usr/sbin

查看coredns版本

# coredns -version
CoreDNS-1.7.0
linux/amd64, go1.14.4, f59c03d

配置systemctl启动方式

vim /usr/lib/systemd/system/coredns.service

[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=root
ExecStart=/usr/sbin/coredns -conf=/etc/coredns/corefile
ExecReload=/bin/kill -SIGUSR1 $MAINPID
Restart=on-failure [Install]
WantedBy=multi-user.target

  

配置

1. 创建目录

mkdir /etc/coredns
mkdir /etc/coredns/zones

2. 添加配置文件

vim /etc/coredns/corefile

.:53 {
# 配置轮询
loadbalance
# 最后所有的都转发到系统配置的上游dns服务器去解析
forward . 8.8.8.8 8.8.4.4
# 缓存时间
cache 10
# 自动加载配置文件的间隔时间
reload 10s
# 输出日志
log
# 输出错误
errors # 使用auto插件配置 test.com ,只会对 test.com 这个域的请求应答。
auto test.com {
# test.com 的zones位置,会自动读取 zones下的文件,文件命名方式为 db.test.com ,虽然会读取其他的文件,但只会对auto指令后的域名做应答。
directory /etc/coredns/zones
# 每10s 重新加载 zones 的文件内容。
reload 10s
} # hosts插件,不支持泛域名解析。
hosts {
172.19.8.115 t1.qq.com
172.19.8.114 t2.qq.com
# ttl
ttl 60
# 重载hosts配置
reload 10s
# 继续执行
fallthrough
}
}

  

```test.com```采用zone文件格式,注意文件名的格式,```db+domain```的格式。如```db.test.com```,此文件为```test.com```的域名定义文件。

cat /etc/coredns/zones/db.test.com

$TTL 3600 ; 记录超时时间
$ORIGIN test.com. ; 指定origin,下面的@符号可以作为他的别名,注意后面的.
; SOA 后面的记录及通讯地址 比如 ns.test.com. admin.test.com. 并没有什么卵用, 测试随便写什么好像都不影响
@ IN SOA ns.test.com. admin.test.com. (
2020082626 ; Serial
4H ;Refresh
1H ; Retry
7D ; Expire
4H ) ;Negative Cache TTL test.com. IN NS ns1 ; ns.example.com is a nameserver for example.com
test.com. IN NS ns2 ; ns.somewhere.example is a backup nameserver for example.com
ns1 IN A 172.19.8.113
ns2 IN A 172.19.8.114 qq IN A 172.19.8.11
qq IN A 172.19.8.12
*.test.com. IN A 172.19.8.13

  

> 1. 每次修改需要修改 SOA serial。
> 2. *.test.com. 为泛域名解析。hosts插件不支持泛域名解析。

修改完后显示

[INFO] plugin/file: Successfully reloaded zone "test.com." in "/etc/coredns/zones/db.test.com" with 2020082628 SOA serial
[INFO] plugin/file: Sent notifies for zone "test.com." to []

服务器 /etc/resolv.conf 配置

nameserver 172.19.8.113 # 指向dns本机即可

  

另外一种配置hosts方式

#
.:53 {
# 配置轮询
loadbalance
# 最后所有的都转发到系统配置的上游dns服务器去解析
forward . 8.8.8.8 8.8.4.4
# 缓存时间
cache 10
# 自动加载配置文件的间隔时间
reload 10s
# 输出日志
log
# 输出错误
errors # 使用auto插件配置 test.com ,只会对 test.com 这个域的请求应答。
auto test.com {
# test.com 的zones位置,会自动读取 zones下的文件,文件命名方式为 db.test.com ,虽然会读取其他的文件,但只会对auto指令后的域名做应答。
directory /etc/coredns/zones
# 每10s 重新加载 zones 的文件内容。
reload 10s
} # hosts插件,不支持泛域名解析。
hosts /etc/coredns/hosts/hostsfile {
# ttl
ttl 60
# 重载hosts配置
reload 10s
# 继续执行
fallthrough
}
}

  

> hosts 指定文件,但是只能配一个hosts块。

cat /etc/coredns/hosts/hostsfile

172.19.8.113 t1.qq.com
172.19.8.114 t1.qq.com
172.19.8.114 t2.qq.com
172.19.8.115 t3.qq.com

coredns 安装的更多相关文章

  1. Kubernetes1.91(K8s)安装部署过程(七)--coredns安装

    为了是集群内的服务能使用dns进行服务解析,集群内需要使用dns服务器,可以按照kube官方dns,即kubedns或者其他的dns,比如coredns, 本例中按照的为coredns,按照简单,编辑 ...

  2. CoreDNS安装及集群验证

    目录 叙述 安装 测试 一 测试 二 CoreDNS 叙述 截止到目前为止,整个集群的核心组件已经安装完成. 此时集群内部还需要 CoreDNS 组件的支持. 安装 CoreDNS 是以 Pod 的形 ...

  3. k8s二进制部署 - coredns安装

    coredns的资源清单文件rabc.yaml apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube- ...

  4. 二进制安装 k8s 1.15.6 集群

    目录: 第一篇 环境介绍与基础配置 第二篇 部署前期准备工作 第三篇 ETCD 集群部署 第四篇 master节点的部署介绍和前置工作 第五篇 kube-nginx 和 keepalived 部署安装 ...

  5. k8s1.11.0安装、一个master、一个node、查看node名称是主机名、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是主机名 # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集 ...

  6. k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是ip # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集群 ...

  7. 【手打】coredns单台使用

    目录: coredns介绍 coredns安装 corendns配置 coredns介绍 CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师 ...

  8. Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记

    目录 二进制Metrics&Dashboard安装 二进制高可用集群可用性验证 生产环境k8s集群关键性配置 Bootstrapping: Kubelet启动过程 Bootstrapping: ...

  9. k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)

    k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...

随机推荐

  1. 【剑指Offer】07. 重建二叉树 解题报告(Java & Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 基本方法:线性查找根节点的位置 方法优 ...

  2. GCD (hdu 5726)

    GCD Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  3. 关于 TCP/IP

    基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层.网络层.传输层和应用层. (1)应用层:这里面有http,ftp 等等我们熟悉的协议. (2)传输层:著名的TCP和UDP协议就在这个层 ...

  4. Bean拷贝工具

    Apache BeanUtils Spring BeanUtils cglib BeanCopier Hutool BeanUtil Mapstruct Dozer 1.Apache  BeanUti ...

  5. Redis常见使用场景

    缓存 数据共享分布式 分布式锁 全局ID 计数器 限流 位统计 购物车 用户消息时间线timeline 消息队列 抽奖 点赞.签到.打卡 商品标签 商品筛选 用户关注.推荐模型 排行榜 1.缓存 St ...

  6. @Transactional 失效

    1.Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用. @Transactional    void insertTestWrongModi ...

  7. 第四十八个知识点:TPM的目的和使用方法

    第四十八个知识点:TPM的目的和使用方法 在检查TPM目的之前,值得去尝试理解TPM设计出来的目的是为了克服什么样的问题.真正的问题是信任.信任什么?首先内存和软件运行在电脑上.这些东西能直接的通过操 ...

  8. 编写Java程序,演练匿名内部类应用

    返回本章节 返回作业目录 需求说明: 定义一个抽象类 Bird,创建使用匿名内部类的操作类Action. 实现思路: 定义抽象类Bird.在其中定义一个String类型的name属性,一个返回类型是i ...

  9. IPv6地址格式

    1.说明 IPv6是互联网协议的第六版, 现有IPv4只支持大概40亿个网络地址, 而IPv6支持3.4e38个网络地址. IPv4的地址长度是32位(bit), IPv6的地址长度是128位. 尽管 ...

  10. mysql在Linux下大小写敏感设置

    默认情况下,mysql在windows下是不区分大小写的,但是mysql在linux下大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名 ...