专栏首页IT技术精选文摘基于Kubernetes集群部署skyDNS服务

基于Kubernetes集群部署skyDNS服务

在之前几篇文章的基础,(Centos7部署Kubernetes集群、基于kubernetes集群部署DashBoard、为Kubernetes集群部署本地镜像仓库),本文继续搭建Kubernete中的服务注册发现机制——SkyDNS.

1、部署Cluster DNS

1.1 原理

  通过前面对Kubernetes的讨论(Kubernetes核心概念总结).我们已经知道,每个Kubernetes service都绑定了一个虚拟IP 地址(ClusterIP),而且Kubernetes最初使用向pod中注入环境变量的方式实现服务发现,但这会带来环境变量泛滥等问题。故需要增加集群DNS服务为每个service映射一个域名。到Kubernetes v1.2版本时,DNS作为一个系统可选插件集成到Kubernetes集群中。Kubernetes默认使用SkyDNS 作为集群的DNS服务器,

  kubernetes可以为pod提供dns(skyDNS)内部域名解析服务。其主要作用是为pod提供可以直接通过service的名字解析为对应service的ip的功能。启用了集群DNS选项,需要创建一个运行SkyDNS域名服务器的pod和一个对外提供集群service域名解析服务的SkyDNS service,并且还会为该service绑定一个稳定的静态IP地址作为入口IP地址。然后,Kubelet被配置成向每个Docker容器传人SkyDNS service的IP地址。作为它们其中一个DNS服务器。每个在Kubernetes集群中定义的service包括DNS服务器本身对应的service都会被映射到一个DNS域名,该域名一般由两个部分组成:service所在namespace和service名。默认情况下,一个客户端pod的DNS搜索列表一般包含pod自身的namespace和集群的默认域名集。SkyDNS service的域名搜索顺序大致如下。

    搜索客户端pod所在namespace中所有的service域名记录;

    搜索目标域名namespace中所有的service域名记录;

    从当前Kubernetes集群中,搜索所有的service域名记录。

  skyDNS由三部分组成:kube2sky、etcd、skydns。

    kube2sky的功能是监测api-server中的service的变化,当service创建、删除、修改时,获取对应的service信息,将其保存在etcd的中;

    Etcd的功能是存储kube2sky保存过来的数据;

    Skydns。在kubelet创建pod时,会使用为kubelet配置的“KUBELET_ARGS="--cluster-dns=10.254.10.2 --cluster-domain=sky --allow-privileged=true"” 在创建的pod中从而使用对应的dns服务器。而这一dns解析服务,实际是由Skydns提供的。

1.2 配置etcd中关于skyDNS的key

1.3 配置kubelet中相关信息

  在每个node中更改kubelet的配置文件如下红色部分,更改完成之后重启服务。

1.4 yaml文件

  编辑skydns_dpm.yaml文件,更改以下红色部分(拷贝到机器上之后,最好把中文注释去掉):

  编辑skydns-svc.yaml文件,更改以下红色部分:

1.5 启动

  在master执行如下命令:

  之后,dns搭建完成。

1.6 DNS功能验证

1.6.1 创建测试service

1.6.2 创建测试pod

1.6.3 进入pod验证服务解析

本文分享自微信公众号 - IT技术精选文摘(ITHK01)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-23

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Go API 开发实战 3】API 流程和代码结构

    为了使读者在开始实战之前对 API 开发有个整体的了解,这里选择了两个流程来介绍:

    腾讯技术工程官方号
  • java构建TCP/IP协议:DNS,域名解析协议系统的运行流程

    DNS协议的运转需要客户端和服务器进行交互。由于服务器端需要存储大量的域名信息,同时每天需要应答海量的解析请求,因此它的设计必须遵循分布式系统。客户端向一台服务...

    望月从良
  • nginx+tomcat绑定二级域名,部署多个应用

    本文介绍在阿里云上开通二级域名,并使用单个tomcat部署多个应用和ngnix+tomcat(多个)两种方式实现多个应用的部署,以下为操作步骤。

    三哥
  • 真实经历:手机浏览器被劫持了怎么办?

    明月作为一名草根博客站长手机端拥有几个测试网站移动端效果的浏览器是很正常的吧,可就是在前两天入手了红米 5 Plus 后(可参考【新入手 红米 5 Plus 手...

    明月云服务
  • 同一个github账户绑定两个域名

    一个github账号可以建立很多仓库,但是只能有一个个人主页仓库,其余都是项目仓库。主页仓库就是你的名字.github.io这个,其余的就是https://gi...

    Y大宽
  • 躁动不安的年代,你需要读几本好书(python爬虫及数据分析)

    当今社会,速度已经深入人心了,“快”成了大家默认的办事境界,看机器上一件件飞一般传递着的产品,听办公室一族打电话时那种无人能及的语速......休闲的概念已日渐...

    南山烟雨
  • 你家路由器被劫持了吗?影响全国400万IP

    部分用户家用路由器被黑客攻击,DNS遭篡改,跳转黄赌毒网站,或造成网络访问延迟、失败!

    IT大咖说
  • java构建TCP/IP协议:代码实现DNS解析协议

    本节,我们基于上一节理论的基础上,用代码实现DNS数据包的发送和解析。这里有两点需要重复,一是我们将使用DNS的递归式传输模式,也就是消息的发送如下图:

    望月从良
  • 玩转CVM:Web服务搭建

    本教程将讲解如何依托腾讯云主机(CVM),搭建前沿的安全高性能Web服务。具体将包括:配置域名解析、SSL证书申请等Web服务的前置依赖,以及安装部署最新版Ng...

    怕冷的阳阳

扫码关注云+社区

领取腾讯云代金券