標籤:kuberntes
在kubernetes1.2的時候,採用了skydns + kube2dns +etcd的方式來部署dns。而從1.3開始,則部署方式有了一點兒變化,將skydns和kube2dns封裝到了一個容器鏡像中,放棄了etcd,而將dns解析直接放入到了記憶體之中,同時引入了dnsmasq,進一步利用其緩衝,具體的原理,請查閱相關文檔。本篇文檔,主要闡述新版的dns在kubernetes中的具體部署。
在Kubernetes的源碼目錄中,有個cluster/addons/dns目錄,下面有幾個與dns相關的檔案,我們將其中的skydns-rc.yaml.sed以及skydns-svc.yaml.sed檔案下載到本地,並去掉尾碼。只是拷貝檔案的話,可以通過https://rawgit.com這個地址加速,如下:
wget https://rawgit.com/kubernetes/kubernetes/release-1.5/cluster/addons/dns/skydns-rc.yaml.sed -O skydns-rc.yamlwget https://rawgit.com/kubernetes/kubernetes/release-1.5/cluster/addons/dns/skydns-svc.yaml.sed -O skydns-svc.yaml
下載下來的原檔案是用於saltstack自動化安裝的,我們手動處理的時候,需要進行相關修改。
修改skydns-rc.yaml內容如下:
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
# Copyright (the except - At some point, we need to rename all skydns-*.yaml.* files to kubedns-*.yaml.* cluster/addons/dns-horizontal-autoscaler/dns-horizontal- with this /---app: kube-/cluster-service: . In order to Addon Manager . Default is . Will be tuned real DNS horizontal auto-%-app: kube--app: kube-/critical-pod: /tolerations: -/library/kubedns-amd64: # clusters, set request = limit to keep this container category so the kubelet doesn/healthz-//readiness HTTP server once that initialDelaySeconds: - --domain=- --dns-port= - --config-map=kube-- --kube-master-url=http: # This should be set to v= only after the new image ( from - --v=-- containerPort: -- containerPort: -tcp-- containerPort: -/library/kube-dnsmasq-amd64:/healthz-- --cache-size= - --no-- --server=.#- --log-facility=- - containerPort: - containerPort: -- name: dnsmasq-/library/dnsmasq-metrics-amd64:/- --v= - --- containerPort: -/library/exechealthz-amd64: # limits are set higher than expected pending investigation on #- --cmd=nslookup kubernetes.default.svc.cluster.local . >/dev/ - --url=/healthz-- --cmd=nslookup kubernetes.default.svc.cluster.local .: >/dev/ - --url=/healthz-- --port= - --- containerPort:
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
修改skydns-svc.yaml內容如下:
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
# Copyright (the except - At some point, we need to rename all skydns-*.yaml.* files to kubedns-*.yaml.*---app: kube-/cluster-service: /name: -app: kube-.-- name: dns-
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
啟動dns:
kubectl create -f skydns-rc.yamlkubectl create -f skydns-svc.yaml
修改各node節點上的/etc/kubernetes/kubelet設定檔,增加如下行:
KUBELET_ARGS="--cluster_dns=10.254.0.100 --cluster_domain=cluster.local"
重啟各節點:
systemctl restart kubelet
添加一個busybox的pod用於測試,busybox.yaml內容如下:
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
apiVersion: v1kind: Podmetadata: labels: name: busybox role: master name: busyboxspec: containers: - name: busybox image: myhub.fdccloud.com/library/busybox command: - sleep - "3600"
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
執行如下操作:
kubectl exec -it busybox shnslookup kubernetesnslookup kubernetes.default.cluster.localnslookup kubernetes.default.svc.cluster.local
如果能正常解析,則部署OK。
本文出自 “我的天空” 部落格,請務必保留此出處http://sky66.blog.51cto.com/2439074/1933996
Kubernetes 1.5 配置dns