【发布时间】:2019-03-20 15:28:07
【问题描述】:
我在 GCP 中有 2 个集群,一个在欧洲,另一个在美国。 我创建了一个 VPC 网络来对等子网并配置相关的防火墙规则。 现在我能够在 Pod 之间创建调用,但是当我尝试从欧洲的 Pod 到另一个集群中的服务创建它们时,我获得了超时。我很好地检查了所有防火墙规则,但找不到解决方案。有人可以给我一些提示来解决我的问题吗?
【问题讨论】:
标签: kubernetes google-cloud-platform vpc
我在 GCP 中有 2 个集群,一个在欧洲,另一个在美国。 我创建了一个 VPC 网络来对等子网并配置相关的防火墙规则。 现在我能够在 Pod 之间创建调用,但是当我尝试从欧洲的 Pod 到另一个集群中的服务创建它们时,我获得了超时。我很好地检查了所有防火墙规则,但找不到解决方案。有人可以给我一些提示来解决我的问题吗?
【问题讨论】:
标签: kubernetes google-cloud-platform vpc
问题在于 GCP 需要使用虚拟机 IP 地址才能在 VPC 外部进行通信。为了允许在 VPN 上进行跨集群通信,您需要确保集群可以在同一虚拟网络上进行通信。如果内部 IP 地址(pod 地址空间)用于访问虚拟网络外部的内部 IP 地址(在这种情况下是通过 VPN),GKE 会阻止出口流量。因此,您需要配置一个 ip 表规则来伪装流量,因为它来自 VM 实例 IP 地址,而不是所有到另一个子网的传出流量的 pod IP 地址。
有一个使用守护进程集来定义 iptables MASQUERADE 规则的实现。
您可以在 github 页面 - https://github.com/kubernetes-incubator/ip-masq-agent 和 k8s 文档 - https://kubernetes.io/docs/tasks/administer-cluster/ip-masq-agent/ 上找到更多详细信息
【讨论】: