coredns解析流程和corefile配置
Core-DNS解析流程
当pod1应用想通过dns域名的方式访问pod2则首先根据容器中/etc/resolv.conf内容配置的namserver地址,向dns服务器发出请求,由service将请求抛出转发给kube-dns service,由它进行调度后端的core-dns进行域名解析。解析后请求给kubernetes service进行调度后端etcd数据库返回数据,pod1得到数据后由core-dns转发目的pod2地址解析,最终pod1请求得到pod2。
运行coredns根据实际使用规格,调整coredns的副本数量和资源上限限制
root@deploy:~# vim coredns_v1.9.3.yaml
coredns configmap配置
root@deploy:~# kubectl get configmaps -n kube-system
root@deploy:~# kubectl edit configmaps coredns -n kube-system
coredns配置解释:
errors:错误信息标准输出
health:在CoreDNS的http://localhost:8080/health 端口提供CoreDNS服务的健康报告。
ready:监听8181端口,当coredns的插件都已就绪时,访问该接口会返回200 OK。
kubernetes:CoreDNS将基于kubernetes service name进行DNS查询并返回查询记录给客户端。
promethus:CoreDNS的度量指标数据以Promethus的key-value的格式在http://localhost:9153/metrics URI上提供
forward:不是Kubernetes集群内的其他任何域名的查询都将转发给预定义的目的DNS服务器,如(/etc/resolv.conf中指定的nameserver)
例如:
harbor.cncf.net {
forward . 10.10.100.2
}
cache:启用service解析缓存,单位为秒。
loop:监测域名解析是否有死循环,如coredns转发给内网DNS服务器,而内网DNS服务器又转发给coredns,如果发现解析是死循环,则强制终止CoreDNS进程(kubernetes会重建)。
reload:监测corefile是否更改,在重新编辑configmap配置后,默认2分钟后会优雅的自动加载。
loadbalance:轮询DNS域名解析,如果一个域名存在多个A主机名记录轮询解析。
coredns下载:
coredns的github项目下载
选择deployment repository
选择kubernetes目录
选择coredns.yaml.sed
通过kubernetes的github的项目下载
通过kubernetes的github的项目,从kubernetes源码包内获取coredns的yaml文件
https://github.com/kubernetes/kubernetes/releases
点击Downloads for v1.2x下载
下载加压后打开kubernetes/cluster/addons/dns/coredns目录下
复制模板文件coredns.yaml.base,修改后进行应用安装
root@deploy:/usr/local/src/kubernetes/cluster/addons/dns/coredns# cp coredns.yaml.base /root/coredns.yaml
1、修改域名
如果使用的kubeasz部署的k8s则查看集群hosts文件来获取集群配置的dns名称
root@deploy:~# grep "DNS_DOMAIN" /etc/kubeasz/clusters/k8s-cluster1/hosts
CLUSTER_DNS_DOMAIN="cluster.local"
修改coredns的yaml,将DNS_DOMAIN修改为当前k8s集群的dns后缀名称
root@deploy:~# vim coredns.yaml
修改_DNS_DOMAIN_ 替换为 cluster.local
2、修改内存
生产建议上限为 cpu:200m,内存4Gi
修改coredns pod内存上限
修改coredns地址,地址为service地址,也是pod容器内的dns地址
修改镜像地址:
手动拉取coredns镜像,并上传到本地harbor
root@deploy:~# docker pull coredns/coredns:1.9.3
docker.io/coredns/coredns:1.9.3
root@deploy:~# docker tag coredns/coredns:1.9.3 harbor.cncf.net/baseimages/coredns/coredns:1.9.3
root@deploy:~# docker push harbor.cncf.net/baseimages/coredns/coredns:1.9.3
修改coredns镜像地址为本地harbor
创建coredns,并将yaml文件修改当前版本作为归档
root@deploy:~# mv coredns.yaml coredns_v1.9.3.yaml
root@deploy:~# kubectl apply -f coredns_v1.9.3.yaml
查看pod 容器dns地址为clusterip
查看coredns
root@deploy:~# kubectl get svc -A
查看coredns pods
pod成功通过kube-dns解析外网域名
本文来自博客园,作者:PunchLinux,转载请注明原文链接:https://www.cnblogs.com/punchlinux/p/16531386.html