思考
Kubernetes中有一个很重要的特性,服务自发现。一旦一个service被创建,该service的service IP和service port等信息都可以被注入到pod中供它们使用。Kubernetes主要支持两种service发现 机制:环境变量和DNS。没有dns服务的时候,kubernetes会采用环境变量的形式,一旦有很多个service,环境变量会变得很复杂,为了解决这个问题,我们使用DNS服务。
资料下载
下载地址:https://www.qstack.com.cn/skydns.zip
[root@k8s-master k8s]# unzip skydns.zip
Archive: skydns.zip
creating: skydns/
inflating: skydns/skydns-rc.yaml
inflating: skydns/skydns-svc.yaml
inflating: skydns/test_dns_pod.yaml
安装部署sky-dns
安装:
vim skydns-rc.yaml
kubectl create -f skydns-rc.yaml
vim skydns-svc.yaml
kubectl create -f skydns-svc.yaml
检查:
[root@k8s-master skydns]# kubectl get pod --namespace=kube-system
NAME READY STATUS RESTARTS AGE
kube-dns-453684471-gxhwn 4/4 Running 0 1m
修改kubelet配置
修改各node节点上的/etc/kubernetes/kubelet配置文件,增加如下行:
KUBELET_ARGS="--cluster_dns=10.254.230.254 --cluster_domain=cluster.local"
重启各node节点kubelet:
systemctl restart kubelet
检验dns是否生效
创建测试pod
kubectl create -f test_dns_pod.yaml
进入测试pod
kubectl exec -it busybox2 sh
域名解析测试
nslookup kubernetes