由来:

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.aarch64

Build:
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博客

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐