我需要一些关于更深层次网络方面的帮助。希望有人能帮助我,或者至少给我指明正确的方向。
目前,我有一个使用 microk8s 的双节点裸机 (VPS) kubernetes 集群设置。网站部署测试效果很好,基于入口进行路由 :-)
但现在我想部署其他可通过端口访问的服务。我不想使用 NodePort,因为使用的端口始终超过 30000。相反,我想使用本机端口,例如 21(用于 FTP 服务器或类似的东西)。
深入阅读后,我发现了 metalLB 扩展(用于裸机 K8S 的负载均衡器)。但不幸的是,metalLb 需要一个 IP范围所以我不能使用不同的公共 IP。我的两台机器在 eth0 上都有非常不同的公共 IP,可以从互联网访问。
作为解决方案,我在两台机器 (eth1) 上安装了第二个 NIC,并使用本地网络 (192.168.1.10-192.168.1.11)。现在我有一系列可以提供给 metalLB 配置的 IP。在两台主机上,我都可以 ping 另一台机器的本地地址,因此 LAN 可以正常工作。
但是部署(例如 FTP)在 LAN 地址上打开了端口,可能是 192.168.1.11:21,当我将这些 LAN-IP 提供给 metalLB 时,这似乎是正确的。
现在我想通过公网 IP 访问此服务。在每个主机上,公网 IP(我们称它们为5.5.5.5和6.6.6.6以表明他们不是本地人)是默认网关,因此 LAN IP 没有默认网关(192.168.1.x)
我想我需要一些 DNAT / SNAT 来路由流量,到达主机的公共 IP 以及服务正在监听的第二个 NIC(eth1)。
最后我玩了一下IP表并试图控制流量接口之间,但没有运气。
我在两台主机上都使用了最新的 ubuntu,两台主机的防火墙上都打开了端口 21...但最后我想使用具有不同端口的多个服务。TCP 和 UDP 也是如此。
这个解决方案可行吗?感谢您的任何想法!