coredns部署

目录

一、获取coredns.yaml文件

二、修改coredns.yaml文件

三、基于yaml文件启动coredns服务


coredns域名解析流程:

举例:当pod1应用想通过dns域名的方式访问pod2则首先根据容器中/etc/resolv.conf内容配置的namserver地址,向dns服务器发出请求,由service将请求抛出转发给kube-dns service,由它进行调度后端的core-dns进行域名解析。解析后请求给kubernetes service进行调度后端etcd数据库返回数据,pod1得到数据后由core-dns转发目的pod2地址解析,最终pod1请求得到pod2

coredns是不负责存储域名解析记录的,是通过apiserver,也就是下面的截图的kubernetes

它是K8S内部的,集群内的各pod与K8S的API server联系都是通过这个10.100.0.1地址联系的,这个地址是K8S集群内API server的服务地址

一、获取coredns.yaml文件

 获取coredns的yaml文件两种方式:1、gitlhup官网下载;2、本地模板文件修改

1、gitlab项目下载:

1.1、进入官网 https://github.com,搜索coredns,跳转出页面点击coredns/deployment

1.2、点击kubernetes

 

1.3、点击coredns.yaml.sed,就可以看见文件内容了,下载下来进行修改即可

2、cp本地模板文件进行修改

root@k8s-deploy:~# cd kubernetes/cluster/addons/dns
root@k8s-deploy:~/kubernetes/cluster/addons/dns# ls
coredns  kube-dns  nodelocaldns  OWNERS
root@k8s-deploy:~/kubernetes/cluster/addons/dns# cd coredns/
root@k8s-deploy:~/kubernetes/cluster/addons/dns/coredns# ll
total 44
drwxr-xr-x 2 root root 4096 Jul 13 14:48 ./
drwxr-xr-x 5 root root 4096 Jul 13 14:48 ../
-rw-r--r-- 1 root root 5060 Jul 13 14:48 coredns.yaml.base
-rw-r--r-- 1 root root 5110 Jul 13 14:48 coredns.yaml.in
-rw-r--r-- 1 root root 5112 Jul 13 14:48 coredns.yaml.sed
-rw-r--r-- 1 root root 1075 Jul 13 14:48 Makefile
-rw-r--r-- 1 root root  344 Jul 13 14:48 transforms2salt.sed
-rw-r--r-- 1 root root  287 Jul 13 14:48 transforms2sed.sed
root@k8s-deploy:~/kubernetes/cluster/addons/dns/coredns#

这些coredns的yaml文件都可以作为模板文件进行修改,下面使用coredns.yaml.base为模板文件

# mkdir /root/yaml/20220724 -p

# cp /root/kubernetes/cluster/addons/dns/coredns/coredns.yaml.base /root/yaml/20220724/coredns.yaml

 查看下k8s集群hosts文件中定义的集群域名,待会修改coredns文件需要用

root@k8s-deploy:~/yaml/20220724# cat /etc/kubeasz/clusters/k8s-cluster1/hosts | grep "CLUSTER_DNS_DOMAIN"
CLUSTER_DNS_DOMAIN="cluster.local"

二、修改coredns.yaml文件

1、把域名修改成自己hosts文件中定义的域名

2、分配资源

分配256M内存 cpu200毫核,这里自己测试使用分配少一点资源即可,真正生产环境memory是4G,cpu是2核

 3、 配置service的ip

 创建一个pod,进入pod内拿到service_ip

root@k8s-deploy:~/yaml/20220724# kubectl create ns  myserver
namespace/myserver created
root@k8s-deploy:~/yaml/20220724# kubectl run test1 --image=centos:7.9.2009 sleep 100000 -n myserver
pod/test1 created
root@k8s-deploy:~/yaml/20220724# kubectl get pod -n myserver
NAME    READY   STATUS    RESTARTS   AGE
test1   1/1     Running   0          59s

 

3.1、进入容器查看下service的IP

该地址根据自己实际情况修改,我的service_ip是10.100.0.2

4、修改镜像

 如果可以连外网,也可以不修改,使用默认的镜像,如果无法连接外网,提前下载好镜像上传至harbor

4.1下载coredns镜像

到docker官方镜像仓库搜索coredns

 点击tags,找到自己想要的版本

4.2、我这里下载 coredns:1.9.3版本,并上传到harbor

root@k8s-deploy:~/yaml/20220724# docker pull coredns/coredns:1.9.3
root@k8s-deploy:~/yaml/20220724# docker tag coredns/coredns:1.9.3 harbor.magedu.net/baseimages/coredns:1.9.3
root@k8s-deploy:~/yaml/20220724# docker push harbor.magedu.net/baseimages/coredns:1.9.3
The push refers to repository [harbor.magedu.net/baseimages/coredns]
df1818f16337: Pushed
256bc5c338a6: Pushed
1.9.3: digest: sha256:bdb36ee882c13135669cfc2bb91c808a33926ad1a411fee07bd2dc344bb8f782 size: 739

4.3、修改配置文件把镜像换成本地harbor镜像

三、基于yaml文件启动coredns服务

1、启动pod

root@k8s-deploy:~/yaml/20220724# kubectl apply -f coredns.yaml

2、 查看地址

3、查看coredns服务,默认是一个副本

4、测试coredns

 进入容器内部ping域名是否可达

 5、 设置多副本

 如果负载压力比较大,除了调整cpu,memory的资源,还可以扩大副本数,在yaml文件中, 添加副本参数,设置为两个副本

 再查看下就有两个coredns pod了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值