Kubernetes集群中处理和转发网络数据包的网络网关应用程序

Kubernetes集群中处理和转发网络数据包的网络网关应用程序,kubernetes,kubernetes-ingress,kubernetes-pod,kubernetes-networking,Kubernetes,Kubernetes Ingress,Kubernetes Pod,Kubernetes Networking,我正在尝试在Kubernetes集群中构建一个网络应用程序,该集群处理两台服务器之间的数据包,并为通过应用程序的流量提供安全服务。以下几点总结了此应用程序的工作原理: 服务器1和服务器2通过网络连接到网络网关应用程序 IPsec隧道 Server1发送的数据包被封装在IPsec隧道中,并且 目的地为Server2,即中的目标IP地址 内部数据包是Server2 IP地址 IPsec服务器在群集中的Pod中运行。这被定义为 Kubernetes服务 我创建了另一个Kubernetes服务,称为遥测

我正在尝试在Kubernetes集群中构建一个网络应用程序,该集群处理两台服务器之间的数据包,并为通过应用程序的流量提供安全服务。以下几点总结了此应用程序的工作原理:

  • 服务器1和服务器2通过网络连接到网络网关应用程序 IPsec隧道

  • Server1发送的数据包被封装在IPsec隧道中,并且 目的地为Server2,即中的目标IP地址 内部数据包是Server2 IP地址

  • IPsec服务器在群集中的Pod中运行。这被定义为 Kubernetes服务

  • 我创建了另一个Kubernetes服务,称为遥测,它 在网络数据包上工作。这项服务收集一些遥测数据 数据包中的数据,并可选择在 包

  • 在此IPSEC pod上接收的解密数据包具有目标 IP地址与Server2 IP地址相同,需要转发到 遥测服务吊舱

  • 遥测服务吊舱处理数据包,并应 将其转发回IPSEC pod,以便将数据包转发到 IPsec隧道上的实际目标服务器2

  • 一旦这将工作,我还计划添加几个服务后 遥测,以便遥测服务吊舱将转发数据包 这些服务。链中的最后一个服务将把它转发回 IPSEC吊舱

  • 我在将IP数据包从一个pod转发到另一个pod时面临挑战。我想将没有发送到集群中任何服务或pod的数据包从一个pod转发到另一个pod。我探索了Flannel,但如果目标pod在同一节点上运行,它不会在覆盖上转发数据包。从性能角度看,这似乎不是一个好的解决方案,因为用户和内核空间之间存在多个数据包副本


    如果有人能在我的应用程序中为将IP数据包从一个pod转发到另一个pod提供一个很好的解决方案,那将是一个很大的帮助。

    我建议使用这样的服务网格,而不是从头开始构建。Istio和许多其他服务网格都有数据平面代理,例如,它拦截来自一个pod并进入另一个pod的所有流量。服务网格提供了安全功能,如MTL、TLS证书、旋转和遥测以及更多现成的功能


    如果开放源代码服务网格提供的控制平面不支持您的特定用例,您可以编写自定义控制平面,同时仍使用En特使作为数据平面代理。

    是否有任何理由不使用服务网格?