由 SuKai November 29, 2024
- 现象
Kubernetes集群新添加了一批物理机,成功添加集群后发现新建的虚拟机在新节点上无法访问Internet和集群主机节点,能够Ping通相同子网的虚拟机,能够Ping通Underlay逻辑网关。
- 排查
a. 新建一个Pod,现象一样
b. 将Underlay子网IP直接配置在主机节点上,网络一切正常
c. 排除了虚拟机网络环境问题和主机节点外网络问题,问题锁定在Kube-OVN网络内部。
比对虚拟机IP和MAC地址都正确
// 路由器列表
sukai@r1-m34:~$ kubectl ko nbctl lr-list
77b2eff6-ce75-4ab4-8476-df34d347a531 (ovn-cluster)
// 交换机列表
sukai@r1-m34:~$ kubectl ko nbctl ls-list
4585d35c-3a3d-4dc1-bdb2-9544bf15bbd7 (join)
63abfd74-3513-4edb-83a3-bde609fe3585 (ovn-default)
88910c8a-08b3-49f0-98a0-b21eb21620f2 (vmnet)
// 查看我的虚拟机交换机端口
sukai@r1-m34:~$ kubectl ko nbctl lsp-list vmnet
f731988d-7cff-44f6-9835-eb8ccdb32216 (localnet.vmnet)
4ff718cb-c3bf-40f4-9fce-a3c141f4639f (sukai-db01.nanjing)
0a02f7b7-caa3-421c-b700-0ea41fd12990 (vmnet-ovn-cluster)
sukai@r1-m34:~$
// 查看我的虚拟机交换机端口信息
sukai@r1-m34:~$ kubectl ko nbctl show vmnet
switch 88910c8a-08b3-49f0-98a0-b21eb21620f2 (vmnet)
port vmnet-ovn-cluster
type: router
router-port: ovn-cluster-vmnet
port sukai-db01.nanjing
addresses: ["d2:b9:8d:e6:61:4b 192.168.10.133"]
port localnet.vmnet
type: localnet
addresses: ["unknown"]
sukai@r1-m34:~$
查看路由配置,发现之前错误配置的Subnet的相关条目仍然在,虽然Subnet已经更新,但路由只是添加了新的路由条目,没有清理掉之前的错误路由条目。
sukai@r1-m34:~$ kubectl ko nbctl lr-policy-list ovn-cluster
Routing Policies
31000 ip4.dst == $vmnet.u2o_exclude_ip.ip4 && ip4.src == 192.168.0.0/16 reroute 192.168.0.1
31000 ip4.dst == $vmnet.u2o_exclude_ip.ip4 && ip4.src == 192.168.10.0/24 reroute 192.168.10.1
31000 ip4.dst == 10.233.64.0/18 allow
31000 ip4.dst == 100.64.0.0/16 allow
30000 ip4.dst == 16.19.18.120 reroute 100.64.0.20
29400 ip4.dst == 192.168.0.0/16 allow
29400 ip4.dst == 192.168.10.0/24 allow
29000 ip4.src == $ovn.default.r1.m34_ip4 reroute 100.64.0.6
29000 ip4.src == $ovn.default.r4.w65_ip4 reroute 100.64.0.33
29000 ip4.src == 192.168.0.0/16 reroute 192.168.0.1
29000 ip4.src == 192.168.10.0/24 reroute 192.168.10.1
- 解决
删除多余路由条目
sukai@r1-m34:~/kubeovn$ kubectl ko nbctl lr-policy-del ovn-cluster 31000 "ip4.dst == \$vmnet.u2o_exclude_ip.ip4 && ip4.src == 192.168.10.0/24"
sukai@r1-m34:~/kubeovn$ kubectl ko nbctl lr-policy-del ovn-cluster 29000 "ip4.src == 192.168.10.0/24"
sukai@r1-m34:~/kubeovn$ kubectl ko nbctl lr-policy-del ovn-cluster 29400 "ip4.dst == 192.168.10.0/24"
查看路由
sukai@r1-m34:~/kubeovn$ kubectl ko nbctl lr-policy-list ovn-cluster
Routing Policies
31000 ip4.dst == $vmnet.u2o_exclude_ip.ip4 && ip4.src == 192.168.0.0/16 reroute 192.168.0.1
31000 ip4.dst == 10.233.64.0/18 allow
31000 ip4.dst == 100.64.0.0/16 allow
30000 ip4.dst == 16.19.18.120 reroute 100.64.0.20
30000 ip4.dst == 16.19.18.95 reroute 100.64.0.19
29400 ip4.dst == 192.168.0.0/16 allow
29000 ip4.src == $ovn.default.r1.m34_ip4 reroute 100.64.0.6
29000 ip4.src == $ovn.default.r4.w65_ip4 reroute 100.64.0.33
29000 ip4.src == 192.168.0.0/16 reroute 192.168.0.1
sukai@r1-m34:~/kubeovn$
测试网络工作正常,虚拟机能够访问主机节点和外网。