CoreDNS -- DNS服务与服务发现

DNS服务器

1. 架构 -- 微内核

  • 几乎所有coreDNS功能都是由插件进行提供,每个服务对应一组插件链

2. 安装方式

  • 二进制文件
  • Docker
  • 源码编译:添加自定义插件]

3. query

  • step1/3 :如果某个query端口存在多个Servers则优先使用最长后缀匹配Servers,然后将请求路由到匹配成功的Server
  • step2/3:依次执行server中定义的plugin-chains, 执行顺序依照 plugin.cfg
  • step3/3:每个插件都会审查query并决定是否处理这个query

4. Plugin 行为

  • Query is Processed

    • 插件链上某个插件正在处理查询,并生成一个响应返回给客户端,之后的插件不会被执行
  • Query is Not Processed
    • 当前插件决定不处理请求,则由插件链之后的插件处理,如果到最后都没有插件处理请求,则coreDNS返回 SERVFAIL给客户端
  • Query is Processed With Fallthrough
    • 当前插件正在处理请求,如果能够生成响应则直接返回响应,如果不能则希望后面的插件处理 fallthough
  • Query is Processed With Hint
    • 该插件总是调用下一个插件,但允许该插件查看写入的返回客户端的响应

5. 配置

文档:https://coredns.io/manual/toc/#configuration

  • Corefile

    • 通过 -cnf 参数指定或默认当前工作目录下找该文件
    • 文件中包含一个或多个servers块,一个server中包含一个或多个插件
    • Servers中的插件顺序决定不了插件链的执行顺序,其执行顺序由 plugin.cfg决定
    • 注释以 # 开头,到行尾都是注释部分
  • Environment Variables
    • {$ENV_VAR} -- 通过 花括号 + $ 方式在配置文件中引用环境变量
  • Importing Other Files
    • import 可以在 Corefile文件中任意部分使用,主要配合重用片段(reused snippets)使用 -- don't repeat yourself 原则的实现
(snip) {
errors
log
prometheus
}
# 通过 (name) 方式定义重用片段
.:53 {
whoami
import snip
}
  • Server blocks
. {
# plugin list
}
# . 表示匹配所有zone
  • Zone name or a list of zone names
  • 通过 在 zone name 后面添加 <zone>:<port> 指定sever监听的端口,默认为53,可以通过bind指定绑定的网口
.:1054 {
bind lo
whoami
}
.:1054 {
bind eth0
whoami
}
# 因为绑定的网口不一样,所以相同端口相同不会有冲突
  • specifily a protocol

    • dns:// for plain DNS (the default if no scheme is specified)
    • tls:// for DNS over TLS
    • https:// for DNS over HTTPS
    • grpc:// for DNS over gRPC
  • Example

coredns.io:5300 {
file db.coredns.io
}
example.io:53 {
log
errors
file db.example.io
}
example.net:53 {
file db.example.net
}
.:53 {
kubernetes
forward . 8.8.8.8
log
errors
cache
}

CoreDNS -- DNS服务与服务发现的更多相关文章

  1. 分布式服务注册和发现consul 简要介绍

    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架 ...

  2. Docker+Consul+Registrator 实现服务注册与发现

    Docker+Consul+Registrator实现服务注册与发现 逻辑图 实现nginx节点自动化加入容器IP代理 1.三台Consul agent server作为高可用通过Consul Tem ...

  3. Consul之:服务注册与发现

    一.服务的管理(注册与发现)有三种方式: 1:通过配置文件的方式静态注册2:通过HTTP API接口来动态注册(spring cloud使用方式,spring cloud中使用的是consul api ...

  4. 一、springcloud服务注册、发现、调用(consul/eureka)

    1.Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...

  5. 【转帖】基于Zookeeper的服务注册与发现

    http://www.techweb.com.cn/network/hardware/2015-12-25/2246973.shtml 背景 大多数系统都是从一个单一系统开始起步的,随着公司业务的快速 ...

  6. 微服务~Consul服务注册与发现

    服务发现是基于微服务架构的关键原则之一.尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱.Consul通过HTTP API和DNS提供服务发现服务.Spring Cloud Consul利 ...

  7. SpringCloud核心教程 | 第三篇:服务注册与发现 Eureka篇

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...

  8. Spring Cloud Alibaba(一) 如何使用nacos服务注册和发现

    Nacos介绍 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构 ...

  9. 微服务, 架构, 服务治理, 链路跟踪, 服务发现, 流量控制, Service Mesh

    微服务, 架构, 服务治理, 链路跟踪, 服务发现, 流量控制, Service Mesh 微服务架构   本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件.本文侧 ...

  10. .Net Core微服务系列--服务发现

    什么是服务发现 首先我们先思考一个问题,当我们在浏览器中输入一个域名比如baidu.com,然后发生了什么才能让我们访问到百度的网页?简单来说,浏览器会首先从主机的hosts文件中查看是否有baidu ...

随机推荐

  1. 万界星空科技QMS质量管理系统

    QMS(Quality Management System)质量管理系统是五大基础系统之一,在工业企业中被广泛的应用,在质量策划.生产过程质量监督.体系审核和文档管理等业务上发挥着不可替代的作用. 一 ...

  2. 从零玩转第三方登录之WeChat公众号扫码关注登陆 -wechatgzh

    title: 从零玩转第三方登录之WeChat公众号扫码关注登陆 date: 2022-09-27 22:46:53.362 updated: 2023-03-30 13:28:41.359 url: ...

  3. freemarker实现自定义标签

    freemarker实现自定义标签 freemarker实现自定义标签其实并没有什么难度,这个功能我们叫自定义标签,在官网中称为指令,也并不是什么高级技术,只是大家没发现而已,参考下官网文档就能实现: ...

  4. 一图看懂华为云CodeArts Link六大特性

    本文分享自华为云社区<一图看懂华为云CodeArts Link六大特性,带你体验一站式跨平台数据互联>,作者:华为云PaaS服务小智 . 能够打破不同研发工具之间的壁垒,实现数据的无缝集成 ...

  5. 微服务架构下,DLI的部署和运维有何奥秘?

    摘要:探讨DLI两个问题:如何在生产环境中部署与运维实现快速迭代上线,如何实现监控告警来提升整体运维能力. 华为云数据湖探索DLI是支持多模引擎的Serverless大数据计算服务,其很好的实现了Se ...

  6. 数仓无损压缩算法:gzip算法

    摘要:一种无损的压缩数据格式,是一个在类Unix上的一种文件解压缩软件. 本文分享自华为云社区<GaussDB(DWS) gzip算法简介>,作者:hw0086. [算法原理] gzip是 ...

  7. 让数据大白于天下:GCC插件实现代码分析和安全审计

    摘要: 如何利用GCC的插件功能,辅助安全分析人员实现对程序的安全审计.漏洞检测.安全加固等自动化处理能力,提升分析效率和精准度. 本文分享自华为云社区<利用GCC插件实现代码分析和安全审计&g ...

  8. maptalks点线面图形样式设置经验总结

    个人偏好使用mapbox,但是架不住人多,被使用maptalks,然而的文档非常感人,让人泪崩三千里-- maptalks图形样式设置,通过symbol设置 设置symbol的,可以直接在 图形(Ma ...

  9. 火山引擎 DataLeap:从短视频 APP 实践看如何统一数据指标口径

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 短视频正在成为越来越多人发现世界的窗口,其背后的创作者生态建设是各大短视频 APP 不可忽视的重要组成部分. 为了 ...

  10. Google Guava ListeningExecutorService

    POM <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> < ...