【发布时间】: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 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 时自动添加)
ap-northeast-1 中的 AWS
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 的任何流量
路线:
- 目标
10.0.0.0/8到 VPN 隧道 - 目标
172.16.129.0/24到 VM3
有没有人尝试做类似的事情?有什么方法可以配置 AWS VPC VPN 网关,以确保发往 Pod 的数据包正确发送到托管它们的虚拟机?有什么建议吗?
【问题讨论】:
标签: amazon-web-services google-compute-engine kubernetes google-kubernetes-engine amazon-vpc