Kubernetes DNS Service技术研究

原创 2017年01月10日 19:46:56

本文主要是对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模块,提高性能;
版权声明:本文为博主原创文章,未经博主允许不得转载。

Kubernetes如何使用kube-dns实现服务发现

通过公司的平台做的一次技术分享,访问链接为: http://mp.weixin.qq.com/s?__biz=MzAwODE0NDE0MA==&mid=2652773152&idx=1&sn=086...
  • xts_huangxin
  • xts_huangxin
  • 2016年10月18日 10:10
  • 908

Kubernetes DNS服务配置

Kubernetes DNS服务配置 Kubernetes提供的DNS由以下三个组件组成: 1. etcd:DNS存储 2. kube2sky:将kubernetes master中的servi...
  • gsying1474
  • gsying1474
  • 2016年11月30日 22:20
  • 1224

Kubernetes技术分析之DNS

概述Docker的流行激活了一直不温不火的PaaS,随着而来的是各类Micro-PaaS的出现,Kubernetes是其中最具代表性的一员,它是Google多年大规模容器管理技术的开源版本。本系列文章...
  • wlhdo71920145
  • wlhdo71920145
  • 2015年07月27日 14:03
  • 3666

[测试环境]K8s使用kube-dns实现服务发现【转载】

原文:http://www.ctoutiao.com/98480.html 大纲: •       Kubernetes中如何发现服务 •       如何发现Pod提供的服务 •  ...
  • m1361459098
  • m1361459098
  • 2017年05月04日 17:08
  • 714

Kubernetes(k8s)如何使用kube-dns实现服务发现

Kubernetes中如何发现服务 如何发现Pod提供的服务如何使用Service发现服务如何使用kube-dns发现服务 kube-dns原理 组成域名格式配置 注:本次分享内容基于...
  • bigtree_3721
  • bigtree_3721
  • 2017年12月08日 20:24
  • 313

Kubernetes,微服务以及 Service Mesh

作者:Jolestar ,2015年初开始创业,作为技术合伙人,专注于打造一款团队通讯协作工具-Grouk 这是前一段时间在一个微服务的 meetup 上的分享,整理成文章发布出来。 ...
  • qq_34463875
  • qq_34463875
  • 2017年10月16日 15:41
  • 686

为Kubernetes集群里的容器提供DNS服务,用于解析service名称

部署DNS服务 下载镜像到本地仓库 部署服务 让kubelet修改每个pod的默认DNS 修改kubelet参数 重启node 测试部署DNS服务kubedns负责从KUBERNETES_SERVIC...
  • wzp1986
  • wzp1986
  • 2017年05月13日 18:15
  • 748

Kubernetes DNS Service技术研究

本文主要是对kubernetes 1.2和1.3+的DNS Service的内部实现分别进行研究,得出其内部实现框架和交互逻辑,并对它们的实现进行了比较。...
  • WaltonWang
  • WaltonWang
  • 2017年01月10日 19:46
  • 24362

kubernetes 服务发现与注册个人想法

初衷最近调研k8s,k8s是一个不错的docker编排工具,其中考虑到了很多在运维过程中的痛点,比如,RC、scale、autoscale、rolling-update等一系列的运维比较关心的东西,但...
  • qq_29778131
  • qq_29778131
  • 2017年06月22日 13:49
  • 792

Kubernetes DNS 简介

环境$ sudo lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu ...
  • styshoo
  • styshoo
  • 2017年04月10日 07:01
  • 3932
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kubernetes DNS Service技术研究
举报原因:
原因补充:

(最多只允许输入30个字)