-1

假设我有 2 个站点,S1,S2;每个都至少有一个 Kubernetes 工作人员。这两个站点在地理位置上相距甚远,并且在节点/工作器上具有不同的公共 IP。

kubernetes 是否提供任何现有机制来通过 S2 从 S1 中的 pod/容器路由传出的互联网流量?

目标是能够将 S2 中的公共 IP 用于 S1 中的 pod。

如果 k8s-federation 是解决方案的必要条件;那很好。

4

2 回答 2

1

Kubernetes 对此没有任何意见,这取决于您的网络设计和结构,就像使用传统 VM 或其他类似的情况一样。也就是说,鉴于您所描述的,这听起来像是一个非常糟糕的网络设计,所以如果它很容易设置,我会感到惊讶。Calico 在后台运行正常的 BGP,因此您可能可以设置两个 AS 并强制其中一个通过另一个路由。

于 2018-12-31T00:36:03.920 回答
0

使用 calico,您可以引入IPPool不对传出流量进行 NAT 的非默认设置。然后,您可以注释要使用的 pod 和/或命名空间IPPool. ,因为您的集群 IP 正在“泄漏”到外部世界,所以它会给您留下无法正常工作的传出流量。但是集群和互联网之间的任何上游路由器都不知道返回路径。

您必须让应该位于集群和互联网之间的路由器知道集群范围。您可以使用BGPPeercalico 的全局概念。完成后,还可以在路由器上设置 BGP。(使用[1])了解更多信息。

从那里你应该在你的路由器上拥有所有的灵活性,根据非默认IPPool的子网和/或第一个隧道将它路由到不同的路由,例如,到提问者的' S2'

请注意,除非您真正使用公共 IP 空间,即非 RFC-1918 IP(以及其他一些 IP),否则您现在应该在自己的某个地方引入 NAT,您可以选择在S1或中这样做S2,如果您选择后者,那么站点还需要了解返回路由器的返回路径。

这并不是真正的云原生解决方案,因为您只是将问题从 kubernetes 转移到固定子网上基于策略的路由的“老派”域——这并不是提问者真正要求的,因为他暗示存在''中也是一个kubernetes进程S2。在上述可能的解决方案中,.k8s 进程是不需要的S2

这就是 @coderanger 的kubernetes pod 的自定义传出网络路径所建议的

于 2019-11-28T08:40:54.967 回答