叶工好容3-云原生DNS解析

这篇具有很好参考价值的文章主要介绍了叶工好容3-云原生DNS解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

上一篇《叶工好容2-云原生网络》介绍了容器中的虚拟化网络,从底层讲解了容器中的网络是如何实现的。但虚拟化只解决了网络上寻址的问题,只能定位到IP,但成千上万个动态的IP对于我们直接使用是没有任何意义的,我们必须借助有意义的“标识”信息做一次到IP的映射才可以,而常用的“标识”就是域名

DNS in linux

linux中影响域名转发的常用配置文件有3个,我们把它们称作etc三兄弟,首先得搞懂它们三兄弟的关系:
/etc/hosts,本地域名解析配置,域名与目的IP都维护在文件中。
/etc/resolv.conf,DNS服务器配置,定义DNS服务器的IP地址、本地域名、定义域名的搜索列表、对返回的域名进行排序
/etc/host.conf 指定主机名查询方式,也就是上面哥俩的管理员,出于性能考虑,一般是先走本地再走DNS。
所以/etc/host.conf是老大,他制定游戏规则; /etc/hosts是二哥,默认他说了算;/etc/resolv.conf是老三,话语权最小,但一般场景下干活最多的就是老三。

/etc/resolv.conf中会出现nameserver 127.0.0.1,那是因为在机器上有运行dnsmasq
dnsmasq可以作为DNS转发器,dnsmasq接收Client的DNS查询请求,并回复DNS查询结果。查询的结果可以来自本地缓存公共DNS服务器,如果本地缓存没有记录,dnsmasq会将请求转发到公共的DNS服务器,并将公共的DNS解析的结果回复到请求的设备。
所以在机器上引入dnsmasq,是为了提高DNS服务的稳定性,一旦网络有问题可以通过本地缓存,代价就是主机上多安装一个东西。

DNS in k8s

k8s里跑业务的容器本质还是运行在linux中的,所以k8s中的dns和linux中的dns本质上是一样的,它们只有2个区别
区别1:k8s中pod和其所在的node都有dns映射,类似个套娃;非k8s的linux只需要考虑自己的dns。
区别2:非k8s之间只需要单纯的域名调用,而k8s中还需要考虑集群内通过k8s标识的服务互通问题。

k8s的DNS策略:
1、ClusterFirst:优先使用集群内的dns服务(kubeDNS、coreDNS),找不到的话再使用宿主机的dns服务。
2、ClusterFirstWithHostNet:宿主机与集群DNS服务共存模式,两者都能用,但需要将hostNetwork打开
3、Default:让kubelet决定pod使用哪种DNS服务,默认使用宿主机的 /etc/resolv.conf 来进行解析。
4、None:不使用集群的DNS,pod只听dnsConfig文件的描述,该内容在创建pod时手动设置

在k8s中,一个Pod如果要访问相同同 Namespace 下的 Service(比如 book-service),那么只需要 curl book-service。如果 Pod 和 Service 不在同一域名下,那么就需要在 Service Name 之后添加上 Service 所在的 Namespace(比如 beijing1),curl book-service.beijing1。是因为在ClusterFirst策略下,pod的/etc/resolv.conf中配置了集群DNS service的地址。所以,在该 Pod 内请求的所有的域名解析都需要经过 DNS Service 进行解析,不管是集群内部域名还是外部域名。

k8s中/etc/resolv.conf,这里注意ndots的配置,地址中点号小于该配置被认为是相对域名,按search顺序查找,反之被认为是绝对域名。ndots的大小是性能与便捷的平衡。
我们曾经有个案例,为了加速pod向集群外部域名访问,将ndots默认值5显性的改成了2

dnsConfig:
  options:
  - name: ndots
    value: "2"

DNS框架选择

kubeDNS和coreDNS都是k8s中DNS服务器的可选方案,coreDNS除开集群内域名解析速率稍慢与kubeDNS,其它方面都更优秀,也是k8s 1.9 版本后的默认的 dns 解析

通常用CoreDNS,运行在master上,本质是每个service都对应一个clusterIP,pod通过service访问时会自动拼接域名${service}.svc.<cluster_domain>,master中有这个域名到clusterIP的映射。文章来源地址https://www.toymoban.com/news/detail-522594.html

到了这里,关于叶工好容3-云原生DNS解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络 应用层上 | 域名解析系统DNS 文件传输协议FTP,NFS 万维网URL HTTP HTML

    之前我们讲运输层的时候已经讲了运输层可以给不同进程之间通信,但我们还需要应用层原因是,许多 应用需要多个进程之间相互配合完成,所以应用层进程用来约束这些配合! 每个应用层协议用来解决一个问题 应用层的许多协议都是基于客户服务器方式 客户是请求方,服

    2024年01月24日
    浏览(55)
  • 【云原生-Docker】docker容器自定义DNS解析

    在特定的情况下,或者在网络策略特殊定义下,需要自定义dns进行域名访问,在宿主机上配置了域名解析,对于docker容器无效。 对于局域网内的域名解析,Docker 需要到 Docker 容器中配置 hosts 文件 。 docker-compose配置【推荐】 通过增加 extra_hosts 属性 进行host配置 进入容器内部

    2024年02月03日
    浏览(38)
  • 详解【计算机类&面试真题】军队文职考试——第4期(真题+解析):网络时延的组成部分和产生,使用Python来计算传输时延和传播时延 | TIP/IP网络协议的核心是什么?| DNS域名系统的工作原理

      决定放弃了的事,就请放弃得干干净净,那些决定再也不见面的人,就真的不要再见面了。     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅  

    2024年02月09日
    浏览(57)
  • 【云原生|Kubernetes】11-ConfigMap解析

    ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改。 ConfigMap 并不提供保密或者加密功能。 如果你想存储的数据是

    2024年02月12日
    浏览(35)
  • 【云原生|探索 Kubernetes 系列 5】简化 Kubernetes 的部署,深入解析其工作流程

    大家好,我是秋意零。 在前面 4 个章节中,我们充分了解了容器技术和 Kubernes 原生时代引擎的架构和设计思想,今天分享的主要内容是,探索 Kubernetes 部署,深入解析其工作流程 👿 简介 🏠 个人主页 : 秋意零 🧑 个人介绍 :在校期间参与众多云计算相关比赛,如:🌟

    2024年02月06日
    浏览(46)
  • 【云计算•云原生】4.云原生之什么是Kubernetes

    K8S就是Kubernetes,Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s。 它是一个为容器化应用提供集群部署和管理的开源工具,由 Google 开发。通过k8s可以使用配置文件轻松管理上千台机器。 k8s的部署配置文件和docker的dockerfile很类似,其内容描述了整个部署过程。

    2024年02月05日
    浏览(39)
  • 云原生之深入解析如何在Kubernetes下快速构建企业级云原生日志系统

    ELK 是三个开源软件的缩写,分别表示 Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个 FileBeat,它是一个轻量级的日志收集处理工具 (Agent),Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash,官方也推荐此工具。 大致流程图如下: ① Elasticsearc

    2024年02月09日
    浏览(43)
  • 云原生之深入解析Kubernetes Pod如何获取IP地址

    一、背景 Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 Pod 分配 IP 地址。它们了解各种组件如何独立工作,但不清楚这些组件如何组合在一起使用。例如,它们了解什么是

    2024年02月02日
    浏览(37)
  • 云原生之深入解析Kubernetes CNI插件的选型和应用场景

    在学习容器网络的时候,肯定都听说过 Docker 的 bridge 网络、Vethpair、VxLAN 等术语,从 Docker 到 Kubernetes 后,学习 Flannel、Calico 等主流网络插件,分别代表了 Overlay 和 Underlay 的两种网络传输模式,也是很经典的两款 CNI 网络插件。那么,还有哪些好用的 CNI 插件呢 ? 先来看看 C

    2024年02月15日
    浏览(44)
  • 云原生之深入解析Airbnb的动态Kubernetes集群扩缩容

    Airbnb 基础设施的一个重要作用是保证我们的云能够根据需求上升或下降进行自动扩缩容,我们每天的流量波动都非常大,需要依靠动态扩缩容来保证服务的正常运行。为了支持扩缩容,Airbnb 使用了 Kubernetes 编排系统,并且使用了一种基于 Kubernetes 的服务配置接口。 现在来讨

    2024年02月06日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包