【发布时间】:2020-08-17 15:42:15
【问题描述】:
我正在尝试在 Kubernetes 集群中构建一个网络应用程序,它处理两台服务器之间的数据包,并为通过应用程序的流量提供安全服务。以下几点总结了此应用程序的工作原理:
Server1 和 Server2 通过以下方式连接到网络网关应用程序 IPsec 隧道。
Server1 发送的数据包被封装在 IPsec 隧道中, 发往Server2,即服务器中的目的IP地址 内包是Server2的IP地址。
IPsec 服务器在集群中的 Pod 中运行。这已被定义为 一个 Kubernetes 服务 IPSEC。
我创建了另一个 Kubernetes 服务,称为 TELEMETRY,它 在网络数据包上工作。该服务收集一些遥测数据 数据包中的数据,并可选地在数据包上应用一些策略 数据包。
在此 IPSEC pod 上收到的解密数据包具有目的地 IP地址与Server2 IP地址相同,需要转发到 TELEMETRY 服务吊舱。
TELEMETRY 服务 pod 处理数据包并且应该 将其转发回 IPSEC pod,以便可以将数据包转发到 IPsec 隧道上的实际目标 Server2。
一旦这可行,我还计划在之后添加几个服务 TELEMETRY,以便 TELEMETRY 服务 pod 转发数据包 到那些服务。链中的最后一个服务会将其转发回 IPSEC 吊舱。
我在将 IP 数据包从一个 pod 转发到另一个方面面临挑战。我想将不发往集群中任何服务或 pod 的数据包从一个 pod 转发到另一个 pod。我探索了 Flannel,但如果目标 pod 在同一节点上运行,它不会转发覆盖上的数据包。由于用户和内核空间之间存在多个数据包副本,从性能角度来看,这似乎不是一个好的解决方案。
如果有人能提出一个很好的解决方案,在我的应用程序中将 IP 数据包从一个 pod 转发到另一个 pod,那将是非常有帮助的。
【问题讨论】:
-
有什么理由不使用服务网格?
标签: kubernetes kubernetes-ingress kubernetes-pod kubernetes-networking