【问题标题】:custom outgoing network path for kubernetes podKubernetes pod 的自定义传出网络路径
【发布时间】:2019-05-27 15:56:43
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: kubernetes routes vpn project-calico


    【解决方案1】:

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

    【讨论】:

    • 也许我应该强调这一点,但自定义路由应该是每个 pod。 IIUC 您的解决方案将使所有流量从 S1 转到 S2
    • 再次,仅对 Calico 而言,您可以创建多个 IP 组并通过注解将 pod 分配给非默认组。这可以通过一些非常仔细的网络设计来实现。
    【解决方案2】:

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

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

    从那里你应该在你的路由器上拥有所有的灵活性,根据非默认 IPPool 的子网和/或首先通过隧道将其路由到提问者的“S2

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

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

    这就是@coderanger 的custom outgoing network path for kubernetes pod 的建议

    【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2020-02-18
    • 1970-01-01
    • 2019-04-06
    • 2016-09-02
    • 2020-10-23
    • 2020-06-16
    • 2020-11-15
    • 2019-01-23
    相关资源
    最近更新 更多