配置k8s dns


DNS (domain name system),提供域名解析服務,解決了難於記憶的IP地址問題,以更人性可讀可記憶可標識的方式映射對應IP地址。

Cluster DNS擴展插件用於支持k8s集群系統中各服務之間發現與調用。

  

組件:
  •SkyDNS 提供DNS解析服務
  •Etcd 存儲DNS信息
  •Kube2sky 監聽kubernetes,當有Service創建時,生成相應的記錄到SkyDNS。

 

 

1.修改所有node的配置文件:/etc/kubernetes/kubelet  kubernetes-node1,kubernetes-node2,kubernetes-node3:

[root@kubernetes-node2 ~]# tail -n 1 /etc/kubernetes/kubelet
KUBELET_ARGS="--cluster-dns=10.254.254.254 --cluster-domain=cluster.local"

 

2.所有node節點都重新啟動服務

systemctl restart kubelet.service

 

 

3.根據namespace分為不同的名稱空間,將系統服務統一放到一個單獨的空間:kube-system,由於默認空間只有default,我們首先要創建kube-system空間。

[root@kubernetes-master pods]# cat kube-system.yml
apiVersion: v1
kind: Namespace
metadata:
      name: kube-system

4.在master服務器上編輯ReplicationController文件dns-rc.yml

  1 apiVersion: v1
  2 kind: ReplicationController
  3 metadata:
  4   name: kube-dns-v11
  5   namespace: kube-system
  6   labels:
  7     k8s-app: kube-dns
  8     version: v11
  9     kubernetes.io/cluster-service: "true"
 10 spec:
 11   replicas: 1
 12   selector:
 13     k8s-app: kube-dns
 14     version: v11
 15   template:
 16     metadata:
 17       labels:
 18         k8s-app: kube-dns
 19         version: v11
 20         kubernetes.io/cluster-service: "true"
 21     spec:
 22       containers:
 23       - name: etcd
 24         image: docker.gaoxiaobang.com/kubernetes/etcd-amd64:2.2.1  
 25         resources:
 26           limits:
 27             cpu: 100m
 28             memory: 500Mi
 29           requests:
 30             cpu: 100m
 31             memory: 50Mi
 32         command:
 33         - /usr/local/bin/etcd
 34         - -data-dir
 35         - /var/etcd/data
 36         - -listen-client-urls
 37         - http://127.0.0.1:2379,http://127.0.0.1:4001
 38         - -advertise-client-urls
 39         - http://127.0.0.1:2379,http://127.0.0.1:4001
 40         - -initial-cluster-token
 41         - skydns-etcd
 42         #volumeMounts:
 43         #- name: etcd-storage
 44         #  mountPath: /var/etcd/data
 45       - name: kube2sky
 46         image: docker.gaoxiaobang.com/kubernetes/kube2sky:1.14
 47         args:
 48         # command = "/kube2sky"
 49         - --domain=cluster.local
 50         - --kube-master-url=http://10.64.8.68:8080
 51         resources:
 52           limits:
 53             cpu: 100m
 54             memory: 200Mi
 55           requests:
 56             cpu: 100m
 57             memory: 50Mi
 58       - name: skydns
 59         image: docker.gaoxiaobang.com/kubernetes/skydns:2015-10-13-8c72f8c
 60         resources:
 61           limits:
 62             cpu: 100m
 63             memory: 200Mi
 64           requests:
 65             cpu: 100m
 66             memory: 50Mi
 67         args:
 68         - -machines=http://127.0.0.1:4001
 69         - -addr=0.0.0.0:53
 70         - -ns-rotate=false
 71         - -domain=cluster.local.
 72         ports:
 73         - containerPort: 53
 74           name: dns
 75           protocol: UDP
 76         - containerPort: 53
 77           name: dns-tcp
 78           protocol: TCP
 79         livenessProbe:
 80           httpGet:
 81             path: /healthz
 82             port: 8080
 83             scheme: HTTP
 84           initialDelaySeconds: 60
 85           timeoutSeconds: 5
 86           successThreshold: 1
 87           failureThreshold: 5
 88         readinessProbe:
 89           httpGet:
 90             path: /readiness
 91             port: 8080
 92             scheme: HTTP
 93           initialDelaySeconds: 30
 94           timeoutSeconds: 5
 95       - name: healthz
 96         image: docker.gaoxiaobang.com/kubernetes/exechealthz:1.0
 97         resources:
 98           limits:
 99             cpu: 10m
100             memory: 20Mi
101           requests:
102             cpu: 10m
103             memory: 20Mi
104         args:
105         - -cmd=nslookup kubernetes.default.svc.cluster.local localhost >/dev/null
106         - -port=8080
107         ports:
108         - containerPort: 8080
109           protocol: TCP
110       volumes:
111       - name: etcd-storage
112         emptyDir: {}
113       dnsPolicy: Default
dns-rc.yml

注意dns-rc.yml:修改文件中的master ip

 

dns service服務yml

 1 apiVersion: v1
 2 kind: Service
 3 metadata:
 4   name: kube-dns
 5   namespace: kube-system
 6   labels:
 7     k8s-app: kube-dns
 8     kubernetes.io/cluster-service: "true"
 9     kubernetes.io/name: "KubeDNS"
10 spec:
11   selector:
12     k8s-app: kube-dns
13   clusterIP:  10.254.254.254
14   ports:
15   - name: dns
16     port: 53
17     protocol: UDP
18   - name: dns-tcp
19     port: 53
20     protocol: TCP
dns-svc.yml

 

創建namespace(有就不用在創建了)

kubectl create -f kube-system.yml

 

創建ReplicationController

[root@kubernetes-master pods]# kubectl create -f dns-rc.yml

 

創建Service

[root@kubernetes-master pods]# kubectl create -f dns-svc.yml

 

 查看dns-rc.yml文件中定義pod的啟動狀態,如下則啟動成功。

[root@kubernetes-master pods]#  kubectl get pod --namespace=kube-system

 

 查看dns-svc.yml文件中定義的Service的信息。

[root@kubernetes-master pods]# kubectl get svc -l k8s-app=kube-dns --namespace=kube-system

 

 

 

測試DNS的效果。
部署一個busybox的Pod

 1 apiVersion: v1
 2 kind: Pod
 3 metadata:
 4   name: busybox
 5   namespace: default
 6 spec:
 7   containers:
 8   - image: busybox
 9     command:
10       - sleep
11       - "3600"
12     imagePullPolicy: IfNotPresent
13     name: busybox
14   restartPolicy: Always
busybox.yml

 

驗證kubernetes服務的地址解析,出現如下所示則證明DNS解析正常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM