我有一个正在运行的小型 kubernetes 集群,为了实现主网络范围(192.168.1.0/24)上的设备与 kubernetes pod(192.168.251.185/32)上的设备之间的通信,我在路由器上配置了静态路由,以便通过相关的 kubernetes 工作主机(192.168.1.151)路由数据包,通过 192.168.1.151 使用路由 192.168.251.0/24。
总之
192.168.1.50 (pc) -> router (192.168.1.1) -> k8 worker (192.168.1.151) -> pod (192.168.251.185)
最初这看起来不错,因为从“我的电脑”(192.168.1.50)我能够 ping 通 k8s pod(192.168.251.185),并且跟踪路由输出遵循预期的路径:
ping 输出
Pinging 192.168.251.185 with 32 bytes of data:
Reply from 192.168.251.185: bytes=32 time=4ms TTL=63
Reply from 192.168.251.185: bytes=32 time=3ms TTL=63
tracert 输出
Tracing route to 192.168.251.185 over a maximum of 30 hops
1 3 ms 3 ms 3 ms router [192.168.1.1]
2 3 ms 3 ms 3 ms 192.168.1.151
3 5 ms 3 ms 3 ms 192.168.251.185
无法从 k8s pod ping 通 PC
问题是我无法从 k8s pod ping 回我的电脑,当运行 wireshark 时,我可以看到从 K8s pod 到达我的电脑的 ping 消息:
Source: 192.168.251.185 Dest: 192.168.1.50 ICMP echo ping request
但回复中却显示“未找到回复!”,这意味着没有回程路线
Source 192.168.1.50 Dest 192.168.251.185 Echo ping request (No response found!)
这意味着没有返回吊舱的路线,但我可以从我的电脑直接 ping 到吊舱,证明确实存在有效的路线。
我还可以从网络上的其他设备 ping 我的电脑,因此不要相信有任何防火墙规则阻止 ping 响应返回。
我也尝试从 pod ping 我网络上的其他设备,但只有路由器返回 ping 请求。
忽略 k8s pod,192.168.1.0/24 范围内的所有设备都可以毫无问题地互相看到。
非常感谢您的任何建议,因为我没有发现网络配置存在任何问题。
答案1
我解决了这个问题。Windows 防火墙似乎阻止了来自其他网络的 ICMP 请求,例如在这种情况下我的请求被阻止了,禁用 Windows 防火墙后请求就可以正常通过了