文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

IPVS下CoreDNS滚动更新解析失败原理是什么

2023-07-05 11:05

关注

这篇文章主要介绍了IPVS下CoreDNS滚动更新解析失败原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇IPVS下CoreDNS滚动更新解析失败原理是什么文章都会有所收获,下面我们一起来看看吧。

IPVS 模式下,当 coredns 滚动更新期间,集群监控日志出现大量的连接超时,由于日志异常的时间和 coredns 变更时间完全重叠,怀疑是 coredns 滚动更新造成,下面进行问题复现,并给出优化方案。

IPVS下CoreDNS滚动更新解析失败原理是什么

实验

顺序查询

while true;do time (dig +tries=1 -4 +short A <name> @<dns clusterIP> >> dig.log) >> dig.log 2>&1;done

IPVS下CoreDNS滚动更新解析失败原理是什么

可以看到在 顺序执行(非并发压测)的情况下,已经出现较多DNS解析超时的情况

并发查询

dnsperf是一个开源的DNS压力测试工具,用户可以用它来对DNS服务器或者Local DNS做压力测试。dnsperf目前的实现是单进程模式,通过epoll非阻塞地处理网络事件

$ echo "www.mervinwang.com A" > dnstest$ dnsperf -d dnstest -s <DNS的IP> -c100000 -Q100000 -l60
数据\解析超时时间1000ms500ms
sent6742340925
completed6435834519
lost3065 (4.55%)6406 (15.65%)

优化

IPVS下CoreDNS滚动更新解析失败原理是什么

通过查阅 issue 得知,这里可能与ipvs_udp_timeout有关,默认的设置的是300scoredns 滚动更新的时候 ipvs 中 udp 老链接会 300s 才删除,如果在 300s 内客户端有端口重用的话就会出现这个问题,并且这个时间和日志发生的时间也很类似,持续了5分钟。

优化改动

kube-proxy 加了ipvs-udp-timeout=10s

    spec:      containers:      - args:        - --kubeconfig=/var/lib/kube-proxy/config        - --hostname-override=$(NODE_NAME)        - --v=2        - --proxy-mode=ipvs        ...        - --ipvs-udp-timeout=10s

等待5分钟(关键!!)

coredns configmaphealth lameduck配置改成20s

Corefile: |-    .:53 {        errors        health {            lameduck 20s        }        ready...}

查看 coredns日志,等待 reload

IPVS下CoreDNS滚动更新解析失败原理是什么

修改 coredns configmap 后,coredns 会自动 Reload,Relaod 过程中打印输出的 lameduck 时间为 上次配置的时间

优化后结果

数据类型\解析超时时间1000ms500ms
sent8502780502
completed8493080423
lost97 (0.11%)79 (0.10%)

可以看到,效果还是很明显的~

最后附上 dnspref 工具的常用参数:

Dnsperf 支持下面的这些命令行参数:-s     用来指定DNS服务器的IP地址,默认值是127.0.0.1-p     用来指定DNS服务器的端口,默认值是53-d     用来指定DNS消息的内容文件,该文件中包含要探测的域名和资源记录类型,见下文-t     用来指定每个请求的超时时间,默认值是3000ms-Q     用来指定本次压测的最大请求数,默认值是1000-c     用来指定并发探测数,默认值是100. dnsperf会从-d指定的文件中随机选取100个座位探测域名来发送DNS请求.-l     用来指定本次压测的时间,默认值是无穷大。-e     本选项通过EDNS0,在OPT资源记录中运用edns-client-subnet来指定真实的client ip. -i     用来指定前后探测的时间间隔,因为dnsperf是一个压测工具,所以本选项目前还不支持。-P     指定用哪个传输层协议发送DNS请求,udp或者tcp。默认值是udp-f     指定用什么地址类型发送DNS请求,inet或者inet6。默认值是inet-v     除了标准的输出外,还输出每个相应码的个数。-h     打印帮助

关于“IPVS下CoreDNS滚动更新解析失败原理是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“IPVS下CoreDNS滚动更新解析失败原理是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯