K8s搭建-CoreDns

CoreDNS简介

CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能,Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。

如果想要在分布式系统实现服务发现的功能,CoreDNS 其实是一个非常好的选择,CoreDNS作为一个已经进入CNCF并且在Kubernetes中作为DNS服务使用的应用,其本身的稳定性和可用性已经得到了证明,同时它基于插件实现的方式非常轻量并且易于使用,插件链的使用也使得第三方插件的定义变得非常的方便。

Coredns 架构

整个 CoreDNS 服务都建立在一个使用 Go 编写的 HTTP/2 Web 服务器 Caddy 。

Coredns 项目下载

下载地址1:

wget https://github.com/coredns/deployment/archive/master.zip
unzip master.zip

下载地址2:
git clone https://github.com/coredns/deployment.git

安装部署

确认是否存在已运行dns服务

1
kubectl  get pods -o wide -n=kube-system

删除命令

1
kubectl delete --namespace=kube-system deployment ****-dns

生成安装配置文件

1
2
cd /workspace/deployment/kubernetes
./deploy.sh -r 10.254.0.0/16 -i 10.254.0.2 -d cluster.local -t coredns.yaml.sed -s >coredns.yaml

验证配置文件核心配置

1
cat coredns.yaml

1561709072968

1561709098483

执行安装

1
kubectl create -f coredns.yaml

验证安装

1
2
3
4
5
6
7
8
kubectl get svc -o wide -n=kube-system

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
heapster ClusterIP 10.109.196.102 <none> 80/TCP
kube-dns ClusterIP 10.96.0.2 <none> 53/UDP,53/TCP,9153/TCP
kubernetes-dashboard NodePort 10.110.231.202 <none> 443:30001/TCP
monitoring-grafana NodePort 10.98.242.145 <none> 80:30108/TCP
monitoring-influxdb ClusterIP 10.100.60.54 <none> 8086/TCP

查看coredns详细

1561709283565

设置master和节点DNS

使用命令查看kubelet配置的位置

1
systemctl status kubelet -l

1561709534383

修改/var/lib/kubelet/config.yaml文件的内容

1
2
3
clusterDNS:
- 10.96.0.2
clusterDomain: cluster.local.

重启

1
2
systemctl daemon-reload
systemctl restart kubelet

验证DNS

1、创建一个curl

1
kubectl run -it --image=registry.cn-shenzhen.aliyuncs.com/zhouqi-kubernetes/busyboxplus:v1 curl --rm

1561706009470

这个地方如果要验证各节点,可以伸缩多个,会运行在不同的节点中

1561706093086

对节点的验证,只需要进入容器使用nslookup kubernetes命令,就可以显示下图

1561706175310

文献参考:https://blog.51cto.com/michaelkang/2367800