c4rt1y

k8s之集群部署DNS服务发现

0x01.介绍

DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址。Cluster DNS扩展插件用于支持k8s集群系统中各服务之间发现与调用。
环境yaml文件在https://github.com/c4rt1y/k8s,文件在examples目录里面。
#下拉代码
git clone git@github.com:c4rt1y/k8s.git

0x02.dns安装

#在skydns目录中skydns-rc.yml需要需要和本地修改保持一致的地方,--kube_master_url使用k8s的master节点ip或者host地址,-domain=定义域名,默认有两处,一处我设置为kube.local,另一处默认存在kube.local.(注意后面存在点好)。

#在skydns-svc.yml中,需要修改的地方是clusterIP地址,必须保证是自己在apiserver中设置的--service-cluster-ip-range网段内,模式默认设置,所以地设置址为10.254.0.254。

#在node节点需要配置服务,添加内容--cluster_dns=10.254.0.254 --cluster_domain=kube.local
[root@k8s-node-1 /]# cat /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=k8s-node-1"
KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS="--cluster_dns=10.254.0.254 --cluster_domain=kube.local"

[root@k8s-node-1 /]# systemctl restart kubelet

#节点2也如此设置

#启动skydns
[root@k8s-master /]# kubectl create -f skydns-rc.yml -f skydns-svc.yml

#启动busybox
[root@k8s-master /]# kubectl create -f busybox.yml

0x03.测试

#查看pod情况
[root@k8s-master /]# kubectl get pod
NAME                 READY     STATUS             RESTARTS   AGE
busybox              1/1       Running            14         14h
frontend-39t23       1/1       Running            0          49s
frontend-gr3qm       1/1       Running            0          49s
frontend-zl4v4       1/1       Running            0          49s
kube-dns-v6-0pwd3    3/3       Running            0          14h
redis-master-707jw   1/1       Running            0          49s
redis-slave-lpd99    0/1       Running   	      0          49s
redis-slave-n5v8f    1/1       Running            0          49s

#测试1,验证解析地址是否ok
[root@k8s-master /]# kubectl exec -it busybox nslookup kubernetes.default
Server:    10.254.0.254
Address 1: 10.254.0.254

Name:      kubernetes.default
Address 1: 10.254.0.1

#测试2,验证解析地址是否ok
[root@k8s-master /]# kubectl exec -it busybox nslookup busybox
Server:    10.254.0.254
Address 1: 10.254.0.254

Name:      busybox
Address 1: 172.17.0.2 busybox

#测试3,验证解析地址是否ok
[root@k8s-master /]# kubectl exec -it busybox nslookup frontend
Server:    10.254.0.254
Address 1: 10.254.0.254

Name:      busybox
Address 1: 172.17.186.195

#测试4,验证解析地址是否ok
[root@k8s-master /]# kubectl exec -it busybox nslookup redis-master
Server:    10.254.0.254
Address 1: 10.254.0.254

Name:      busybox
Address 1: 172.17.7.177

0x04.资料来源

http://www.cnblogs.com/xkops/p/6232392.html
GoTop