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

     服务发现机制

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中直接使用域名进行引用,避免了之前的变量泛滥问题,也避免了创建顺序的尴尬局面。

QQ截图20180604103352.png

   Cluster DNS扩展插件用于支持Kubernetes的服务发现机制,Cluster DNS主要包含如下几项:
   ● SkyDNS:提供DNS解析服务  
   ● Etcd:用于SkyDNS的存储
   ● Kube2sky:监听Kubernetes,当有新的Service创建时,生成相应记录到SkyDNS。












猜你喜欢

转载自blog.51cto.com/sf1314/2124462