CoreDNS是一个Go语言实现的链式插件DNS服务端,是CNCF成员,是一个高性能、易扩展的DNS服务端。可以很方便的部署在k8s集群中,用来代替kube-dns

具体的区别可以参考官方文档或者:https://zhuanlan.zhihu.com/p/80141656?from_voters_page=true

原理:
kubedns: kubedns 基于 SkyDNS 库,通过 apiserver 监听 Service 和 Endpoints 的变更事件同时也同步到本地 Cache,实现了一个实时的 Kubernetes 集群内 Service 和 Pod 的 DNS服务发现
kubernetes二进制部署coredns(12)_第1张图片

配置文件我都放到了百度网盘了,需要可以直接下载

链接:https://pan.baidu.com/s/1pC97t6rRgB0HaKHWQ_yk5Q
提取码:dc4o

首先我们启动了pod进入之后看一下没有dns的效果是啥样的
kubernetes二进制部署coredns(12)_第2张图片
发现不了百度的域名在pod当中

我们测试一下网络是否正常

kubernetes二进制部署coredns(12)
到外网是没有问题的


说明我的上面的10.0.0.2这个dns没有生效

这个是在之前配置集群的时候定义好的,dns使用这个ip地址,所以这里就用这个

kubernetes二进制部署coredns(12)
这两个忽略就好

这样会生成一个coredns的yaml

看一下配置

kubernetes二进制部署coredns(12)_第3张图片
接下来启动一下

kubernetes二进制部署coredns(12)_第4张图片
启动了在测试一下

kubernetes二进制部署coredns(12)_第5张图片
看到了吧,这次在pod中可以访问百度了

如果我们要自定义dns,可以创建一个
ConfigMap 建立了一个 DNS 配置,它具有一个单独的存根域和两个上游域名服务器
kubernetes二进制部署coredns(12)_第6张图片

然后把这个configmap挂载到pod中

如果当前的1个dns怕出现问题可以修改副本数量

kubectl edit deployment coredns -n kube-system

kubernetes二进制部署coredns(12)_第7张图片
kubernetes二进制部署coredns(12)

好了今天的dns就讲解到这里,后续有问题欢迎私信留言