我有一个 GKE 自动驾驶仪集群,我在其中部署了一个工作负载,该工作负载需要通过两个不同的本地 VPN 连接到两个 SQL 数据库。该网络位于另一个项目上,它是一个共享 VPC。
GKE 配置如下:
- 私有集群
- 子网控制平面 172.20.0.0/28、Pod 172.18.0.0/16、服务 172.19.0.0/16
- 已启用数据平面 v2
两个 VPN 各有一个隧道(无 HA),并使用 IkeV1 版本。
我将 VPN 连接到与 Pod 和服务不同的两个子网,分别为 172.21.0.16/29 和 172.21.0.24/29。
我更新了 GKE 对等连接以导入我在“导出的路由”下实际看到的新路由。
如果我在两个子网内创建一个虚拟机,我可以正确连接到数据库,但不能从 pod 连接。
我的做法是否正确?即将 VPN 连接到与集群不同的子网?
还是将它们连接到集群网络更正确?
我也试过这解决方案,但它不起作用,因为我使用的是 GKE Autopilot。另外这不起作用,因为我无法删除 ip-masq-agent pod。
解决方案:我已通过将 VPN 类型从 Classic 更改为具有一个隧道的 HA 来解决这个问题。这启用了动态路由,就像我对 Classic VPN 所做的那样,这些路由被导入到 gke 集群对等连接中。我尝试从 pod 连接 Sql 数据库,一切运行正常。