码迷,mamicode.com
首页 > Web开发 > 详细

Kubernetes实战[2]: 服务发现机制与Cluster DNS的安装(无CA认证版)

时间:2018-06-04 11:30:10      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:服务发现机制与Cluster DNS的安

     服务发现机制

Kubernetes提供了两种发现Service的方法:

   1.环境变量

    当Pod运行的时候,Kubernetes会将之前存在的Service的信息通过环境变量写到Pod中。

    这种方法要求Pod必须要在Service之后启动。

    在Service之前启动的Pod就不会有该Service的环境变量。

    采用DNS的方式就没有这个限制。

     2.DNS

    当有新的Service创建时,就会自动生成一条DNS记录。

    使用这种方法,需要安装Cluster DNS。


在kubernetes中每一个service都会被分配一个虚拟IP,每一个Service在正常情况下都会长时间不会改变,这个相对于pod的不定IP,对于集群中APP的使用相对是稳定的。但是Service的信息注入到pod目前使用的是环境变量的方式,并且十分依赖于pod(rc)和service的创建顺序,这使得这个集群看起来又不那么完美,于是kubernetes以插件的方式引入了DNS系统,利用DNS对Service进行一个映射,这样我们在APP中直接使用域名进行引用,避免了之前的变量泛滥问题,也避免了创建顺序的尴尬局面。

技术分享图片

Kubernetes1.2.7版本下Cluster DNS的安装

阅读github上官方源码发现: 
Cluster DNS自Kubernetes1.3版本开始,结构发生了变化。这里先以1.2.7版本作为研究。

 Cluster DNS扩展插件用于支持Kubernetes的服务发现机制,1.2.7版本中,Cluster DNS主要包含如下几项: 

1)SkyDNS 
提供DNS解析服务。 
2)Etcd 
用于DNS的存储。 
3)Kube2sky 
监听Kubernetes,当有新的Service创建时,将其注册到etcd上。 
4)healthz 
提供对skydns服务的健康检查功能。 

在Master服务器上下载Kubernetes发布包

Cluster DNS在Kubernetes发布包的cluster/addons/dns目录下

[root@k8s-master home]# yum -y install wget
[root@k8s-master home]# wget https://codeload.github.com/kubernetes/kubernetes/tar.gz/v1.2.7
[root@k8s-master home]# tar -xf kubernetes-1.2.7.tar.gz
[root@k8s-master home]# ls
kubernetes-1.2.7  kubernetes-1.2.7.tar.gz  sheng
[root@k8s-master home]# cd kubernetes-1.2.7/cluster/addons/dns
[root@k8s-master dns]# ls
kube2sky  MAINTAINERS.md  OWNERS  README.md  skydns  skydns-rc.yaml.in  skydns-svc.yaml.in
#skydns-rc.yaml.in和skydns-svc.yaml.in是两个模板文件,通过设置的环境变量修改其中的相应属性值,可以生成Replication Controller和Service的定义文件。

需要注意,skydns服务使用的clusterIP需要我们指定一个固定的IP地址,每个Node的kubelet进程都将使用这个IP地址,不能通过Kuberneters自动给skydns分配。




1. skydns配置文件

创建DNS服务的RC配置文件,在这个RC配置中包含了3个Container的定义









Kubernetes实战[2]: 服务发现机制与Cluster DNS的安装(无CA认证版)

标签:服务发现机制与Cluster DNS的安

原文地址:http://blog.51cto.com/sf1314/2124462

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!