Kubernetes DNS Service技术研究

本文主要是对kubernetes 1.2和1.3的DNS Service的内部实现分别进行研究,得出其内部实现框架和交互逻辑,并对它们的实现进行了比较。

Kubernetes 1.2 DNS Service

部署

kubernetes 1.2中DNS Server的部署请参考:https://xuxinkun.github.io/2016/07/22/kubernetes-dns/

内部架构及技术细节

画图画的好累,不想写太多字了,其实想说的都在图里。

说明:

  • 线路1:kubernetes cluster中的DNS请求被SkyDNS接受,SkyDNS配置了Backend为etcd/cluster,从etcd/cluster中读取数据,然后封装数据返回完成DNS query请求。
  • Kube2Sky通过watch kube-api-server对service & endpoint的数据来进行更新etcd中/v2/key/skydns/...中的数据。

Kubernetes 1.3 DNS Service

部署

kubernetes 1.3中DNS Server的部署请参考:http://tonybai.com/2016/10/23/install-dns-addon-for-k8s/

内部架构及技术细节

在kubernetes 1.3中,KubeDNS容器把在1.2中分开部署的SkyDNS和Kube2Sky整合在程序kube-dns中,在容器KubeDNS中部署,其启动流程如下:

  1. Starting SkyDNS server. Listening on port:10053.
  2. skydns: metrics enabled on :/metrics.
  3. Setting up Healthz Handler(/readiness, /cache) on port :8081.
  4. watch kuber-api-server for service & endpoint & pod.
  5. initialize in-memory lookup structures to service DNS requests.

说明:

  • 线路1:kubernetes cluster中的DNS请求被dnsmasq接受,dnsmasq默认配置了一个1G大小的cache,以提高性能。如果dnsmasq cache中有记录命中,则直接有dnsmasq返回。
  • 线路2:若dnsmasq cache中无记录命中,则forward请求到KubeDNS容器中的SkyDNS Server处理,SkyDNS从KubeDNS维护的一块内存(cache)中查找数据并进行响应。这个cache是由类似1.2中的Kube2Sky中的模块通过watch kube-api-server对service & endpoint的数据来进行更新维护。

##总结 对比1.2和1.3中的实现,主要区别在:

  • 1.2中SkyDNS和Kube2Sky分别部署在两个不同的容器中,直接由SkyDNS接受kubernetes cluster中的DNS请求;
  • 1.3中将SkyDNS和Kube2Sky整合到了一个程序中KubeDNS;
  • 1.3中引入了dnsmasq容器,由它接受kubernetes cluster中的DNS请求,目的就是利用dnsmasq的cache模块,提高性能;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

Flash Pro CS5无法跳过注册Adobe ID的问题

装了N多次卸载了N多次,就是没有上图中的那个“跳过此步骤”,找了N个注册码还是不行。按网上的说明,有两种方式可以解决这个问题:

26820
来自专栏瓜大三哥

tensorflow版本安装

我是在Anaconda里安装tensorflow的,安装命令可以在控制台输入: pip install tensorflow 卸载命令: pip uninsta...

30280
来自专栏问天丶天问

Kubernetes-Host网络模式应用

59050
来自专栏散尽浮华

记录一次redis cluster集群故障-运维笔记

公司的一个系统业务出现故障,提示查询redis失败。查询相关日志,分析过程记录如下:

71350
来自专栏搜云库

可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI

上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是...

72480

了解微服务,第6部分:健康检查

随着我们的微服务和它们运营的环境变得越来越复杂,让我们的服务为Docker Swarm提供一种安全检查机制也变得日益重要。因此,我们将在博客系列的第六部分中介绍...

92730
来自专栏技术翻译

Kubernetes揭秘:解决服务依赖问题

本系列文章探讨了企业客户在使用Kubernetes时遇到的一些常见问题。Container Service客户经常提出的一个问题是,“我如何处理服务之间的依赖关...

74820
来自专栏沃趣科技

ASM 翻译系列第十三弹:ASM 高级知识 - Forcing the issue

原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 Forcing the issue ASM中有部分的...

40450
来自专栏一场梦

腾讯发布新版QQv8.9.6 可撤回他人消息

24350
来自专栏乐沙弥的世界

Vmware 下Oracle RAC搬家引起CRS-1006/CRS-0215/CRS-0233

   最近虚拟机下的Oracle 10g RAC搬家,搬家完毕之后,Oracle 集群resource之VIP无法正常启动,收到了CRS-0233: Resou...

16130

扫码关注云+社区

领取腾讯云代金券