kubernetes学习记录(5)——服务发现机制与Cluster DNS的安装(无CA认证版)

服务发现机制

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

1.环境变量

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

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

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

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

2.DNS

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

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

Kubernetes1.2.7版本下Cluster DNS的安装

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

1.2.7版本中,Cluster DNS主要包含如下几项:

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

安装过程参考官方github文档。

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

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

yum -y install wget
wget https://codeload.github.com/kubernetes/kubernetes/tar.gz/v1.2.7
tar zxvf v1.2.7
cd kubernetes-1.2.7/cluster/addons/dns

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

通过环境变量,配置参数

export DNS_SERVER_IP="10.254.10.2"
export DNS_DOMAIN="cluster.local"
export DNS_REPLICAS=1

设置 Cluster DNS Service的IP为 10.254.10.2(不能和已分配的IP重复),Cluster DNS的本地域为 cluster.local。

修改每台Node上的kubelet启动参数

vim /etc/kubernetes/kubelet

在KUBELET_ARGS里增加:

--cluster_dns=10.254.10.2 
--cluster_domain=cluster.local

cluster_dns为DNS服务的ClusterIP地址
cluster_domain为DNS服务中设置的域名

重启kubelet服务

systemctl restart kubelet

生成dns-rc.yaml和dns-svc.yaml

kubernetes-1.2.7/cluster/addons/dns目录下。

这里写图片描述

skydns-rc.yaml.in和skydns-svc.yaml.in是两个模板文件,通过设置的环境变量修改其中的相应属性值,可以生成Replication Controller和Service的定义文件。

生成Replication Controller的定义文件dns-rc.yaml创建RC

sed -e "s/{
   { pillar\['dns_replicas'\] }}/${DNS_REPLICAS}/g;s/{
   { pillar\['
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值