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. 【笔记】01 -- Spring-Cloud介绍

    第一章节我们主要是介绍微服务 springCloud的架构和分布式的区别 但是后面会主要介绍netflix公司与Alibaba公司的两套架构 系统架构 **概述** 随着互联网的发展,网站应用的规模不 ...

  2. DevOps|研发效能|平台工程

    欢迎加入我们的「研发效能DevOps」微信群. - 我的文章主要首发在微信公众号 scmroad - 主要关注领域 {研发效能.研发工具链.持续集成.交付.DevOps.效能度量.微服务治理.容器.云 ...

  3. 问鼎CodeXGLUE榜单,华为云UniXcoder-VESO-v1算法取得突破

    摘要:华为云PaaS技术创新团队基于UniXcoder模型,在公开测试数据集(CodeXGLUE)上的代码搜索任务评测结果上取得突破,在CodeXGLUE榜单上排名中第一. 本文分享自华为云社区< ...

  4. 从Encoder-Decoder模型入手,探索语境偏移解决之道

    摘要:在本文中,我们展示了CLAS,一个全神经网络组成,端到端的上下文ASR模型,通过映射所有的上下文短语,来融合上下文信息.在实验评估中,我们发现提出的CLAS模型超过了标准的shallow fus ...

  5. 跟我学AI建模:分子动力学仿真模拟之DeepMD-kit框架

    摘要:分子动力学仿真模拟的重点就在于如何建立模型描述分子间的相互作用. 本文分享自华为云社区<AI建模-分子动力学仿真>,作者: 木子_007 . 一.背景 分子动力学的仿真模拟广泛应用于 ...

  6. Kubernetes(K8S) Pod 介绍

    Pod 是 k8s 系统中可以创建和管理的最小单元, 是资源对象模型中由用户创建或部署的最小资源对象模型, 也是在 k8s 上运行容器化应用的资源对象, 其他的资源对象都是用来支撑或者扩展 Pod 对 ...

  7. byte[] 数组,创建的时候赋初始值

    C# //创建一个长度为10的byte数组,并且其中每个byte的值为0x08. byte[] myByteArray = Enumerable.Repeat((byte)0x08, 10).ToAr ...

  8. python argparse传入布尔参数不生效解决

    前言 在一个需要用到flag作为信号控制代码中一些代码片段是否运行的,比如"--flag True"或者"--flag False". 但是古怪的是无法传入Fa ...

  9. CentOS 7 qemu 创建虚拟机简单流程

    查看是否支持虚拟化 egrep -o '(vmx|svm)' /proc/cpuinfo 如果有显示则支持虚拟化,没有显示则不支持   安装qemu 和virt 系列软件包 yum install q ...

  10. 柔性上肢康复机器人研究中的VR技术

    上肢康复机器人用于对脑卒中患者进行上肢康复治疗,能够维持和扩大患者关节活动度.增强肌肉力和协调性,以防止肌肉萎缩.关节痉挛等各类症状的出现,最终重建肢体功能,以便回归正常生活.现有的上肢康复机器人训练 ...