网站首页 > 开源技术 正文
YP小站 YP小站
背景
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 内抓包快速定位网络问题
解析集群内部域名
下面例子解析同一个 namespace 中 service 名称为 blog 域名。
# 进入 piwik 容器网络
nbsp;e_net piwik-654dc7b97b-g44kn production
Entering pod netns for production/piwik-654dc7b97b-g44kn
Execute the command: nsenter -n -t 16519
# 使用 tcpdump 抓 dns 53 端口包
nbsp;tcpdump -nt -i eth0 port 53
# 再打开另一个窗口,进入 piwik 容器
nbsp;kubectl exec -it piwik-654dc7b97b-g44kn -n production sh
# 解析 blog 域名
nbsp;nslookup blog
Server: 10.10.0.2
Address: 10.10.0.2#53
Name: blog.production.svc.cluster.local
Address: 10.10.72.218
下面是抓 blog 域名 DNS 包结果:
从上面看,解析 blog 域名时,点的个数比配置中 ndots 值小,会按照配置 search 参数填补域名后缀。在第一次填补后缀 production.svc.cluster.local 就解析出 A记录,这时就会终止dns查询返回A记录结果。
解析集群外部域名
下面例子解析集群外部域名 www.jd.com 京东网站。
# 进入 piwik 容器
nbsp;kubectl exec -it piwik-654dc7b97b-g44kn -n production sh
# dns 解析京东域名
nbsp;nslookup www.jd.com
Server: 10.10.0.2
Address: 10.10.0.2#53
Non-authoritative answer:
www.jd.com canonical name = www.jd.com.gslb.qianxun.com.
www.jd.com.gslb.qianxun.com canonical name = www.jdcdn.com.
www.jdcdn.com canonical name = img2x-v6-sched.jcloudedge.com.
Name: img2x-v6-sched.jcloudedge.com
Address: 222.186.184.3
下面是抓 www.jd.com域名 DNS 包结果:
从上图抓包来看,京东域名点的个数比配置中 ndots 值小,会按照配置 search 参数填补域名后缀。依次填补 production.svc.cluster.local.、svc.cluster.local.、cluster.local.都没有查询出结果,后面直接解析 www.jd.com 域名,查询出A记录并返回结果。
解析域名点数大于或者等于ndots配置
解析域名点数大于或者等于ndots配置,又会发生什么事情?
下面来看看结果:
# 点数等于 ndots 配置
nbsp;nslookup a.b.c.e.yp14.cn
Server: 10.10.0.2
Address: 10.10.0.2#53
Non-authoritative answer:
Name: a.b.c.e.yp14.cn
Address: 39.106.191.105
点数等于 ndots 配置结果
# 点数大于 ndots 配置
nbsp;nslookup a.b.c.e.f.yp14.cn
Server: 10.10.0.2
Address: 10.10.0.2#53
Non-authoritative answer:
Name: a.b.c.e.f.yp14.cn
Address: 39.106.191.105
点数等于 ndots 大于配置结果
从上面我们可以得出结论,不管是点数大于或者等于 ndots 配置,都不会填补 search声明的配置。
优化建议
通过上面案例可以发现ndots的值和请求息息相关,在使用中为了避免过多的DNS查询请求,可以适当优化相应的值或者请求域名。
- 条件允许的情况下,尽量将请求体中的点都带上,并且要大于或者等于配置中的ndots的值。
- 由于自动填补域名后缀是按照配置中的参数依次添加,所以在同一个namespace下,可以直接解析Service名即可。如 nslookup blog,会自动补全 production.svc.cluster.local 后缀,且是第一个配置的,因此查询也只有一条。提高DNS解析速度。
猜你喜欢
- 2024-09-09 利用HTTP host头攻击的技术(http头hostname攻击)
- 2024-09-09 GDPR庆祝五岁生日,Meta被罚13亿美元
- 2024-09-09 「简讯」20170518(优秀简讯范文短文)
- 2024-09-09 Web 服务器性能/压力测试工具/负载均衡器
- 2024-09-09 值得收藏 一文说尽运维监控(运维监控平台解决方案)
- 2024-09-09 网站关键词排名突然下降?四条干货让你解决问题!
- 2024-09-09 运维监控指标汇总(运维监控技术)
- 2024-09-09 Github 2024-03-17 php开源项目日报 Top9
- 2024-09-09 群晖系统DSM7.0.1 RC发布!一分钟了解升级了什么
- 2024-09-09 Shopify实用工具大全 网上看到的(shopify是用什么语言开发的)
你 发表评论:
欢迎- 07-10公司网站建站选择:人工建站和源码建站分析
- 07-10多用途游戏娱乐新闻网站HTML5模板
- 07-10站长教你搭建属于自己的网站(搭建网站的步骤)
- 07-10php宝塔搭建部署实战响应式塑料封条制品企业网站模板源码
- 07-10自适应响应式汽车配件类网站源码 html5高端大气汽车网站织梦模板
- 07-10网站标签怎么设置?(网站标签怎么设置比较好)
- 07-10PageAdmin企业网站制作中踩过的坑
- 07-10豆包给我输出的html在线象棋源码(有点简单)
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)