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. 【LeetCode】144. Binary Tree Preorder Traversal 解题报告(Python&C++&Java)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 迭代 日期 题目地址:https://leetc ...

  2. 【LeetCode】150. Evaluate Reverse Polish Notation 解题报告(Python)

    [LeetCode]150. Evaluate Reverse Polish Notation 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/ ...

  3. idea使用教程-idea简介

    集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集成了代码编写功 ...

  4. 源码解析C#中PriorityQueue(优先级队列)的实现

    前言 前段时间看到有大佬对.net 6.0新出的PriorityQueue(优先级队列)数据结构做了解析,但是没有源码分析,所以本着探究源码的心态,看了看并分享出来.它不像普通队列先进先出(FIFO) ...

  5. Java Web程序设计笔记 • 【第10章 JSTL标签库】

    全部章节   >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...

  6. 【MySQL作业】连接查询综合应用——美和易思连接查询综合应用习题

    点击打开所使用到的数据库>>> 1.统计每件商品的销售数量和销售金额,要求按照销售量和销售金额升序显示商品名.销售量和销售金额, 由于需要统计每件商品的销售数量和销售金额,即便某种商 ...

  7. 编写Java程序,在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小

    查看本章节 查看作业目录 需求说明: 在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小 实现思路: 创建ImageFileFilter类实现FilenameFilter接口,且重写 ...

  8. YangTools从YANG生成Java类(Maven)

    1.说明 ODL提供了Yang Tools工具从YANG文件生成Java类, 本文介绍使用Maven插件的方式生成, 基于yang-maven-plugin这个插件. 2.创建Maven工程 Ecli ...

  9. SpringBoot集成Log4j2框架

    1.说明 本文详细介绍Spring Boot集成Log4j2框架的方法, 基于已经创建好的Spring Boot工程, 由于Spring Boot默认使用的是Logback框架, 需要先排除掉Logb ...

  10. SpringBoot集成MyBatis-Plus框架详细方法

    1.说明 本文详细介绍Spring Boot集成MyBatis-Plus框架的方法, 使用MySQL数据库进行测试, 包括完整的开发到测试步骤, 从一开始的Spring Boot工程创建, 到MySQ ...