私有 GKE 集群之间的跨集群通信失败(Pod 到控制平面)

问题描述 投票:0回答:1

我们在同一个 GCP 项目上有 2 个私有 GKE 集群。它们都位于同一个 VPC 中。

集群 A 是一个运行 Jenkins 的集群,其中代理作为临时 Pod。 集群 B 是我们部署微服务的地方。

集群 A 需要到达集群 B。

当尝试使用 Helm 进行部署时,我们得到:

错误:Kubernetes 集群无法访问:获取 "https://192.168.221.18/version": 拨打 tcp 192.168.221.18:443: i/o 超时

192.168.221.18 是集群 B 的私有控制平面端点。

到目前为止我尝试过的:

由于集群位于同一 VPC 网络上,因此我检查了集群 A 子网的路由:

看到 192.168.221.16/28 有一个子网对等互连:

我将集群 A 节点 IP 地址(我们只有一个节点)添加到防火墙,允许 443 上的流量到达集群 B 控制平面:

我仍然从 Jenkins 代理收到相同的超时错误消息。 那么我要问的是,是否有可能从集群 A 中的 Pod 到达集群 B 的控制平面?

谢谢你。

google-cloud-platform google-kubernetes-engine
1个回答
0
投票

好的,现在这个问题已经解决了。如果有人在“内部”控制平面端点上遇到此问题。由于集群位于同一 VPC 和区域,因此在尝试到达集群 B 的控制平面时将使用辅助 Pod 范围。如果您的辅助 Pod IP 范围不属于公共范围,您可以将其添加到控制平面的主授权地址中,这样就可以了。 如果不是这种情况,您将不得不使用 ip-masq-agent。安装它并创建一个如下所示的 configMap:

nonMasqueradeCIDRs: - 192.168.114.0/24 - 172.38.0.0/21 masqLinkLocal: false resyncInterval: 60s

其中 192.168.114.0/24 是集群 A 的子网范围,172.38.0.0/21 是辅助 Pod IP 范围。这应该告诉 ip-masq-agent 这些范围不需要 NAT。

© www.soinside.com 2019 - 2024. All rights reserved.