雖然通過了Service解決了Pod重建後 IP動態變化(服務發現)、負載均衡問題 ,但使用Service還是要需要知道CLUSTER IP,而通過NDS可以解決該問題;在Kubernetes集群中可 通過DNS進行Service服務名與IP進行映射 ,從而需要知道Service名稱就可以訪問該服務 ...
雖然通過了Service解決了Pod重建後IP動態變化(服務發現)、負載均衡問題,但使用Service還是要需要知道CLUSTER-IP,而通過NDS可以解決該問題;在Kubernetes集群中可通過DNS進行Service服務名與IP進行映射,從而需要知道Service名稱就可以訪問該服務,這裡將通過kube-dns來實現該功能;
在https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns中下載
kubedns-cm.yaml
kubedns-controller.yaml.sed
kubedns-sa.yaml
kubedns-svc.yaml.sed
四個文件,其中.sed結尾的兩個文件為模板文件需要重命名為:kubedns-controller.yaml、kubedns-svc.yaml,並對兩個文件做以下修改:
Kubedns-controller.yaml文件中所有$DNS_DOMAIN修改為:cluster.local
Kubedns-svc.yaml文件中所有$DNS_SERVER_IP修改為:10.254.0.2
註意$DNS_SERVER_IP的IP必須在kube-apiserver的配置項--service-cluster-ip-range=10.254.0.0/16範圍內;
Kube-dns的功能變數名稱格式為:<serviceName>.<namespace>.svc.<cluster_domain>
依賴
由於kube-dns依賴於k8s-dns-kube-dns-amd64、k8s-dns-dnsmasq-nanny-amd64、k8s-dns-sidecar-amd64三個鏡像,而此鏡像都是google官方鏡像必須從google站點下載,此時可通過第三方鏡像倉庫代理下載再pull到本地然後通過docker tag打上官方的標簽(或修改kubedns-controller.yaml、kubedns-svc.yaml文件中鏡像的地址為第三方地址),關於第三方鏡像倉庫代理下載可以看這篇文件:代理下載;
安裝
經過現在上訴的操作後接下來可以安裝kube-dns,執行下麵幾行命令;
Kubectl create -f kubedns-cm.yaml
Kubectl create -f kubedns-sa.yaml
Kubectl create -f kubedns-svc.yaml
Kubectl create -f kubedns-controller.yaml
創建完成後再dashboard中已可以看到kube-dns相關服務是否正常:
由於node節點需要使用dns進行服務解析,所以還需要修改kubelet服務配置項,在kubelet配置文件中添加上dns配置:--cluster-dns=10.254.0.2、--cluster-domain=cluster.local兩項配置正式上面yaml文件模板中所添加的值;此時DNS服務已安裝完成;
驗證DNS
通過pod驗證DNS,下麵通過pod啟動一個busybox容器驗證dns是否正常;
pod的yaml文件內容如下:
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
執行下麵指令創建pod:
Kubectl create -f busybox.yaml
執行kubectl exec busybox nslookup kubernetes命令,如顯示如下圖信息則說明dns已正常運行;
該命令為在容器busybox中執行nsloolup kubernetes查詢kubernetes的dns信息;
還可以執行kubectl exec busybox -- nslookup kubernetes.default.svc.cluster.local
kubernetes.default.svc.cluster.local為在kubedns-controller.yaml文件中配置的信息;
文章首發地址:Solinx
http://www.solinx.co/archives/1061