Kubernetes DNS 服務安裝配置
阿新 • • 發佈:2017-07-11
docker kubernets skydns kube2sky
Kubernetes的DNS服務是基於SkyDNS實現的,同時又需要和API Server緊密溝通,它的基本工作方式是通過API Server監視服務創建,一旦有新的服務創建就通知SkyDNS創建一條域名解析記錄。溝通API Server和SkyDNS的工作都是由Kube2Sky完成的,Kube2sky和Skydns都需要使用ETCD實現共享配置和服務發現。以下是ETCD的架構圖,它清晰地闡明了
Kubernetes實現DNS的方式。
關於Skydns和Kube2sky是在本地安裝還是以Pod的方式安裝到k8s集群裏,筆者在網上看到兩種方式都有,但是筆者對本地安裝的方式持懷疑態度,主要是涉及到虛擬網絡和物理網絡的聯通性問題,具體地說就是Skydns Server的IP應該kube集群虛擬網絡中的某個IP地址,也就是說這個IP需要在kube-apiserver啟動參數–service-cluster-ip-range指定的IP地址範圍內。而Skydns如果是本地化安裝,是無法綁定DNS Server的IP為一個虛擬網絡的IP(就是參數-addr的值)。筆者傾向使用鏡像方式安裝。
安裝
文件內容kubernetes-dns.yaml如下:
apiVersion: v1 kind: ReplicationController metadata: name: kube-dns-v6 namespace: default labels: k8s-app: kube-dns version: v6 kubernetes.io/cluster-service: "true" spec: replicas: 1 selector: k8s-app: kube-dns version: v6 template: metadata: labels: k8s-app: kube-dns version: v6 kubernetes.io/cluster-service: "true" spec: containers: - name: etcd image: index.tenxcloud.com/google_containers/etcd-amd64:2.2.1 command: - /bin/etcd - -listen-client-urls - http://0.0.0.0:2379,http://0.0.0.0:4001 - -advertise-client-urls - http://127.0.0.1:2379,http://127.0.0.1:4001 - -initial-cluster-token - skydns-etcd volumeMounts: - name: etcd-storage mountPath: /var/etcd/data - name: kube2sky image: index.tenxcloud.com/google_containers/kube2sky:1.14 resources: limits: cpu: 100m memory: 50Mi livenssProbe: httpGet: path: /healthz port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 readinessProbe: httpGet: path: /readiness port: 8081 scheme: HTTP initalDelaySeconds: 30 timeoutSeconds: 5 args: - --domain=cluster.local - name: skydns image: index.tenxcloud.com/google_containers/skydns:2015-10-13-8c72f8c resources: args: - -machines=http://127.0.0.1:4001 - -addr=0.0.0.0:53 - -ns-rotate=false - -domain=cluster.local. ports: - containerPort: 53 name: dns protocol: UDP - containerPort: 53 name: dns-tcp protocol: TCP dnsPolicy: Default - name: healthz image: index.tenxcloud.com/google_containers/exechealthz:1.0 resources: limits: cpu: 100m memory: 50Mi args: - -cmd=nslookup kubernetes.defaults.svc.cluster.local 127.0.0.1 >/dev/null - -port=8080 ports: - containerPort: 8080 protocol: TCP
使用如下命令: kubectl create -f kubernetes-dns.yaml
本文出自 “網絡技術摸索” 博客,請務必保留此出處http://heshengkai.blog.51cto.com/5014551/1946236
Kubernetes DNS 服務安裝配置