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

vir*_*sox 5 amazon-web-services amazon-vpc google-compute-engine kubernetes google-kubernetes-engine

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

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

我可以确认以下方案是否正常工作:

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

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

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

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

AWS中的Pod - > GCE中的Pod(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

子网1: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. 10.0.0.0/8VPN隧道的目的地
  2. 172.16.129.0/24VM3的目的地

有没有人试图做类似的事情?有没有办法配置AWS VPC VPN网关以确保发往Pod的数据包被正确发送到托管它们的VM?有什么建议?

Nav*_*een 2

您在 kubernetes federation中要问什么。

联合可以轻松管理多个集群。它通过提供 2 个主要构建块来实现这一点:

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

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

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