20211217 更新 ,腾讯云 ipvs模式下 localdns:
https://cloud.tencent.com/developer/article/1813985
20210919解决思路:
文章一:
有可能是集群内CoreDNS负载高,可以尝试下面两种方式:
详细文章2:https://blog.csdn.net/qq_38461443/article/details/107730030
解决方案如下:
方案(一):使用 TCP 协议发送 DNS 请求
通过resolv.conf的use-vc选项来开启 TCP 协议
测试
1、修改/etc/resolv.conf文件,在最后加入一行文本:
options use-vc
2、此压测可根据下面测试的go文件进行测试,编译好后放进一个pod中,进行压测:
#200个并发,持续30秒,记录超过5s的请求个数 ./dns -host {service}.{namespace} -c 200 -d 30 -l 5000
方案(二):避免相同五元组 DNS 请求的并发
通过resolv.conf的single-request-reopen和single-request选项来避免:
single-request-reopen (glibc>=2.9) 发送 A 类型请求和 AAAA 类型请求使用不同的源端口。这样两个请求在 conntrack 表中不占用同一个表项,从而避免冲突。
single-request (glibc>=2.10) 避免并发,改为串行发送 A 类型和 AAAA 类型请求,没有了并发,从而也避免了冲突。
测试 single-request-reopen
修改/etc/resolv.conf文件,在最后加入一行文本:
options single-request-reopen
此压测可根据下面测试的go文件进行测试,编译好后放进一个pod中,进行压测:
#200个并发,持续30秒,记录超过5s的请求个数 ./dns -host {service}.{namespace} -c 200 -d 30 -l 5000
测试 single-request
修改/etc/resolv.conf文件,在最后加入一行文本:
options single-request
此压测可根据下面测试的go文件进行测试,编译好后放进一个pod中,进行压测:
#200个并发,持续30秒,记录超过5s的请求个数 ./dns -host {service}.{namespace} -c 200 -d 30 -l 5000
最后结果,如果你测试过,相信coredns的测试如果还是增加使用 TCP 协议发送 DNS 请求,还是避免相同五元组 DNS 请求的并发,都没有显著的解决coredns延迟的结果
那么其实 k8s 官方也意识到了这个问题比较常见,所以也给出了 coredns 以 cache 模式作为 daemonset 部署的解决方案
在 Kubernetes 集群中使用 NodeLocal DNSCache
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/nodelocaldns
原文:https://www.bianchengquan.com/article/409739.html
背景
Kubernetes 集群中,域名解析离不开 DNS 服务,在 Kubernetes v1.10 以前集群使用 kube-dns dns服务,后来在 Kubernetes v1.10+ 使用 Coredns 做为集群dns服务。
使用 Kubernetes 集群时,会发现 Pod /etc/resolv.conf 配置。具体如下:
nameserver 10.10.0.2
search production.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
小伙伴们会好奇,search 或者 ndots 这是干嘛呀!想知道是干嘛的,接着看下文。
名词解释
search:搜索主机名查找列表。搜索列表目前仅限于6个域名,共计256个字符。
ndots:通俗一点说,如果你的域名请求参数中,点的个数比配置的ndots小,则会按照配置的search内容,依次添加相应的后缀直到获取到域名解析后的地址。如果通过添加了search之后还是找不到域名,则会按照一开始请求的域名进行解析。
抓包分析DNS请求
Kubernetes Pod 内抓包,请参考 K8S Pod 内抓包快速定位网络问题:
原文:https://blog.csdn.net/h952520296/article/details/106816680
https://blog.csdn.net/h952520296/article/details/106816680/
在其他的容器中,进行 youku.com 域名查找
复制
1
nslookup youku.com 172.22.121.65
注意:nslookup命令的最后指定DNS服务容器的IP,是因为,如果不指定,且DNS服务的容器存在多个的话,那么DNS请求,可能会均分到所有DNS服务的容器上,我们如果只抓某单个DNS服务容器抓到的包,可能就不全了,指定IP后,DNS的请求,就必然只会打到单个的DNS容器。抓包的数据才完整。
————————————————
版权声明:本文为CSDN博主「Mumunu-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/h952520296/article/details/106816680
理论:https://www.jianshu.com/p/ded59d18ed18
Default: Pod 从运行所在的节点继承名称解析配置
ClusterFirst: 与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都将转发到从节点继承的上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。
ClusterFirstWithHostNet:对于以 hostNetwork 方式运行的 Pod,应显式设置其 DNS 策略 "`ClusterFirstWithHostNet`"。
None: 此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 `dnsConfig` 字段 所提供的 DNS 设置。
说明:** "Default" 不是默认的 DNS 策略。如果未明确指定 `dnsPolicy`,则使用 "ClusterFirst"。
例子:https://blog.csdn.net/qq_34556414/article/details/108999454
在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问。
[root@k8s-master ~]# kubectl get deployment -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 1/1 1 1 25h
coredns 是一个 DNS 服务器。每当有新的 Service 被创建,coredns 会添加该 Service 的 DNS 记录。Cluster 中的 Pod 可以通过
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 443/TCP 25d
nodeport-svc NodePort 10.0.0.171 3000:30090/TCP 28h
用 nslookup 查看 nodeport-svc的 DNS 的信息。
/ # nslookup nodeport-svc.default
Server: 10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local
Name: nodeport-svc.default
Address 1: 10.0.0.171 nodeport-svc.default.svc.cluster.local
比如可以用 httpd-svc.default 访问 Service httpd-svc。
/ # wget nodeport-svc.default:3000
Connecting to nodeport-svc.default:3000 (10.0.0.171:3000)
saving to ‘index.html’
index.html 100% |*********************************************************| 41 0:00:00 ETA
‘index.html’ saved
如果要访问其他 namespace 中的 Service,就必须带上 namesapce 了。Kubernetes 集群内部可以通过 Cluster IP 和 DNS 访问 Service。
————————————————
版权声明:本文为CSDN博主「富士康质检员张全蛋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34556414/article/details/108999454