我们在同一个 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 的控制平面?
谢谢你。
好的,现在这个问题已经解决了。如果有人在“内部”控制平面端点上遇到此问题。由于集群位于同一 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。