kube-ovn icon indicating copy to clipboard operation
kube-ovn copied to clipboard

kube-ovn 下某些pod一直出现丢包

Open wolgod opened this issue 10 months ago • 11 comments

Bug Report

kube-ovn 下某些pod一直出现丢包,container_network_receive_packets_dropped_total{} 可以看到pod一直在丢包,但是我tcpdump的时候又不丢包,无法确定是什么丢包

Expected Behavior

无丢包

Actual Behavior

一个deployment下有的pod会出现丢包

Steps to Reproduce the Problem

Additional Info

  • Kubernetes version:

    Output of kubectl version:

    1.20.1
    
  • kube-ovn version:

    1.11.9
    
    
  • operation-system/kernel version:

     CentOS Linux 7 (Core)
    5.4.231-1.el7.elrepo.x86_64
    
  • Any other additional information kube-ovn是使用脚本一键部署的, 1.11.9版本,pod没有任何访问,只开启了健康检查,但是监控上看丢包数据一直上涨

ovs-ovn下的ovs-vswitchd.log日志如下 |ofproto_dpif_xlate(handler3)|WARN|Dropped 1 log messages in last 30 seconds (most recently, 30 seconds ago) due to excessive rate |ofproto_dpif_xlate(handler3)|WARN|dropping packet received on port mirror0, which is reserved exclusively for mirroring on bridge br-int while processing in_port=33,vlan_tci=0x0000,dl_src=ba:4c:1d:c5:3c:94,dl_dst=01:80:c2:00:00:0e,dl_type=0x88cc

wolgod avatar Apr 19 '24 08:04 wolgod

麻烦再补充些信息呗,比如kube-ovn怎么部署的,什么版本,pod 的源和目的都在那里,是否跨节点,节点间网卡是否存在丢包。

tcpdump 本身就影响网络性能,可能速度下来之后就没有丢包了。

bobz965 avatar Apr 19 '24 09:04 bobz965

麻烦再补充些信息呗,比如kube-ovn怎么部署的,什么版本,pod 的源和目的都在那里,是否跨节点,节点间网卡是否存在丢包。

tcpdump 本身就影响网络性能,可能速度下来之后就没有丢包了。

kube-ovn是使用脚本一键部署的, 1.11.9版本,underlay模式,pod没有任何访问,只开启了健康检查,但是监控上看丢包数据一直上涨

wolgod avatar Apr 19 '24 09:04 wolgod

用 1.11.16 试试呢? 健康检查具体是啥?监控是什么方案啊?

bobz965 avatar Apr 19 '24 09:04 bobz965

用 1.11.16 试试呢? 健康检查具体是啥?监控是什么方案啊?

就是http的健康检查,监控就是采用Promethus

wolgod avatar Apr 21 '24 13:04 wolgod

所有应用都这样嘛? 换其他的应用试试呢?比如httpd,看看能不能复现

bobz965 avatar Apr 22 '24 01:04 bobz965

所有应用都这样嘛? 换其他的应用试试呢?比如httpd,看看能不能复现

有的应用有问题,而且一个deployment的多个pod可能有几个pod有问题,也和宿主机没啥联系

wolgod avatar Apr 22 '24 12:04 wolgod

HTTP 方式的健康检查就是主机网络里的 kubelet 向 Pod 发送 HTTP 请求。

container_network_receive_packets_dropped_total{} 里应该是有网卡名称的吧?是 Pod 里的 eth0 吗?

建议在 Pod netns 里对 eth0 抓包,同时在主机网络里对应的 veth 抓包,对比一下是什么包触发了 RX DROP。

zhangzujian avatar Apr 23 '24 03:04 zhangzujian

HTTP 方式的健康检查就是主机网络里的 kubelet 向 Pod 发送 HTTP 请求。

container_network_receive_packets_dropped_total{} 里应该是有网卡名称的吧?是 Pod 里的 eth0 吗?

建议在 Pod netns 里对 eth0 抓包,同时在主机网络里对应的 veth 抓包,对比一下是什么包触发了 RX DROP。

你好,我使用tcpdump多eth0抓包后,丢包就不会出现了,但是停止后就会继续丢包,从网卡上看的确是存在丢包

eth0 Link encap:Ethernet HWaddr 00:00:00:63:0A:1E inet addr:10.25.153.124 Bcast:10.25.159.255 Mask:255.255.240.0 inet6 addr: fe80::200:ff:fe63:a1e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:75373 errors:0 dropped:1750 overruns:0 frame:0 TX packets:13664 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:8424120 (8.0 MiB) TX bytes:1790179 (1.7 MiB)

wolgod avatar Apr 23 '24 04:04 wolgod

使用tcpdump多eth0抓包后,丢包就不会出现了,但是停止后就会继续丢包

如果不对 pod eth0 抓包,但对主机网络里对应的 veth peer 抓包呢?会出现丢包吗?

从你描述的现象来看,这不属于 CNI 的问题,建议更换稳定版本的内核。

zhangzujian avatar Apr 23 '24 07:04 zhangzujian

主机上veth peer抓包没发现啥异常,pod内 通过脚本分析ifconfig eth0 查看,发现每30s丢包数会加1 ,咱们cni组件会有相关的探测pod逻辑吗

wolgod avatar Apr 26 '24 06:04 wolgod

我也遇到类似问题

PungYoung avatar May 30 '24 01:05 PungYoung

Issues go stale after 60d of inactivity. Please comment or re-open the issue if you are still interested in getting this issue fixed.

github-actions[bot] avatar Jul 30 '24 00:07 github-actions[bot]