记一次 Kubernetes 网络故障深度追踪
某天晚上,客户碰到了 Kubernetes 集群一直扩容失败,所有的节点都无法正常加入集群。在经过多番折腾无解后,反馈到我们这里进行技术支持。这个问题的整个排查过程比较有意思,所以对其中的排查思路和用到的方法进行整理分享。
问题现象
运维同学在对客户的 Kubernetes 集群进行节点扩容时,发现新增的节点一直添加失败。该同学进行了初步的排查如下:
在新增节点上,访问 Kubernetes mast记一er service vip 网络不通 在新增节点上,直接访问 Kubernetes master hostIP + 6443 网络正常 在新增节点上,访问其他节点的容器 IP 可以正常 ping 通 在新增节点上,访问 coredns service vip 网络正常
该客户使用的 Kubernetes 版本是 1.13.10,宿主机的内核版本是 4.18(CentOS 8.2)。
问题排查过程
收到该一线同事的反馈,我们已经初步怀疑是 IPVS次 的问题。根据以往网络问题排查的经验,先对现场做了些常规排查:
确认内核模块 ip_tables 是否加载(正常) 确认 iptable forward 是否默认 accpet (正常) 确认宿主机网络是否正常(正常) 确认容器网络是否正常(正常) ……
排除了常规的问题之后,基本可以缩小范围,再继续基于 IPVS 相关层面进行排查。
通过 ipvsadm 命令排查
10.96.0.1 是客户集群 Kubernetes master serKuvice vip。
可以发现有异常连接,处于 SYN_RECV 的状态,并且可以观察到,启动时 kubelet + kube-proxy 是有正常建连的,说明是在启动之后,Kubernetes service 网络出现异常。
tcpdump 抓包分析
两端进行抓包,并通过 telnet 10.96.0.1 443 命令进行确认。
结论:发现 SYN 包在本机没有发送出去。
初步总结
通过上面的排查,可以再次缩小范围,问题基本就在 kubebe-proxy 身上。我们采用了 IPVS 模式,也会依赖了 iptables 配置实现一些网络的转发、SNAT、drop 等等。
根据上面的排查过程,我们又缩小了范围,开始分析怀疑对象 kube-proxy。
查看 kube-proxy 日志
发现异常日志,iptables-restore 命令执行异常。通过 Google、社区查看,确认问题。
继续深入
通过代码查看(1.13.10 版本 pkg/proxy/ipvs/prrnoxier.go:1427),可以发现该版本确实没有判断 KUBE-MARK-DROP 是否存在并创建的逻辑。当出现该链不存在时,会出现逻辑缺陷,导致 iptable 命令执行失败。
Kubernetes master service vip 不通,但是实际容器相关的 IP 是通的原因,与下面这条 iptable 规则有关:
iptable -t nat -A KUBE-SEetRVICES ! -s 9.0.0.0/8 -m comment --comment "Kubernetes service cluster ip + port for masquerade purpose" -m set&nesbsp;--match-set KUBE-CLUSTER-IP dst,dst -j KUBE-MARK-MASQ 根因探究
前面我们已经知道了 kube-proxy 1.13.10 版本存在缺陷,在没有创建 KUBE-MARK-DROP 链的情况下,执行 iptables-restore 命令配置规则。但是为何 Kubernetes 1.13.10 版本跑在 网 CentOS 8.2 4.18 内核的操作系统上会报错,跑在 CentOS 7.6 3.10 内核的操作系统上却正常呢?
查看下 kube-proxy 的源码,可以发现 kube-proxy 其实也就是执行 iptables 命令进行规则配置。那既然 kube-proxy 报错 iptables-restore 命令失败,我们就找一台 4.18 内核的机器,进入 kube-proxy 容器看下情况。
到容器内执行下 iptables-sa络故ve 命令,可以发现 kube-proxy 容器内确实没有创建 KUBE-MARK-DROP 链(符合代码预期)。继续在宿主机上执行下 iptables-save 命令,却发现是有 KUBE-MARK-DROP 链。
这里有两个疑问:
为何 4.18 内核宿主机的 iptables 有 KUBE-MARK-DROP 链? 为何 4.18 内核宿主机的 iptables 规则和 kube-proxy 容器内的规则不一致?
第一个疑惑,凭障深感觉怀疑除了 kube-proxy,还会有别的程序在操作 iptables,继续撸下 Kubernetes 代码。
结论:发现确实除了 kube-proxy,还有 kubelet 也会修改 iptables 规则。具体代码可以查看 pkg/kubelet/kubelet_network_linux.go
第二个疑惑,继续凭感觉吧。Google 一发捞一下为何 kube-proxy 容器挂载了宿主机 /run/xtab度追les.lock 文件的情况下,宿主机和容器 iptables 查看的规则不一致。
结论:CentOS 8 在网络方面摒弃 iptables 采用 nftables 框架作为默认的网络包过滤工具。
至此,所有的谜团都解开了。
团队完成过大量的客户项目交付,还是有些问题可以再解答下:
问题一:为何这么多客户环境第一次碰到该情况?因为需要 Kubernetes 1.13.10 + centos 8.2 的操作系统,这个组合罕见,且记一问题是必现。升级 Kubernetes 1.16.0+ 就不会有该问题。 问题二:为何使用 Kubernetes 1.13.10 + 5.5 内核却没有该问题?
因为那是与 CentOS 8 操作系统有关,我们手动升级 5.5 版本后,默认还是使用的 iptables 框架。
可以通过 iptables -v 命令来确认,是否使用了 nftables。
nftables 是何方神圣?比 iptables 好么?这是另一个值得进一步学习的点次 ,这里就不再深入了。
解决方法
针对以上的排查问题,我们总结下解决方法:
调整内核版本到 3.10(CentOS 7.6+),或者手动升级内核版本到 5.0 +; 升级 Kubernetes 版本,当前确认 1.16.10+ 版本没有该问题。 【责任编辑:未丽燕 TEL:(010)68476606】
点赞 0
(责任编辑:跨境电商)
-
云梦级6月23日云梦级消息,当地时间 22 日,美国造车新势力 Lucid 宣布,在新任 CEO 西尔维奥 · 纳波利推进重组之际,将裁减 18% 的员工,约 1500 人受到影响。四个月前,Luci...[详细]
-
亚马逊云计算业务Q3营收230亿美元 营收营业利润双双创下新高
10月27日消息,据外媒报道,亚马逊公司当地时间周三发布的财报显示,他们在今年第三季度的销售额达到了1430.83亿美元,高于去年同期的1271.01亿美元,98.79亿美元的净利润,则是远高于去年同...[详细]
-
TWS苹果称王,华为不见踪影,小米第二OPPO、vivo成看客
当年苹果在iPhone 7系列之上正式取消了标准的耳机孔,很多人开始吐槽甚至是安卓阵营很多品牌还以自己家的机型有标准的耳机孔为卖点。但是谁也没有想到苹果在下一盘很大的棋,随后没多久苹果就推出了真无线蓝...[详细]
-
云梦级2月12日云梦级消息,据抖音黑板报云梦级消息,抖音近日宣布升级“长辈模式”,新增反诈风险预警功能。当60岁及以上用户开启该功能,并涉及诈骗高风险时,系统将向其绑定的紧急联系人发送通知,为子女劝阻...[详细]
-
云梦级4月17日云梦级消息,《读佳》获悉,美团推出一站式服务平台“虾345”,定位全球虾信息集散地,汇聚全球AI Agent安装平台、模型接入、技能生态与社区资源。这是美团在AI智能体赛道的一次明确布...[详细]
-
Mistral AI 推出“Studio”平台,抢滩企业级 AI 应用开发
人工智能供应商的竞争正进入一个新阶段: “工作室”(Studio)环境 。在这个趋势下,用户可以在几分钟内部署 AI 代理和应用程序。欧洲资金雄厚的 AI 初创公司 Mistral 近日宣布推出 Mi...[详细]
-
Stadia是谷歌于2019年末推出的云游戏服务,这项技术允许用户通过互联网浏览器或使用YouTube来玩游戏,并推出了手柄和相关套件。但该项目的市场表现并不乐观,近日,来自Business Insi...[详细]
-
云梦级3月31日云梦级消息,和铂医药(股票代码:02142.HK),一家专注于免疫性疾病、肿瘤及其他领域创新药研发的全球生物医药公司,今日公布其2025年度业绩。 总收入约11.1亿元人民币(1.58...[详细]
-
可以像 Docker 一样方便的使用 Containerd 吗?
前面我们介绍了可以使用 ctr 操作管理 containerd 镜像容器,但是大家都习惯了使用 docker cli,ctr 使用起来可能还是不太顺手,为了能够让大家更好的转到 containerd...[详细]
-
国内首个AI大模型众测结果出炉!发现281个安全漏洞,未来治理刻不容缓
在第22届中国网络安全年会(暨国家网络安全宣传周网络安全协同防御分论坛)上,国内首次针对AI大模型的众测结果揭晓。此次活动由中央网信办网络安全协调局指导,国家计算机网络应急技术处理协调中心主办,吸引了...[详细]

英伟达拟向AI初创公司Poolside投资10亿美元,估值飙升至120亿
什么是PaaS(平台即服务)?构建软件应用程序的更简单方法
什么是智能人机交互?
标签: 阿里巴巴 蔡崇信 千问 Qwen
云安全日报210308:Debian通用即插即用设备发现拒绝服务漏洞,需要尽快升级
