【问题标题】:Connection between two pods located in independent Kubernetes clusters位于独立 Kubernetes 集群中的两个 pod 之间的连接
【发布时间】:2017-01-08 13:05:08
【问题描述】:

我有两个(独立的)Kubernetes 集群,一个设置为 GKE/GCE 集群,另一个设置在使用 kube-up.sh 脚本创建的 AWS 环境中。两个集群都正常工作,我可以启动/停止 pod、服务和其他所有内容。

我希望位于这些集群中的 pod 能够相互通信,但不会将它们暴露为服务。为了实现这一点,我在两个集群之间建立了 VPN 连接,还设置了一些路由/防火墙规则,以确保 VM / pod 可以互相看到。

我可以确认以下场景工作正常:

GCE 中的虚拟机 -> AWS 中的虚拟机(正常)

GCE 中的 Pod -> AWS 中的 VM(正常)

AWS 中的虚拟机 -> GCE 中的虚拟机(正常)

AWS 中的 VM -> GCE 中的 Pod(正常)

AWS 中的 Pod -> GCE 中的 Pod(正常)

但是,我无法让 GCE 中的 VM 或 Pod 与 AWS 中的 Pod 通信。

我想知道是否任何方法可以使这项工作与当前的 AWS VPC 功能一起使用。似乎当 VPN 隧道的 AWS 端接收到发往 pod 的数据包时,它真的不知道如何处理它们。另一方面,GCE 网络自动配置了将 pod IP 关联到 GKE 集群的路由。在这种情况下,当发往 pod 的数据包到达 VPN 隧道的 GCE 端时,它会被正确转发到其目的地。

这是我的配置:

us-east1 中的 GKE/GCE

网络10.142.0.0/20

VM1 IP10.142.0.2

Pod 范围(用于 VM1)10.52.4.0/24

Pod1 IP10.52.4.4(运行busybox)

防火墙规则:允许来自172.16.0.0/12的任何流量

路由:将目标为172.16.0.0/12 的所有内容发送到 VPN 隧道(在创建 VPN 时自动添加)

ap-northeast-1 中的 AWS

VPC172.24.0.0/16

子网 1172.24.1.0/24

VM3 IP(在 Subnet1 中)172.24.1.5

Kubernetes 集群网络 (NON_MASQUERADE_CIDR): 172.16.0.0/16

Pod 范围 (CLUSTER_IP_RANGE): 172.16.128.0/17

Pod 范围(用于 VM3)172.16.129.0/24

Pod3 IP172.16.129.5

安全组:允许来自 10.0.0.0/8 的任何流量

路线

  1. 目标10.0.0.0/8 到 VPN 隧道
  2. 目标172.16.129.0/24 到 VM3

有没有人尝试做类似的事情?有什么方法可以配置 AWS VPC VPN 网关,以确保发往 Pod 的数据包正确发送到托管它们的虚拟机?有什么建议吗?

【问题讨论】:

    标签: amazon-web-services google-compute-engine kubernetes google-kubernetes-engine amazon-vpc


    【解决方案1】:

    你在 kubernetes federation 中问什么。

    联合使管理多个集群变得容易。它通过 提供 2 个主要构建块:

    • 跨集群同步资源:联合提供了使多个集群中的资源保持同步的能力。这可以用于 例如,要确保相同的部署存在于多个 集群。

    • 跨集群发现:它提供了使用来自所有集群的后端自动配置 DNS 服务器和负载平衡器的能力。这 例如,可用于确保全局 VIP 或 DNS 记录 可用于从多个集群访问后端。

    另外,这个可以帮助你https://kubernetes.io/docs/admin/multiple-zones/

    【讨论】:

      猜你喜欢
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 2017-12-28
      • 2019-03-15
      • 2020-10-15
      • 2020-06-10
      • 2019-04-24
      相关资源
      最近更新 更多