【k8s】- Kylin arm64上k3s跨节点pod无法通信问题
K3s默认使用Flannel的VxLan模式作为CNI提供容器网络,但跨节点无法通信
由来:
K3s默认使用Flannel的VxLan模式作为CNI提供容器网络,但跨节点无法通信,现场无DNS,客户反馈机器之间无网络隔离限制
信息:
[root@master-152 ~]# nkvers
############## Kylin Linux Version #################
Release:
Kylin Linux Advanced Server release V10 (Lance)Kernel:
4.19.90-52.22.v2207.ky10.aarch64Build:
Kylin Linux Advanced Server
release V10 (SP3) /(Lance)-aarch64-Build23/20230324
#################################################
[root@master-152 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master-152 Ready control-plane,etcd,master 18d v1.22.7+k3s1
node-150 Ready <none> 14d v1.22.7+k3s1
node-151 Ready <none> 14d v1.22.7+k3s1
node-153 Ready <none> 18d v1.22.7+k3s1
问题描述:
1、应用pod与集群coredns不同节点时,应用pod解析不出应用数据库的svc
2、应用pod与集群coredns同节点时,可以解析数据库svc,但是连接应用数据库timeout导致应用pod启动失败
问题排查:
整个排查的方向有点偏了,耗费了大量时间,简单记录下
1、Selinux都关闭的,无解
2、节点间的防火墙策略都通的(防火墙直接关闭了) ,无解
3、规划的pod和svc的网段也不冲突,跟宿主机网段也没有冲突,重新规划也无解
4、节点上的IPtables的规则也有生成,没看出问题,无解
5、node节点的8472端口(VxLan会用到8472)也是通的,无解
6、考虑到虚机是否是克隆的,查看所有节点 flannel.1 网卡 mac 是否一致,mac地址没问题,无解。mac的问题可参考这篇文章https://www.cnblogs.com/hukey/p/15412081.html
7、coredns的pod正常,日志也没看出异常(resolve.conf配置的nameserver 8.8.8.8,现场无DNS),从coredns分析无解
8、更改master节点服务启动参数,指定使用物理网卡启动,无解
9、重装Flannel插件,重装集群,无解
10、从麒麟SP3更换为麒麟SP2操作系统,开始怀疑是否是 kylin arm64 SP3的兼容性的问题,切换后问题依然无解
发现问题:
节点间的flannel.1网卡的地址和CNI的地址ping不通,也接收不到包,不太正常,对比家里的环境都是可以ping通的
问题解决:
节点之间Flannel.1和CNI网卡ping不通,可能是客户安全策略有某些限制,但是客户反馈没有限制。。先改一把吧。更改Flannel由VxLan模式更改为host-gw,直接走宿主机的网络,将对方的宿主机当做路由器进行转发,问题解决。
问题的最终原因没有搞清楚,及时更换了Host-GW,节点之间的通信也要通过eth0,为什么改了后就好了,学识才浅,有清楚的大神给答疑一下。至于host-gw与Vxlan有什么区别,可以参考这个文章【kubernetes】集群网络(二):Flannel的VxLan、Host-GW模式_flannel网络-CSDN博客
更多推荐
所有评论(0)