环境:
3 mst 2 worker
node 双网卡
node eth0:默认路由在eth0 ,k8s管理网络,node访问svc ,pod经过node访问svc,以及pod回包给node都会经过eth0
pod eth1:pod 访问pod需要经过 eth1的网关
目前基于kube-ovn 无安全组模式提供vpc网络,vpc建了两个子网,一个给node使用,一个给pod使用,两个子网都有网关:即使用了vpc双网关。
########## 表现描述
k8s集群中始终存在大概1/4的pod 在node无法ping通,其余3/4始终正常。
而且:
1、 node ping不通的pod和node无绑定关系,即: ping不通的pod存在于多个node节点,node节点上同时存在可以ping通和无法ping通的pod
2、和ip无关,node ping不通的pod 并不是某些特殊ip,也不是某一个ip
######### 测试以及恢复表现
- 本来node ping 不通pod, traceroute 看 是路由环路,跳数用尽
- 然后在pod ping 所有node 可以通,
- 然后重复1, 又可以通了
########1. 网络情况
L1
image.pngL2
image.png image.png#########2. 测试过程
起初无法ping通
image.png可以看到包过网关后,转发到一个无关节点
image.png可以确定应该不是arp错乱的问题,测试前后该arp都不在node维护
image.pngarp也没维护在node里面
image.png应该是跨了网关,所以没有维护对应的arp记录。
在pod内部ping完node后,又可以通了
image.png解决方式
vpc 内部只使用一个vpc网关,可以基于一个大的子网进一步划分子网段,每个网卡对应于一个ip段(子网)。
双网关的设计,跨网段就要走网关转发一次,在vpc内部是可以不用走网关转发这一跳的,所以双网关比起单网关转发效率较低。
其次 在sdn框架下,会出现网关转发错误的问题。
调整为单网关可以不存在跨网关转发,当然也可以避免网关转发错误。
网友评论