我对 Kubernetes 的 UDP-Multicast 有疑问:
我必须让 Kubernetes-Nodes 每个都运行一个 pod:
Kubernetes-Node-1:
- eth0:192.168.0.2/24
- docker0:10.1.1.1/24
Kubernetes-Node-1 上的 Pod1:
- eth0:10.1.1.2/24
Kubernetes-Node-2:
- eth0: 192.168.0.3/24
- docker0: 10.1.3.1/24
Kubernetes-Node-2 上的 Pod2:
- eth0:10.1.3.2/24
所以我们有以下拓扑:
Pod1---Kubernetes-Node-1---Kubernetes-Node-2---Pod2
我希望 Pod1 和 Pod2 可以相互发送多播包(在 228.8.8.8:45588 上),用于集群发现。
所以我在 Kubernetes-Node-1 和 Kubernetes-Node-2 上使用 smcroute 配置了 2 条路由:
从 eth0 组 228.8.8.8 到 docker0 的 mroute 从 docker0 组 228.8.8.8 到 eth0 的 mroute
如果我直接在 kubernetes-node-1 (mcsender -t32 -ieth0 228.8.8.8:45588) 的 eth0 上创建多播包,包会到达 kubernetes-node-2 上的 eth0,然后通过 mroute 到达 Kubernetes-node 上的 docker0 -2 然后到 Pod2 上的 eth0。
在 Pod1 上创建包时会出现问题:Pod1 创建包,这可以通过 docker0 上的 kubernetes-node-1 上的 tcpdump 看到,并且因为 mroute 也在 eth0 上。不幸的是,在 kubernetes-node2 上看不到这些包 - 不在 eth0 上,也不在 docker0 上......
有没有人知道问题可能是什么?
在 Kubernetes-Node-1 上:
ip mroute
(10.1.1.2, 228.8.8.8) Iif: docker0 Oifs: eth0
netstat -nrv
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.1.1.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
4.5.5.1 10.1.1.1 255.255.255.255 UGH 0 0 0 docker0
最后可能会有更多运行 Pod 的 Kubernetes 节点,它们应该通过多播进行通信。
谢谢你的帮助 :)