容器网络防火墙状态异常导致丢包排查记录

0.导语

K8s容器网络涉及诸多内核子系统,IPVS,Iptable,3层路由,2层转发,TCP/IP协议栈,这些复杂的内核子系统在特定场景下可能会遇到设计者最初也想不到的问题。

本文分享了iptable防火墙状态异常导致丢包的排查记录,这个排查过程非常曲折,最后使用了在现在的作者看来非常落伍的工具:systemtap,才得以排查成功。其实依作者现有的经验,此问题现在仅需一条命令即可找到原因,这条命令就是作者之前分享过文章使用 ebpf 深入分析容器网络 dup 包问题中提到的skbtracker。时隔7个月,这个工具已经非常强大,能解决日常网络中的90%的网络问题。

此文其实已于2019年7月在腾讯内部进行发表,时隔一年,再次翻出来阅读仍然有颇多收获,因此把它分享出来给其他同行一起学习。此外,本篇文章也将作为开篇,后续陆续分享作者近期使用ebpf工具排查各种内核疑难杂症的过程及经验。

1. 问题描述

腾讯内部某业务在容器场景上遇到了一个比较诡异的网络问题,在容器内使用GIT,SVN工具从内部代码仓库拉取代码偶发性卡顿失败,而在容器所在的Node节点使用同样版本的GIT,SVN工具却没有问题。用诡异这个词,是因为这个问题的分析持续时间比较久,经历了多个同学之手,最后都没有揪出问题根源。有挑战的问题排查对于本人来说是相当有吸引力的,于是在手头没有比较紧急任务的情况下,便开始了有趣的debug。

从客户描述看,问题复现概率极大,在Pod里面拉取10次GIT仓库,必然有一次出现卡死,对于必现的问题一般都不是问题,找到复现方法就找到了解决方法。从客户及其他同事反馈,卡死的时候,GIT Server不再继续往Client端发送数据,并且没有任何重传。

1.1 网络拓扑

业务方采用的是TKE单网卡多IP容器网络方案,node自身使用主网卡eth0,绑定一个ip,另一个弹性网卡eth1绑定多个ip地址,通过路由把这些地址与容器绑定,如图1-1.

1562679975_26_w842_h506.png

图 1-1 TKE单网卡多

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值