简介
About CoreDNS
CoreDNS is a flexible, extensible DNS server that can serve as the Kubernetes cluster DNS. Like Kubernetes, the CoreDNS project is hosted by the CNCF.
You can use CoreDNS instead of kube-dns in your cluster by replacing kube-dns in an existing deployment, or by using tools like kubeadm that will deploy and upgrade the cluster for you.
一、修改部署文件环境变量
在官网下载https://github.com/coredns/deployment/tree/master/kubernetes 配置文件主要是deploy.sh和coredns.yam.sed,由于不是从kube-dns转到coredns,所以要注释掉kubectl相关操作,修改REVERSE_CIDRS、DNS_DOMAIN、CLUSTER_DNS_IP等变量为实际值,具体命令./deploy.sh -s -r 10.254.0.0/16 -i 10.254.0.10 -d clouster.local > coredns.yaml11
[root@master01 ~]# mkdir /coredns
[root@master01 ~]# cd /coredns
[root@master01 coredns]# ls
coredns.yaml.sed deploy.sh
[root@master01 coredns]# ./deploy.sh -h
usage: ./deploy.sh [ -r REVERSE-CIDR ] [ -i DNS-IP ] [ -d CLUSTER-DOMAIN ] [ -t YAML-TEMPLATE ]
-r : Define a reverse zone for the given CIDR. You may specifcy this option more
than once to add multiple reverse zones. If no reverse CIDRs are defined,
then the default is to handle all reverse zones (i.e. in-addr.arpa and ip6.arpa)
-i : Specify the cluster DNS IP address. If not specificed, the IP address of
the existing "kube-dns" service is used, if present.
-s : Skips the translation of kube-dns configmap to the corresponding CoreDNS Corefile configuration.
[root@master01 coredns]# ./deploy.sh -s -r 10.254.0.0/16 -i 10.254.0.10 -d cluster.local > coredns.yaml
[root@master01 coredns]# ls
coredns.yaml coredns.yaml.sed deploy.sh
修改前后对比
[root@master01 coredns]# diff coredns.yaml coredns.yaml.sed
58c58,59
< kubernetes cluster.local 10.254.0.0/16 {
---
> ready
> kubernetes CLUSTER_DOMAIN REVERSE_CIDRS {
60d60
< upstream
62c62
< }
---
> }FEDERATIONS
64c64
< forward . /etc/resolv.conf
---
> forward . UPSTREAMNAMESERVER
69c69
< }
---
> }STUBDOMAINS
144,145c144,145
< path: /health
< port: 8080
---
> path: /ready
> port: 8181
171c171
< clusterIP: 10.254.0.10
---
> clusterIP: CLUSTER_DNS_IP
二、部署coredns
[root@master01 coredns]# kubectl apply -f coredns.yaml
serviceaccount/coredns created
clusterrole.rbac.authorization.k8s.io/system:coredns created
clusterrolebinding.rbac.authorization.k8s.io/system:coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
三、修改kubelet dns服务参数并重启kubelet服务
[root@node01 ~]# tail /k8s/kubernetes/cfg/kubelet
--v=4 \
--hostname-override=10.8.13.84 \
--kubeconfig=/k8s/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/k8s/kubernetes/cfg/bootstrap.kubeconfig \
--config=/k8s/kubernetes/cfg/kubelet.config \
--cert-dir=/k8s/kubernetes/ssl \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"
--cluster-dns=10.254.0.10 \
--cluster-domain=cluster.local. \
--resolv-conf=/etc/resolv.conf "
[root@node01 ~]# systemctl restart kubelet.service
[root@node01 ~]# systemctl status kubelet.service
● kubelet.service - Kubernetes Kubelet
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-05-14 10:30:15 CST; 1h 31min ago
Main PID: 20105 (kubelet)
Memory: 45.2M
CGroup: /system.slice/kubelet.service
└─20105 /k8s/kubernetes/bin/kubelet --logtostderr=true --v=4 --hostname-override=10.8.13.84 --kubeconfig=/k8s/kubernetes/cfg/kubelet.kubeconfig --bootstrap-kubeconfig=/k8s/kubernetes/cfg/bootstrap.kubeconfig --config=/k8s/kubernetes/cfg/kubelet.config --ce...
May 14 12:01:33 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:33.867343 20105 kubelet.go:2189] Container runtime status: Runtime Conditions: RuntimeReady=true reason: message:, NetworkReady=true reason: message:
May 14 12:01:34 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:34.799186 20105 prober.go:165] HTTP-Probe Host: http://10.254.88.2, Port: 8080, Path: /health
May 14 12:01:34 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:34.799336 20105 prober.go:168] HTTP-Probe Headers: map[]
May 14 12:01:34 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:34.801305 20105 http.go:99] Probe succeeded for http://10.254.88.2:8080/health, Response: {200 OK 200 HTTP/1.1 1 1 map[Content-Length:[2] Content-Type:[text/plain; charset=utf-8] Dat...0xc000d54e00 <nil>}
May 14 12:01:34 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:34.801428 20105 prober.go:118] Liveness probe for "coredns-7477c554c9-nsj5w_kube-system(0cef3fc3-75fb-11e9-a5ac-0050569059b4):coredns" succeeded
May 14 12:01:35 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:35.414625 20105 prober.go:165] HTTP-Probe Host: http://10.254.88.2, Port: 8080, Path: /health
May 14 12:01:35 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:35.414704 20105 prober.go:168] HTTP-Probe Headers: map[]
May 14 12:01:35 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:35.416291 20105 http.go:99] Probe succeeded for http://10.254.88.2:8080/health, Response: {200 OK 200 HTTP/1.1 1 1 map[Date:[Tue, 14 May 2019 04:01:35 GMT] Content-Length:[2] Content...0xc000d7bc00 <nil>}
May 14 12:01:35 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:35.416390 20105 prober.go:118] Readiness probe for "coredns-7477c554c9-nsj5w_kube-system(0cef3fc3-75fb-11e9-a5ac-0050569059b4):coredns" succeeded
May 14 12:01:35 hwzx-test-cmpnode01 kubelet[20105]: I0514 12:01:35.522515 20105 kubelet.go:1995] SyncLoop (housekeeping)
Hint: Some lines were ellipsized, use -l to show in full.
四、使用dnstools测试效果
注意:拿SVC服务来测试
[root@master01 coredns]# kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools
If you don't see a command prompt, try pressing enter.
dnstools# nslookup kubernetes
Server: 10.254.0.10
Address: 10.254.0.10#53
Name: kubernetes.default.svc.cluster.local
Address: 10.254.0.1
dnstools# nslookup nginx
Server: 10.254.0.10
Address: 10.254.0.10#53
Name: nginx.default.svc.cluster.local
Address: 10.254.224.237
网友评论