问题描述
我们有一个运行在GKE上的Kubernetes集群,使用的是为此而创建的自己的VPC,其子网为10.184.0.0/20
。该群集的工作负载已分配给外部负载平衡器以进行公共访问,还分配了内部群集IP来进行内部通信。服务的子网是10.0.0.0/20
。
在同一VPC上有一个Google Cloud Classic VPN设置,可以访问专用网络。
我们还有一个内部托管的系统,该系统使用隧道通过上述VPN进行连接。本地网络可以通过子网10.184.0.0/20
上的专用IP对VPC中的节点执行ping操作,但可以对子网10.0.0.0/20
上的群集IP执行ping / telnet操作。
这有可能实现吗?
解决方法
这确实是可能的,因为您的隧道已经建立并且您可以对节点执行ping操作,我的猜测是您无法到达Pod,并且本地应用程序的服务范围也是如此,这意味着您仅在发布主要的10.184 .0.0 / 20 CIDR,但不是中学,不是吗?
您可以通过运行connectivity test轻松地检查它是否可以模拟源目的地之间的流量(在这种情况下,源是本地网络中的IP,目标应该是您的服务IP),考虑几种产品(防火墙规则,VPC对等,路由,VPN隧道等),并会告诉您环境中是否存在错误/遗漏。
如果您在VPN配置中缺少这些范围,则需要re-create it并确保在流量选择器中添加辅助范围(或使用宽0.0.0.0/0 CIDR)。
最后,请记住,您需要使用services(集群IP,NodePort,负载均衡器)公开您的应用程序,然后从本地网络再次进行测试。