CoreDNS简介
CoreDNS其实就是一个DNS服务,而DNS作为一种常见的服务发现手段,所以很多开源项目以及工程师都会使用CoreDNS为集群提供服务发现的功能,Kubernetes就在集群中使用CoreDNS解决服务发现的问题。
如果想要在分布式系统实现服务发现的功能,CoreDNS其实是一个非常好的选择,CoreDNS作为一个已经进入CNCF并且在Kubernetes中作为DNS服务使用的应用,其本身的稳定性和可用性已经得到了证明,同时它基于插件实现的方式非常轻量并且易于使用,插件链的使用也使得第三方插件的定义变得非常的方便。
Coredns架构
<代码>整个CoreDNS服务都建立在一个使用去编写的HTTP/2 Web服务器盒。代码>
集群信息介绍
Kubernetes
<代码> v1.13 代码>
k8s-master
<代码> 172.20.101.157 172.20.101.165 172.20.101.164 代码>
CLUSTER_CIDR
<代码> 10.254.0.0/16 代码>
CLUSTER_DNS
<代码> 10.254.0.10 代码>
Coredns项目下载
<代码>下载地址1: wget https://github.com/coredns/deployment/archive/master.zip 解压缩master.zip 下载地址2: git克隆https://github.com/coredns/deployment.git 代码>
安装部署
确认是否存在已运行dns服务
<代码> kubectl吊舱- o - n=kube-system宽 #删除命令 kubectl删除——名称空间=kube-system部署* * * * dns 代码>
安装主目录
<代码> cd/workspace/代码>
下载
<代码> git克隆https://github.com/coredns/deployment.git 代码>
安装目录
<代码> cd/workspace/部署/kubernetes 代码>
查看项目文件
<代码> [root@node01 kubernetes] #噢 CoreDNS-k8s_version.md coredns.yaml.sed deploy.sh README.md rollback.sh Scaling_CoreDNS.md Upgrading_CoreDNS.md 代码>
重要文件介绍h5>
部署。上海是一个用于在已经运行kube-dns的集群中生成运行CoreDNS部署文件(清单)的工具脚本。它使用coredns.yaml。sed文件作为模板,创建一个ConfigMap和CoreDNS的部署,然后更新集群中已有的kube-dns服务的选择器使用CoreDNS的部署。重用已有的服务并不会在服务的请求中发生冲突。
部署脚本使用方法
<代码>用法:/部署。sh (- r REVERSE-CIDR][我DNS-IP] [- d集群域][- t YAML-TEMPLATE] - r:定义一个给定CIDR反向区域。你可能specifcy这个选项 比 #添加内容如下 ——cluster-dns=10.254.0.10 \ ——集群域=cluster.local。代码>
#或者添加配置到/etc/systemd/system/kube-kubelet.service
<代码> # # #重启kubelet服务 代码>
<代码> systemctl daemon-reload systemctl启用kubelet systemctl重启kubelet systemctl地位kubelet - l 代码>
启动nginx测试服务
<代码> kubectl运行nginx——副本=2图像=nginx:高山——端口=80 kubectl公开部署nginx - type=NodePort - name=example-service-nodeport kubectl公开部署nginx - name=示例服务代码>
启动一个工具镜像
<代码> kubectl运行curl——图像=径向/busyboxplus: curl 代码>
验证服务启动成功
<代码> kubectl得到豆荚- o宽 姓名就绪状态重启年龄IP节点节点准备盖茨提名 curl - 66959 - f6557 - 879 c6 1/1运行0 4 m52 10.254.87.4 172.20.101.160 & lt; none>& lt; none> nginx - 665764 - c8c9 dgjgv 1/1运行0 7 m19s 10.254.100.2 172.20.101.166 & lt; none>& lt; none> nginx - 665764 - c8c9 z9rrm 1/1运行0 7 m19s 10.254.87.2 172.20.101.160 & lt; none>& lt; none> 代码>
<代码> [root@node01 kubernetes) # kubectl得到svc - o宽 名字类型集群ip外部ip端口(S)年龄选择器 示例服务ClusterIP 10.254.210.43 & lt; none>80/TCP 9 s运行=nginx example-service-nodeport NodePort 10.254.204.43 & lt; none>80:36136/TCP 14 s=运行nginx kubernetes ClusterIP 10.254.0.1 & lt; none>443/TCP 105 & lt; none> 代码>
登陆curl镜像(节点节点执行)
[root@node04 ~] #码头工人exec - f18900873efe sh
验证外网解析
<代码> ping qq.com PING qq.com(111.161.64.48): 56字节的数据 64个字节从111.161.64.48:seq=0 ttl=47时间=6.331 ms 从111.161.64.48 64字节:seq=1 ttl=47次=6.293Coredns安相对于1.2.6装部署