K8S问题排查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S问题排查相关的知识,希望对你有一定的参考价值。
参考技术A K8S 集群中修改 calico 的网络为 vxlan 模式后,发现部分 service 在节点上无法访问(实际上是延迟访问,延迟时间稳定在 1min3s 左右)。先确认问题范围,在环境上找多个 service 依次测试发现,如果调用 service 的节点和实际 pod 不在同一个节点上,则出现延迟,否则请求正常。也就是说跨节点的访问才有问题。而直接用 service 对应的 podIP 访问,也不存在问题,猜测问题可能出在 service 转 pod 的过程。
再确认基本环境, OS 、 K8S 、 calico 等基础环境没有发生任何变化,仅仅是把 calico 的网络模式从 BGP 改为了 vxlan ,但是这个改动改变了集群内 service 及 pod 的请求路径,也即所有的容器请求需要走节点上新增的 calico.vxlan 接口封装一下。网络模式修改前没有问题,修改后必现,之后切回 BGP 模式问题就消失了,说明问题可能跟新增的 calico.vxlan 接口有关系。
先看下环境情况,并触发 service 请求:
在 node1 的主机网卡上抓包看看封装后的请求是否已到达:
从抓包结果看,出现一个可疑点:前几个报文中提示 bad udp cksum 0xffff ,请求通的最后几个报文提示的是 no cksum 。
根据这个错误信息,搜索发现是个已知 bug ,相关的详细定位可以参考[1]-[3],这里就不细说了。大概原因如下所述:
从资料[1]看, K8S 的 v1.18.5 版本已经修复了这个问题,但我的问题是在 v1.21.0 上发现的,所以不确定只升级 K8S 是否可以解决该问题,或者升级后还需要额外配置什么?
从资料[3]和[4]看, calico 在 v3.20.0 版本做了修改:在 kernels < v5.7 时也禁用了 calico.vxlan 接口的 Offloading 功能。
本地临时禁用并验证:
请求恢复正常。
以上是关于K8S问题排查的主要内容,如果未能解决你的问题,请参考以下文章