位于独立Kubernetes集群中的两个pod之间的连接

时间:2016-08-31 20:03:46

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

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

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

我可以确认以下方案正常运行:

GCE中的VM - > AWS中的VM(确定)

GCE中的Pod - > AWS中的VM(确定)

AWS中的VM - > GCE中的VM(确定)

AWS中的VM - > Pod在GCE(OK)

AWS中的

Pod - > Pod在GCE(OK)

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

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

这是我的配置:

gKE / GCE in us-east1

网络10.142.0.0/20

VM1 IP 10.142.0.2

Pod范围(适用于VM1)10.52.4.0/24

Pod1 IP 10.52.4.4(运行busybox)

防火墙规则:允许来自172.16.0.0/12

的所有流量

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

AWS在ap-northeast-1

VPC 172.24.0.0/16

Subnet1 172.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 IP 172.16.129.5

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

路线

  1. 到VPN隧道的目的地10.0.0.0/8
  2. 目标172.16.129.0/24到VM3
  3. 有没有人试图做类似的事情?有没有办法配置AWS VPC VPN网关以确保发往Pod的数据包被正确发送到托管它们的VM?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你在kubernetes federation中提出的问题。

  

联合可以轻松管理多个群集。它是这样做的   提供2个主要构建块:

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

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

  •   

此外,这个可能会帮助您https://kubernetes.io/docs/admin/multiple-zones/