[转帖]k8s 服务注册与发现(一)DNS

k8s,服务,注册,发现,dns · 浏览次数 : 0

小编点评

**什么是 DNS域名层级域名服务器?** DNS域名层级域名服务器是互联网中的一个重要的服务,它将域名和IP地址相互映射,使人更方便地访问互联网。 **工作原理反向代理水平扩展集群中的 DNS** 当您通过域名访问某个服务内容时, DNS 解析器会向 DNS 解析器发送解析请求。 DNS 解析器会按照域名层次结构从根域名服务器到权威域名服务器查找最终的 IP 地址。 **DNS劫持** DNS劫持是一种防御方法,它允许您为域名注册中的电子邮件保存好所有权信息。如果您在 DNS 记录中找到电子邮件地址,攻击者可以通过该电子邮件地址获取您的帐户信息。 **DNS域名系统(英文:Domain Name System,缩写:DNS)** DNS域名系统是互联网的一个核心组件,它用于将域名和IP地址相互映射。 DNS使用UDP端口53。 **域名层级** 域名层级是一个层级的树形结构,树的最顶层是根域名,一般使用 . 来表示,这篇文章所在的域名一般写作 draveness.me,但是这里的写法其实省略了最后的 .,也就是全称域名(FQDN)dravenss.me.。 **域名服务器** 域名服务器是处理域名解析请求的服务器。 DNS 解析器从根域名服务器查找到顶级域名服务器的 IP 地址,又从顶级域名服务器查找到权威域名服务器的 IP 地址,最终从权威域名服务器查出了对应服务的 IP 地址。

正文

什么是DNS

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

域名系统在现在的互联网中非常重要,因为服务器的 IP 地址可能会经常变动,如果没有了 DNS,那么可能 IP 地址一旦发生了更改,当前服务器的客户端就没有办法连接到目标的服务器了,如果我们为 IP 地址提供一个『别名』并在其发生变动时修改别名和 IP 地址的关系,那么我们就可以保证集群对外提供的服务能够相对稳定地被其他客户端访问。

what-is-dns


域名层级

域名层级是一个层级的树形结构,树的最顶层是根域名,一般使用 . 来表示,这篇文章所在的域名一般写作 draveness.me,但是这里的写法其实省略了最后的 .,也就是全称域名(FQDN)dravenss.me.

dns-namespace

根域名下面的就是 comnetme 等顶级域名以及次级域名 draveness.me,我们一般在各个域名网站中购买和使用的都是次级域名、子域名和主机名了。

域名服务器

既然域名的命名空间是树形的,那么用于处理域名解析的 DNS 服务器也是树形的,只是在树的组织和每一层的职责上有一些不同。DNS 解析器从根域名服务器查找到顶级域名服务器的 IP 地址,又从顶级域名服务器查找到权威域名服务器的 IP 地址,最终从权威域名服务器查出了对应服务的 IP 地址。

$ dig -t A draveness.me +trace
  • 1

我们可以使用 dig 命令追踪 draveness.me 域名对应 IP 地址是如何被解析出来的,首先会向预置的 13 组根域名服务器发出请求获取顶级域名的地址:


工作原理

在我们对 DNS 有了简单的了解之后,接下来我们就可以进入 DNS 工作原理的部分了,作为用户访问互联网的第一站,当一台主机想要通过域名访问某个服务的内容时,需要先通过当前域名获取对应的 IP 地址。这时就需要通过一个 DNS 解析器负责域名的解析,下面的图片展示了 DNS 查询的执行过程:

dns-resolution

  1. 本地的 DNS 客户端向 DNS 解析器发出解析 draveness.me 域名的请求;
  2. DNS 解析器首先会向就近的根 DNS 服务器 . 请求顶级域名 DNS 服务的地址;
  3. 拿到顶级域名 DNS 服务 me. 的地址之后会向顶级域名服务请求负责 dravenss.me. 域名解析的命名服务;
  4. 得到授权的 DNS 命名服务时,就可以根据请求的具体的主机记录直接向该服务请求域名对应的 IP 地址;

DNS 客户端接受到 IP 地址之后,整个 DNS 解析的过程就结束了,客户端接下来就会通过当前的 IP 地址直接向服务器发送请求。

对于 DNS 解析器,这里使用的 DNS 查询方式是迭代查询,每个 DNS 服务并不会直接返回 DNS 信息,而是会返回另一台 DNS 服务器的位置,由客户端依次询问不同级别的 DNS 服务直到查询得到了预期的结果;另一种查询方式叫做递归查询,也就是 DNS 服务器收到客户端的请求之后会直接返回准确的结果,如果当前服务器没有存储 DNS 信息,就会访问其他的服务器并将结果返回给客户端。

在这里插入图片描述


反向代理水平扩展

在这里插入图片描述

在这里插入图片描述

具体做法是:在dns-server对于同一个域名可以配置多个nginx的外网ip,每次dns解析请求,轮询返回不同的ip,这样就能实现nginx的水平扩展,这个方法叫“dns轮询”。


集群中的 DNS

使用 DNS 在集群中做服务发现其实是一件比较容易的事情,这主要是因为绝大多数的计算机上都会安装 DNS 服务,所以这其实就是一种内置的、默认的服务发现方式,不过使用 DNS 做服务发现也会有一些问题,因为在默认情况下 DNS 记录的失效时间是 600s,这对于集群来讲其实并不是一个可以接受的时间,在实践中我们往往会启动单独的 DNS 服务满足服务发现的需求。

CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能,Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。

coredns-logo

DNS劫持

插一嘴咯
在这里插入图片描述

保护域名/尽量避免攻击

备份策略。一般至少会使用两个域名,一旦其中一个被攻击,用户可以通过另一个访问

随时留意域名注册中的电子邮件

保存好所有权信息(比如账单记录,注册信息等)

随时关注安全补丁

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

与[转帖]k8s 服务注册与发现(一)DNS相似的内容:

[转帖]k8s 服务注册与发现(一)DNS

文章目录 什么是DNS域名层级域名服务器 工作原理反向代理水平扩展集群中的 DNS......DNS劫持 什么是DNS 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UD

[转帖]k8s 服务注册与发现(三)CoreDNS

CoreDNS 作为一个加入 CNCF(Cloud Native Computing Foundation) 的服务 CoreDNS 的实现可以说的非常的简单。 介绍 整个 CoreDNS 服务都建立在一个使用 Go 编写的 HTTP/2 Web 服务器 Caddy · GitHub 上,CoreD

[转帖]重写Nacos服务发现逻辑动态修改远程服务IP地址

https://www.cnblogs.com/changxy-codest/p/14632574.html 背景 还是先说下做这个的背景,开发环境上了K8S,所有的微服务都注册在K8S内的Nacos,注册地址为K8S内部虚拟IP,K8S内的服务之间相互调用没有问题,但是本机开发联调调用其他微服务就

[转帖]K8S从懵圈到熟练 – 集群服务的三个要点和一种实现

https://developer.aliyun.com/article/711580?spm=a2c6h.13262185.profile.81.32d83219xsvxWd 以我的经验来讲,理解K8S集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解,去排查服务相关问题的时候

[转帖]k8s发布Spring cloud+eureka架构服务优雅启动停止方案

本文转载自昆仑枫的简书https://www.jianshu.com/p/6d393cbb694a Spring cloud+eureka是目前微服务主流解决方案之一,kubernetes则是广泛应用的发布工具,两者结合使用很常见。而两者结合时如何优雅启停从而实现无感发布很关键。下面将从不做特殊处理

[转帖]k8s集群内偶现无法访问外部域名怎么解?

故障现象 容器内频现无法访问外部服务,是用ping测试有如下现象: # ping baidu.com -c 4 PING baidu.com (110.242.68.66) 56(84) bytes of data. 64 bytes from 110.242.68.66 (110.242.68.6

[转帖]【k8s】5、资源管理命令-声明式

文章目录 一、 yaml和json介绍1、yuml语言介绍2、k8s支持的文件格式3、yaml和json的主要区别 二、声明式对象管理1、命令式对象配置2、声明式对象配置3、声明式对象管理命令介绍 三、编写资源配置清单1、 编写yaml文件2、 启动并查看资源3、创建service服务对外提供访问测

[转帖]Kubernetes部署Minio集群存储的选择,使用DirectPV CSI作为分布式存储的最佳实践

Kubernetes部署Minio集群存储的选择,使用DirectPV CSI作为分布式存储的最佳实践 个人理解浅谈 1. 关于在kubernetes上部署分布式存储服务,K8s存储的选择 非云环境部署K8s Pod时存储的选择 在非云环境部署Kubernets时,一般采用的都是本地的直连式存储和文

[转帖]谈谈对K8S CNI、CRI和CSI插件的理解

K8S的设计初衷就是支持可插拔架构,解决PaaS平台不好用、不能用、需要定制化等问题,K8S集成了插件、附加组件、服务和接口来扩展平台的核心功能。附加组件被定义为与环境的其他部分无缝集成的组件,提供类似本机的特性,并扩展集群管理员可用的组件,扩展还可以用于添加自定义软硬件的支持;服务和接口提供了看似

[转帖][译] 大规模微服务利器:eBPF + Kubernetes(KubeCon, 2020)

http://arthurchiao.art/blog/ebpf-and-k8s-zh/ Published at 2020-09-06 | Last Update 2021-02-21 译者序 本文翻译自 2020 年 Daniel Borkmann 在 KubeCon 的一篇分享: eBPF a