我正在尝试在Kubernetes集群中构建一个网络应用程序,该集群处理两个服务器之间的数据包,并为跨应用程序的流量提供安全服务。以下几点总结了此应用程序的工作原理:
Server1和Server2通过以下方式连接到网络网关应用程序 IPsec隧道。
Server1发送的数据包封装在IPsec隧道中,并且 是发往Server2的地址,即 内部数据包是Server2的IP地址。
IPsec服务器在群集中的Pod中运行。这被定义为 Kubernetes服务IPSEC。
我创建了另一个名为TELEMETRY的Kubernetes服务,该服务 适用于网络数据包。该服务收集一些遥测 数据包中的数据,并可选地对 数据包。
在此IPSEC Pod上接收到的具有目的地的解密数据包 IP地址与Server2 IP地址相同,需要转发到 TELEMETRY服务舱。
TELEMETRY服务窗格处理数据包,并且应该 将其转发回IPSEC pod,以便将数据包转发到 IPSec隧道上的实际目标Server2。
一旦这可行,我还计划在之后添加一些服务 TELEMETRY,以便TELEMETRY服务窗格将转发数据包 这些服务。链中的最后一个服务会将其转发回 IPSEC窗格。
在将IP数据包从一个吊舱转发到另一个吊舱时,我面临着挑战。我想将不发往群集中任何服务或Pod的数据包从一个Pod转发到另一Pod。我研究了Flannel,但如果目标Pod在同一节点上运行,它不会转发覆盖层上的数据包。从性能的角度看,这不是一个好的解决方案,因为用户和内核空间之间存在多个数据包副本。
如果有人可以提出一个很好的解决方案,将IP数据包从我的应用程序中的一个Pod转发到另一个Pod,那将确实有很大帮助。