概述

coredns之所以如此名声大噪,就是因为从kubernetes1.9开始引入,作为kubernetes内部服务发现的默认dns。毫无疑问kubernetes是coredns的后端之一,所以我们讲coredns,就从kubernetes作为其后端开始。

coredns的诸多特性网上很多文章都有提及,在这里不再赘述。简单对比下其相对于bind和skydns的优势:

  • bind可以将解析存储到mysql或者文件中,coredns也可以将解析存储到etcd或者文件中,也支持将kubernetes作为其后端,直接调用kubernetes的api获取解析数据,然后缓存到本地内存。coredns支持插件扩展,目前在第三方插件中还同时支持将powerdns及amazondns作为其后端,后续还会支持越来越来的后端。bind在kubernetes的应用场景下,基本无用武之地。
  • coredns本身就是skydns的继任者,支持skydns的所有特性,而且性能更好,更易于扩展。其插件式特性无论是bind还是skydns都无法比拟。

coredns官方网站地址:https://coredns.io

coredns代码地址: https://github.com/coredns/coredns

coredns官方插件地址:https://coredns.io/plugins

coredns第三方插件地址:https://coredns.io/explugins/

配置kubernetes后端存储

配置说明

其实官方有kubernetes插件的相关示例及配置说明,地址如下:https://coredns.io/plugins/kubernetes/

我这里就以官方的配置示例作说明:

kubernetes [ZONES...] {
resyncperiod DURATION
endpoint URL [URL...]
tls CERT KEY CACERT
namespaces NAMESPACE...
labels EXPRESSION
pods POD-MODE
endpoint_pod_names
upstream [ADDRESS...]
ttl TTL
fallthrough [ZONES...]
}

下面对一些常用参数作下说明:

  • resyncperiod: 用于从kubernetes的api同步数据的时间间隔
  • endpoint: 指定kubernetes的api地址,coredns会自动对其执行健康检查并将请求代理到健康的节点上。示例如下:
    endpoint https://10.1.61.129:6443 https://10.1.61.130:6443
  • tls: 用于指定连接远程kubernetes api的相关证书。示例:
    tls admin.pem admin-key.pem ca.pem
  • pods: 指定POD-MODE,有以下三种:
    • disabled:默认
    • insecure:返回一个A记录对应的ip,但并不会检查这个ip对应的Pod当前是否存在。这个选项主要用于兼容kube-dns
    • verified:推荐的方式,返回A记录的同时会确保对应ip的pod存在。比insecure会消耗更多的内存。
  • upstream: 定义外部域名解析转发的地址,可以是一个ip地址,也可以是一个resolv.conf文件。示例:
    upstream 8.8.8.8:53 8.8.4.4:53
  • ttl: 默认5s,最大3600s

示例

一个完整的配置示例:

# /opt/coredns/cfg/Corefile
.:53 {
kubernetes wh01 {
resyncperiod 10s
endpoint https://10.1.61.175:6443
tls admin.pem admin-key.pem ca.pem
pods verified
endpoint_pod_names
upstream /etc/resolv.conf
}
health
log /var/log/coredns.log
prometheus :9153
proxy . /etc/resolv.conf
cache 30
reload 10s
}

也可以使用如下写法:

wh01 {
kubernetes {
resyncperiod 10s
endpoint https://10.1.61.129:6443
tls admin.pem admin-key.pem ca.pem
pods verified
endpoint_pod_names
upstream /etc/resolv.conf
}
health
log
errors
prometheus :9153
proxy . /etc/resolv.conf
cache 30
reload 10s
}

其他配置也简单作下说明:

  • health:插件,用于检测当前配置是否存活,默认监听http 8080端口,可配置
  • log: 插件,将日志打印到标准输出
  • errors:将错误打印到标准输出
  • prometheus: 插件,用于prometheus监控
  • proxy: wh01之外的域名解析都通过proxy指定的地址实现代理
  • cache: 插件,用于在内存中缓存dns解析,单位为s
  • reload: 插件,单位为s,如果配置文件发生变更,自动reload的间隔

启动coredns:

nohup /opt/coredns/bin/coredns -conf /opt/coredns/cfg/Corefile &

使用systemd启动coredns

# cat /lib/systemd/system/coredns.service

[Unit]
Description=CoreDNS
Documentation=https://coredns.io [Service]
ExecStart=/opt/coredns/bin/coredns \
-conf /opt/coredns/cfg/Corefile Restart=on-failure
RestartSec=5 [Install]
WantedBy=multi-user.targe # systemctl start coredns
# systemctl enable coredns

CoreDNS配置kubernetes作为后端的更多相关文章

  1. CoreDNS配置etcd作为后端

    配置说明 官方有使用etcd插件的详细说明,地址如下:https://coredns.io/plugins/etcd/ 需要特别说明的是,目前coredns只支持etcd v2版本的api 这里直接摘 ...

  2. 三、安装并配置Kubernetes Node节点

    1. 安装并配置Kubernetes Node节点 1.1 安装Kubernetes Node节点所需服务 yum -y install kubernetes   通过yum安装kubernetes服 ...

  3. CoreDNS for kubernetes Service Discovery

    一.CoreDNS简介 Kubernetes包括用于服务发现的DNS服务器Kube-DNS. 该DNS服务器利用SkyDNS的库来为Kubernetes pod和服务提供DNS请求.SkyDNS2的作 ...

  4. 配置kubernetes UI图形化界面

    配置Kubernetes网络 在master和nodes上都需要安装flannel yum install flannel 在master和nodes上都需要配置flannel vi /etc/sys ...

  5. 【DevOps】在CentOS中安装Rancher2,并配置kubernetes集群

    准备 一台CentOS主机,安装DockerCE,用于安装Rancher2 一台CentOS主机,安装DockerCE,用于安装kubernetes集群管理主机 多台CentOS主机,安装Docker ...

  6. 配置kubernetes.client的参数遇到的坑

    配置kubernetes.client遇到的一些坑: 一,job-name不能重名,如果job-name已经有了,再创建job,则会发生冲突cliflict 这样将会报以下错误:Reason : Co ...

  7. 快速安装与配置kubernetes集群搭

    Kubernetes是什么? 首先,它是一个全新的基于容器技术的分布式架构领先方案.这个方案尽然很新,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要成果.确切地说,kubernete ...

  8. 【Linux】【Services】【SaaS】Docker+kubernetes(8. 安装和配置Kubernetes)

    1. 概念 1.1. 比较主流的任务编排系统有mesos+marathon,swarm,openshift(红帽内部叫atom服务器)和最著名的kubernetes,居然说yarn也行,不过没见过谁用 ...

  9. windows server,nginx安装,配置,运行nodeJS后端的web项目的实现,以及错误分析及解决方法

    一.安装nginx 下载windows版nginx (http://nginx.org/download/nginx-1.12.2.zip),之后解压到需要放置的位置(C:\nginx) 二.将Ngi ...

随机推荐

  1. maven实战读书笔记(三)

    maven将一系列的步骤都封装为一系列的插件,运行命令后一系列的插件运行

  2. "重力锁屏"Beta版使用说明

    一.产品介绍 重力锁屏是基于android系统的一款锁屏软件.它利用重力感应器来判断用户的动作从而自动锁屏亮屏,是锁屏软件的一大创新.相比传统的锁屏软件,“重力锁屏”从可操作性.方便性.功能全面性都有 ...

  3. 修改MyEclipse工作空间

    MyEclipse如何更改工作空间,MyEclipse是java开发常用工具,在开发的过程中我们会经常切换工作空间来切换项目内容,初学者来说有必要讲一下如何切换工作空间 工具/原料   MyEclip ...

  4. 通过分析java heap dump解决生产问题

    最近在生产环境遇到一个问题,正常情况下,ECS CPU始终保持在10%以下,内存也只占用40%左右,但是连续2天出现了CPU占用100%的情况,然后系统卡住.看阿里云的ECS监控,能看到CPU飙到了1 ...

  5. Delphi中使用OLE方法操作Excel

    首先创建 Excel 对象,使用ComObj: var ExcelApp: Variant; ExcelApp := CreateOleObject( ′Excel.Application′ ); 注 ...

  6. jndi连接数据库配置过程总结

    一.我们先找到tomcat安装目录中conf目录下的context.xml更改里面的内容: <?xml version='1.0' encoding='utf-8'?> <Conte ...

  7. [转帖]CentOS基础命令大全

    https://www.toutiao.com/i6601298434651587085/ 1.关机 (系统的关机.重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init ...

  8. 从解决一个java.lang.NoSuchMethodError想到的

    今天在发布系统部署一个web app的时候,发现应用服务器(tomcat 7.0.26)不能正常启动,于是远程登陆到服务器上查看应用服务器的启动日志,在tomcat_home的logs/localho ...

  9. log4j2分析总结(一)

    现在公司用log4j2 进行日志记录,我也看了相关的资料,现在进行记录学习总结下 整体结构 Appenders里设置日志的输出方式.级别和格式 Loggers里设置全局的级别和绑定appenders里 ...

  10. TCP/IP协议三次握手和四次挥手大白话解说

    前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...