coredns 安装
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 安装的更多相关文章
- Kubernetes1.91(K8s)安装部署过程(七)--coredns安装
为了是集群内的服务能使用dns进行服务解析,集群内需要使用dns服务器,可以按照kube官方dns,即kubedns或者其他的dns,比如coredns, 本例中按照的为coredns,按照简单,编辑 ...
- CoreDNS安装及集群验证
目录 叙述 安装 测试 一 测试 二 CoreDNS 叙述 截止到目前为止,整个集群的核心组件已经安装完成. 此时集群内部还需要 CoreDNS 组件的支持. 安装 CoreDNS 是以 Pod 的形 ...
- k8s二进制部署 - coredns安装
coredns的资源清单文件rabc.yaml apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube- ...
- 二进制安装 k8s 1.15.6 集群
目录: 第一篇 环境介绍与基础配置 第二篇 部署前期准备工作 第三篇 ETCD 集群部署 第四篇 master节点的部署介绍和前置工作 第五篇 kube-nginx 和 keepalived 部署安装 ...
- k8s1.11.0安装、一个master、一个node、查看node名称是主机名、node是扩容进来的、带cadvisor监控服务
一个master.一个node.查看node节点是主机名 # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集 ...
- k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务
一个master.一个node.查看node节点是ip # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集群 ...
- 【手打】coredns单台使用
目录: coredns介绍 coredns安装 corendns配置 coredns介绍 CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师 ...
- Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记
目录 二进制Metrics&Dashboard安装 二进制高可用集群可用性验证 生产环境k8s集群关键性配置 Bootstrapping: Kubelet启动过程 Bootstrapping: ...
- k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)
k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...
随机推荐
- 【LeetCode】1409. 查询带键的排列 Queries on a Permutation With Key
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 模拟 日期 题目地址:https://leetcode ...
- 【LeetCode】170. Two Sum III - Data structure design 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 数组+字典 平衡查找树+双指针 日期 题目地址:htt ...
- 【LeetCode】565. Array Nesting 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 分析一个简单的goroutine资源池
分析一个简单的goroutine资源池 tunny. 从资源池中获取goroutine并进行处理的逻辑如下: tunny将goroutine处理单元封装为workWrapper,由此可以对gorout ...
- 「算法笔记」Polya 定理
一.前置概念 接下来的这些定义摘自 置换群 - OI Wiki. 1. 群 若集合 \(s\neq \varnothing\) 和 \(S\) 上的运算 \(\cdot\) 构成的代数结构 \((S, ...
- [git]初始化项目文件到git分支
将本地和远程仓库关联并push本地项目 1.VCS -> import into Version Control -> Create Git Repository 选择项目文件 2 ...
- c++—通讯录管理系统
一.运用所学的结构体.地址指针等基础知识,完成通讯录管理系统 二.系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #inclu ...
- Java EE数据持久化框架笔记 • 【目录】
章节 内容 实践练习 Java EE数据持久化框架作业目录(作业笔记) 第1章 Java EE数据持久化框架笔记 • [第1章 MyBatis入门] 第2章 Java EE数据持久化框架笔记 • [第 ...
- OAuth2.0的定义
1. 什么是OAuth2.0 * 用于REST/APIs的代理授权框架(delegated authorization) * 基于令牌Token的授权,在无需暴露用户密码的情况下,使应用能获取对用户数 ...
- LCA/在线(倍增)离线(Tarjan)
概念 祖先 公共祖先 最近公共祖先 方法1:暴力爬山法 方法2:倍增 求公共祖先 求俩点的距离 Tarjan 概念 祖先 有根树中,一个节点到根的路径上的所有节点被视为这个点的祖先,包括根和它本身 公 ...