鲲鹏社区首页
中文
注册
openEuler 22.03上部署K8s过程中遇到虚拟化网络问题的解决办法

openEuler 22.03上部署K8s过程中遇到虚拟化网络问题的解决办法

安装部署

发表于 2025/09/11

0

问题现象描述

在openEuler 22.03上部署Kubernetes(K8s)时,必须关闭防火墙才能实现pod之间的正常通信。若开启防火墙,会导致pod间的通信异常,但pod与service或宿主机之间的通信不受影响。在CentOS 7.6上部署K8s时,未遇到此类问题。


关键过程、根本原因分析

表层原因:

防火墙问题:关闭防火墙后,pod间通信正常。

排查思路:

排查结果:

启动iptables系统服务后,pod间可以正常通信;删除iptables中关于pod的出入规则后,pod间无法通信。

iptables作为防火墙的后端,按理说两者在功能上并无太大差异,只是防火墙是一个前端服务,可以修改后端服务的规则。

根因分析:

根据上述分析结果猜测,iptables的设置并没有使能防火墙。查阅资料得知,从内核版本3.15.0开始,防火墙后端iptables逐渐被nftables替代,发展到5.10.0,已经默认使用nftables作为防火墙的后端。结合CentOS 7.6内核版本为3.10.0与openEuler 22.03内核版本为5.10.0的情况,符合nftables使能前后的内核版本号。


查看openEuler上防火墙后端服务,确认为nftables;CentOS 7.6上则是iptables。


替换FirewallBackend = iptables:


K8s cni插件设置了iptables出入规则,但没有对nftables进行设置cni插件为flannel查看flannel开源社区。

在flannel仓库,关于nftables的提交总共有7个结果。其中最早提及nftables的提交在2024/2/7。flannel无法在openEuler上开箱即用的原因是,flannel支持nftables的特性集成太晚,在较高版本的内核上应该使用较新版本的flannel插件。

结论、解决方案及效果

  • 通过防火墙上层接口修改nftables安全策略(通过firewall-cmd为cni0接口添加出入规则)。

  • 直接修改nftables的安全策略。

  • 修改防火墙后端为iptables。