范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

K8S问题排查

  问题背景
  K8S 集群中修改calico 的网络为vxlan 模式后,发现部分service 在节点上无法访问(实际上是延迟访问,延迟时间稳定在1min3s 左右)。[root@node2 ~]# time curl -s http://10.96.91.255 real    1m3.136s user    0m0.005s sys     0m0.005s原因分析
  先确认问题范围,在环境上找多个 service 依次测试发现,如果调用service 的节点和实际pod 不在同一个节点上,则出现延迟,否则请求正常。也就是说跨节点的访问才有问题。而直接用service 对应的podIP 访问,也不存在问题,猜测问题可能出在service 转pod 的过程。
  再确认基本环境, OS 、K8S 、calico 等基础环境没有发生任何变化,仅仅是把calico 的网络模式从BGP 改为了vxlan ,但是这个改动改变了集群内service 及pod 的请求路径,也即所有的容器请求需要走节点上新增的calico.vxlan 接口封装一下。网络模式修改前没有问题,修改后必现,之后切回BGP 模式问题就消失了,说明问题可能跟新增的calico.vxlan 接口有关系。
  先看下环境情况,并触发 service 请求:# 验证环境:node2(10.10.72.11)——> node1(10.10.72.10) # 验证方法:node2上curl service:10.96.91.255 ——> node1上pod:166.166.166.168:8082 [root@node2 ~]# ip addr 10: vxlan.calico:  mtu 1410 qdisc noqueue state UNKNOWN group default     link/ether 66:2d:bf:44:a6:8b brd ff:ff:ff:ff:ff:ff     inet 166.166.104.10/32 brd 166.166.104.10 scope global vxlan.calico        valid_lft forever preferred_lft forever  [root@node1 ~]# ip addr 15: vxlan.calico:  mtu 1410 qdisc noqueue state UNKNOWN group default     link/ether 66:f9:37:c3:7e:94 brd ff:ff:ff:ff:ff:ff     inet 166.166.166.175/32 brd 166.166.166.175 scope global vxlan.calico        valid_lft forever preferred_lft forever  [root@node2 ~]# time curl http://10.96.91.255
  在 node1 的主机网卡上抓包看看封装后的请求是否已到达:[root@node1 ~]# tcpdump -n -vv -i eth0 host 10.10.72.11 and udp tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 07:19:42.730996 IP (tos 0x0, ttl 64, id 6470, offset 0, flags [none], proto UDP (17), length 110)     10.10.72.11.nim-vdrshell > 10.10.72.10.4789: [bad udp cksum 0xffff -> 0x3af0!] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 64, id 39190, offset 0, flags [DF], proto TCP (6), length 60)     166.166.104.10.35632 > 166.166.166.168.us-cli: Flags [S], cksum 0xe556 (correct), seq 3025623348, win 29200, options [mss 1460,sackOK,TS val 101892130 ecr 0,nop,wscale 7], length 0 07:19:43.733741 IP (tos 0x0, ttl 64, id 6804, offset 0, flags [none], proto UDP (17), length 110)     10.10.72.11.nim-vdrshell > 10.10.72.10.4789: [bad udp cksum 0xffff -> 0x3af0!] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 64, id 39191, offset 0, flags [DF], proto TCP (6), length 60)     166.166.104.10.35632 > 166.166.166.168.us-cli: Flags [S], cksum 0xe16b (correct), seq 3025623348, win 29200, options [mss 1460,sackOK,TS val 101893133 ecr 0,nop,wscale 7], length 0 07:19:45.736729 IP (tos 0x0, ttl 64, id 7403, offset 0, flags [none], proto UDP (17), length 110)     10.10.72.11.nim-vdrshell > 10.10.72.10.4789: [bad udp cksum 0xffff -> 0x3af0!] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 64, id 39192, offset 0, flags [DF], proto TCP (6), length 60)     166.166.104.10.35632 > 166.166.166.168.us-cli: Flags [S], cksum 0xd998 (correct), seq 3025623348, win 29200, options [mss 1460,sackOK,TS val 101895136 ecr 0,nop,wscale 7], length 0 07:19:49.744801 IP (tos 0x0, ttl 64, id 9648, offset 0, flags [none], proto UDP (17), length 110)     10.10.72.11.nim-vdrshell > 10.10.72.10.4789: [bad udp cksum 0xffff -> 0x3af0!] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 64, id 39193, offset 0, flags [DF], proto TCP (6), length 60)     166.166.104.10.35632 > 166.166.166.168.us-cli: Flags [S], cksum 0xc9f0 (correct), seq 3025623348, win 29200, options [mss 1460,sackOK,TS val 101899144 ecr 0,nop,wscale 7], length 0 07:19:57.768735 IP (tos 0x0, ttl 64, id 12853, offset 0, flags [none], proto UDP (17), length 110)     10.10.72.11.nim-vdrshell > 10.10.72.10.4789: [bad udp cksum 0xffff -> 0x3af0!] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 64, id 39194, offset 0, flags [DF], proto TCP (6), length 60)     166.166.104.10.35632 > 166.166.166.168.us-cli: Flags [S], cksum 0xaa98 (correct), seq 3025623348, win 29200, options [mss 1460,sackOK,TS val 101907168 ecr 0,nop,wscale 7], length 0 07:20:05.087057 IP (tos 0x0, ttl 64, id 8479, offset 0, flags [none], proto UDP (17), length 164)     10.10.72.10.34565 > 10.10.72.11.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 3425, offset 0, flags [DF], proto UDP (17), length 114)     166.166.166.168.57850 > 166.166.104.6.domain: [udp sum ok] 10121+ AAAA? influxdb-nginx-service.kube-system.svc.kube-system.svc.cluster.local. (86) 07:20:05.087076 IP (tos 0x0, ttl 64, id 54475, offset 0, flags [none], proto UDP (17), length 164)     10.10.72.10.51841 > 10.10.72.11.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 3424, offset 0, flags [DF], proto UDP (17), length 114)     166.166.166.168.57984 > 166.166.104.6.domain: [udp sum ok] 20020+ A? influxdb-nginx-service.kube-system.svc.kube-system.svc.cluster.local. (86) 07:20:05.087671 IP (tos 0x0, ttl 64, id 13540, offset 0, flags [none], proto UDP (17), length 257)     10.10.72.11.60395 > 10.10.72.10.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 19190, offset 0, flags [DF], proto UDP (17), length 207)     166.166.104.6.domain > 166.166.166.168.57850: [udp sum ok] 10121 NXDomain*- q: AAAA? influxdb-nginx-service.kube-system.svc.kube-system.svc.cluster.local. 0/1/0 ns: cluster.local. SOA ns.dns.cluster.local. hostmaster.cluster.local. 1647633218 7200 1800 86400 5 (179) 07:20:05.087702 IP (tos 0x0, ttl 64, id 13541, offset 0, flags [none], proto UDP (17), length 257)     10.10.72.11.48571 > 10.10.72.10.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 19191, offset 0, flags [DF], proto UDP (17), length 207)     166.166.104.6.domain > 166.166.166.168.57984: [udp sum ok] 20020 NXDomain*- q: A? influxdb-nginx-service.kube-system.svc.kube-system.svc.cluster.local. 0/1/0 ns: cluster.local. SOA ns.dns.cluster.local. hostmaster.cluster.local. 1647633218 7200 1800 86400 5 (179) 07:20:05.088801 IP (tos 0x0, ttl 64, id 8480, offset 0, flags [none], proto UDP (17), length 152)     10.10.72.10.55780 > 10.10.72.11.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 3427, offset 0, flags [DF], proto UDP (17), length 102)     166.166.166.168.56015 > 166.166.104.6.domain: [udp sum ok] 19167+ AAAA? influxdb-nginx-service.kube-system.svc.svc.cluster.local. (74) 07:20:05.089048 IP (tos 0x0, ttl 64, id 13542, offset 0, flags [none], proto UDP (17), length 245)     10.10.72.11.50151 > 10.10.72.10.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 19192, offset 0, flags [DF], proto UDP (17), length 195)     166.166.104.6.domain > 166.166.166.168.56015: [udp sum ok] 19167 NXDomain*- q: AAAA? influxdb-nginx-service.kube-system.svc.svc.cluster.local. 0/1/0 ns: cluster.local. SOA ns.dns.cluster.local. hostmaster.cluster.local. 1647633218 7200 1800 86400 5 (167) 07:20:05.089212 IP (tos 0x0, ttl 64, id 8481, offset 0, flags [none], proto UDP (17), length 148)     10.10.72.10.50272 > 10.10.72.11.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 3430, offset 0, flags [DF], proto UDP (17), length 98)     166.166.166.168.54926 > 166.166.104.6.domain: [udp sum ok] 40948+ A? influxdb-nginx-service.kube-system.svc.cluster.local. (70) 07:20:05.089403 IP (tos 0x0, ttl 64, id 13543, offset 0, flags [none], proto UDP (17), length 241)     10.10.72.11.59882 > 10.10.72.10.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 19193, offset 0, flags [DF], proto UDP (17), length 191)     166.166.104.6.domain > 166.166.166.168.54926: [udp sum ok] 40948 NXDomain*- q: A? influxdb-nginx-service.kube-system.svc.cluster.local. 0/1/0 ns: cluster.local. SOA ns.dns.cluster.local. hostmaster.cluster.local. 1647633218 7200 1800 86400 5 (163) 07:20:05.089524 IP (tos 0x0, ttl 64, id 8482, offset 0, flags [none], proto UDP (17), length 134)     10.10.72.10.58964 > 10.10.72.11.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 3431, offset 0, flags [DF], proto UDP (17), length 84)     166.166.166.168.50263 > 166.166.104.6.domain: [udp sum ok] 18815+ A? influxdb-nginx-service.kube-system.svc. (56) 07:20:05.089681 IP (tos 0x0, ttl 64, id 13544, offset 0, flags [none], proto UDP (17), length 134)     10.10.72.11.51874 > 10.10.72.10.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 19194, offset 0, flags [DF], proto UDP (17), length 84)     166.166.104.6.domain > 166.166.166.168.50263: [udp sum ok] 18815 ServFail- q: A? influxdb-nginx-service.kube-system.svc. 0/0/0 (56) 07:20:05.089706 IP (tos 0x0, ttl 64, id 8483, offset 0, flags [none], proto UDP (17), length 134)     10.10.72.10.59891 > 10.10.72.11.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 3433, offset 0, flags [DF], proto UDP (17), length 84)     166.166.166.168.49202 > 166.166.104.6.domain: [udp sum ok] 58612+ AAAA? influxdb-nginx-service.kube-system.svc. (56) 07:20:05.089859 IP (tos 0x0, ttl 64, id 13545, offset 0, flags [none], proto UDP (17), length 134)     10.10.72.11.44146 > 10.10.72.10.4789: [no cksum] VXLAN, flags [I] (0x08), vni 4096 IP (tos 0x0, ttl 63, id 19195, offset 0, flags [DF], proto UDP (17), length 84)     166.166.104.6.domain > 166.166.166.168.49202: [udp sum ok] 58612 ServFail- q: AAAA? influxdb-nginx-service.kube-system.svc. 0/0/0 (56)
  从抓包结果看,出现一个可疑点:前几个报文中提示 bad udp cksum 0xffff ,请求通的最后几个报文提示的是no cksum 。
  根据这个错误信息,搜索发现是个已知 bug ,相关的详细定位可以参考[1]-[3],这里就不细说了。大概原因如下所述:内核中存在一个和VXLAN处理有关的缺陷,该缺陷会导致Checksum Offloading不能正确完成。这个缺陷仅仅在很边缘的场景下才会表现出来。
  在 VXLAN 的UDP 头被NAT 过的前提下,如果:
  VXLAN 设备禁用(这是RFC 的建议)了UDP Checksum
  VXLAN 设备启用了Tx Checksum Offloading
  就会导致生成错误的 UDP Checksum 。
  从资料[1]看, K8S 的v1.18.5 版本已经修复了这个问题,但我的问题是在v1.21.0 上发现的,所以不确定只升级K8S 是否可以解决该问题,或者升级后还需要额外配置什么?
  从资料[3]和[4]看, calico 在v3.20.0 版本做了修改:在kernels < v5.7 时也禁用了calico.vxlan 接口的Offloading 功能。
  本地临时禁用并验证: [root@node2 ~]# ethtool --offload vxlan.calico rx off tx off Actual changes: rx-checksumming: off tx-checksumming: off         tx-checksum-ip-generic: off tcp-segmentation-offload: off         tx-tcp-segmentation: off [requested on]         tx-tcp-ecn-segmentation: off [requested on]         tx-tcp6-segmentation: off [requested on]         tx-tcp-mangleid-segmentation: off [requested on] udp-fragmentation-offload: off [requested on][root@node2 ~]# time curl http://10.96.91.255 real    0m0.009s user    0m0.002s sys     0m0.007s
  请求恢复正常。 解决方案临时解决:  ethtool --offload vxlan.calico rx off tx off 永久解决:升级 calico >=v3.20.0 或升级内核到5.6.13, 5.4.41, 4.19.123, 4.14.181 ,单独升级K8S >= v1.18.5 版本待确认是否能解决参考资料https://blog.gmem.cc/nodeport-63s-delay-due-to-kernel-issue https://cloudnative.to/blog/kubernetes-1-17-vxlan-63s-delay/ https://bowser1704.github.io/posts/vxlan-bug/ https://github.com/projectcalico/calico/issues/3145 https://github.com/projectcalico/felix/pull/2811/files

工信部约谈去年存在违规问题的7家新能源车企,未来将加强监管近日我们又获悉了一则重磅信息,还记得去年工信部因为规范新能源汽车产业发展约谈了25家新能源汽车生产厂家吗?其中包含比亚迪北汽广汽长安东风等国内主流车企,这一次约谈可以说是给国内新能海南新能源汽车消费奖励措施延至年底,为了环境也是拼了都知道未来是新能源汽车的天下,大众本田丰田现代等全球知名车企都开始往电气化转型,而豪华品牌跟自主品牌也是如此,可见传统燃油车时代已经开始慢慢终结。现在为了保护环境,很多车企都开始提是时候重新认识一下这位老朋友了,本田英仕派新车解析说起B级车,我想大家首先会想到大众帕萨特大众迈腾本田雅阁丰田凯美瑞跟日产天籁,毕竟它们可以说是其中的佼佼者,深受消费者的喜爱。不过今天咱不说它们,我给大家介绍一个老朋友,它就是本田盘点三款经典巨无霸皮卡,堪称汽车界的硬汉对咱们国内而言,超跑跟硬派越野那绝对是绕不过的话题,可以说是无数人心中的梦想座驾,不过在美国却是个例外,咱们看美国大片就知道,皮卡才是出镜率最高的车型,而且皮卡在美国还有着独特的汽最良心的丰田MPV非它莫属,加量不加价,埃尔法同平台打造不知道从什么时候开始,SUV跟MPV成为了国内汽车市场的新宠,今天就给大家说说MPV,毕竟三胎时代的来临,MPV的作用那是毋庸置疑。都知道别克GL8跟本田奥德赛是国内MPV的标杆,美媒Cars。com2021年度汽车大奖出炉,日系竟然出局了2021年马上就要跟我们说再见了,而美国知名媒体Cars。com也对美国汽车榜单进行了一次调研,并设计了最佳价值车型(入门级)最佳家用车最佳豪华车最佳皮卡跟年度最佳车五大奖项,评分2021年沃德十佳内饰新鲜出炉,大众丰田再次落榜汽车现在已经成为生活必备品,从一开始的代步工具发展到现在,已经变成了移动生活空间,消费者现在对汽车内部空间越来越重视,不只要外观,车内必须也要精装修,今天就给大家看看2021年沃德本田最不推荐入手的车型都在这里,您中招了吗?最受欢迎的汽车合资品牌有哪些您知道吗?大众本田丰田现代可以说是绕不开的话题,毕竟它们的销量摆在这里,当然了,奔驰奥迪宝马也非常受欢迎,但因为受众面太小,所以在此就不提了。咱今天先来动力强劲的丰田荣放,25万起售,百公里油耗不到5升现如今,新能源汽车和插电式混合动力汽车是汽车市场的香饽饽,各大厂商都在向这一领域发展,丰田也不例外,这两年也是推出了不少车型。今天小编要说的就是丰田旗下的一款混动车型RAV4荣放双优惠完12万多买辆大空间的旅行车,一公里才几毛钱旅行车和电动车相信大家都不陌生,那两者结合在一起你听说过吗?荣威Ei5作为市面上的首款纯电动旅行车于2018年正式上市,一经上市就有不错的市场表现。目前最新的2021款车型的厂商指有钱人的玩具,新款涨价1万,这台保时捷就是绝对王者目前新能源领域可以说是非常火热,很多车企都紧随潮流,推出了很多新能源车型,近日保时捷也推出了旗下的纯电四门跑车Taycan,在纯电领域有着不错的成绩,如今这款Taycan也迎来了改
AppleWatchSeries7国庆后首发,苹果号称最耐用的手表即将到来在9月15日的苹果在iPhone13系列发布会上,同时发布了全新的智能穿戴设备AppleWatchSeries7系列。发布会后,AppleWatchSeries7并未第一时间发售,骁龙888PlusE5屏16G,新机皇售价5499元,比iPhone13更值得入手如果说现在炙手可热的手机,必然要属iPhone13系列。不过iPhone13系列中比较值得入手的iPhone13Pro和iPhone13ProMax两款机型,不光售价高而且一直处于2021年的今天,你愿意花一万二买个Walkman吗?前言老人家的DPSL2播放器其实早早就拿到了,但是因为没时间码字,所以之前只是晒了个图给大家做了个简单的分享。终于国庆节假期到来,就来给大家分享一下我对这部外观极富争议的HiFi播英特尔ARCAlchemist公版显卡高清渲染双插槽和双风扇设计英特尔ARCAlchemist公版显卡的首批高清渲染图曝光。在油管频道MooresLawisDead上传的最新一期视频中,展示了英特尔自己的公版设计是什么样子的,以及分享了推出桌面三星除了整合AMDRadeonGPU,更可能与微软合作推出新处理器除了明年确定与三星合作推出采用RadeonGPU技术的Arm架构处理器,相关消息指称三星AMD与微软也可能着手打造一款同样以Arm架构打造,并且加入RadeonGPU显示设计的处理iOS15。0正式版续航测试,又有系统关闭验证一iOS15。0续航测试大家关心iOS15。0正式版续航测试终于来了,测试数据由iAppleBytes博主提供分享,然后我整理一下,所有设备统一设置屏幕亮度统一设置为25自动亮度功荷兰亚马逊正在上架AlderLake12900K12700K和12600K处理器外界普遍预计英特尔会在10月2829日的创新活动期间正式宣布AlderLake台式处理器阵容,并于一周后正式上架销售。不过在此之前,我已经接到了几天前泄露的零售包装盒渲染图,以及一iPad2021吊打小米平板5PRO性能是一款平板电脑最重要的地方,它直接决定了平板电脑的生产能力。iPad2021搭载了苹果A13处理器,性能比高通骁龙888还要更强一些。而小米平板5仅仅搭载了高通骁龙870处理器佩戴助听器看电视清晰自然通过各个厂家助听器的无线或辅件等就可以在观看电视节目的时候,可以享受更加清晰的音质。可以选择自己喜欢的音量,一边看电视一边与家人进行交谈。这些功能还可以让您将iPhoneiPad或你的手机最长用了几年智能手机在我们生活中的作用越来越不可替代。有的小伙伴就开始对手机的使用寿命产生了疑问,我们的手机究竟用多久换才最合适呢?在我看来,换手机的时间在3年左右就差不多了。主要原因有以下几请问你们买的第一部智能手机是什么牌子的,新买的时候都是怎样呵护的?我第一次买手机是在2001年的下半年,买的手机是那个时候比较火的诺基亚8810。那时刚大四,正要找工作,所以需要四处参加各种招聘会。我记得跑得最远的地方是参加广东江门的招聘会。为了