我目前的设置涉及一个EKS集群,它具有多个名称空间(多租户),跨越私有子网中许多不同的EKS节点。我希望豆荚的出口流量每个名称空间都有一个专用的EIP。AFAIK没有现成的解决方案可以解决这个问题。我在网上搜索了很长时间,但都是徒劳的。以下是一些解决方案,我已经累了,但最终遇到了一个障碍。
Istio雌虎网关允许您通过专用出口网关吊舱从豆荚引导所有出站流量。但是出口网关pod将假定它正在运行的节点的ip,这将不适用于我的用例。此外,我还没有找到关于如何跨多个节点设置多个出口网关荚的体面文档。
Calico雌虎网关非常类似于Istio雌虎网关解决方案,同样的约束也适用于
自定义解决方案我已经开始实现一个自定义解决方案,我在公共子网中设置了多个网关节点,每个节点都有一个专用的EIP。现在,我可以修改私有EKS节点中的IP路由/网关,以便根据pod源IP通过特定的网关节点路由通信量。这个解决方案感觉非常混乱,而且这种解决方案的操作开销很高。
我看过像这这样的解决方案,但没有任何进展。
是否有更好的方法/解决办法来解决这个问题?
我的产品集群非常大,我不能为每个名称空间建立一个集群。
我也在堆栈过流上交叉张贴了这个问题。我真的不知道哪个论坛是更好的地方这个问题。很乐意在适当的时候删除。
发布于 2021-11-09 18:57:57
为了获得更多的可见度,以下是关于这个主题的讨论摘要:
在GitHub中创建了一个特性请求,但自3月份以来就没有任何更新。
Calico将通过将IP分配给名称空间来解决这个特定的用例,如库伯内特斯这里集成中所描述的那样:
出口网关为SNAT的流量定义静态出口IP,离开集群并将其应用到特定的命名空间。然后,它将名称空间中的一个荚指定为出口荚,并分配一个可路由的IP,该IP专用于离开集群的出口通信。
但是在实践中,雌虎网关荚并不知道AWS VPS,因此它不能将EIP分配给雌虎荚。当流量退出网关荚时,它假设节点本身的IP作为源IP。
私有子网中许多不同的EKS节点..。
EIP不适用于私有子网。如果在公共子网中指定了工作节点,则可以在这些公共可访问节点上使用EIP和反向代理来公开专用网络中的服务。然后,您可以在这些公共节点上使用作为反向代理荚,然后使用底层EIP。
发布于 2022-01-04 21:35:14
我最终确定了解决方案,通过在公共子网中设置的“代理Pods”从私有子网中的豆荚中输出流量。这些代理吊舱被指定为公共ips,因此出口流量自动假定这些ips。在操作上,这个解决方案有一些开销,但考虑到这些限制,这是我所能想到的最好的方法。
https://serverfault.com/questions/1082748
复制相似问题