GKE群集升级到1.14.6后,无法访问内部网络的VPN

时间:2019-10-09 17:56:15

标签: kubernetes google-cloud-platform gke-networking

我们将现有的开发集群从1.13.6-gke.13升级到1.14.6-gke.13,并且吊舱无法再通过Google Cloud VPN到达内部网络。我们的生产集群(仍位于1.13上)共享相同的VPC网络和VPN隧道,并且仍可以正常工作。唯一更改的是在开发群集上将管理节点和节点池升级到1.14。

我在开发集群上的外壳中打开了一个外壳,并尝试ping通我们需要访问的内部服务器的IP地址。没有收到回应。在我们的生产集群中的Pod上执行相同的操作符合预期。

我进入了群集中的一个节点,并能够ping通内部网络。因此只有豆荚出现了网络问题。

对群集中公开显示的服务的访问仍按预期进行。健康检查还可以。

更新:

我使用最新的1.13版本创建了一个新的节点池,从1.14池中清空了Pod,一切都很好,并且Pod再次在1.13池中运行。 1.14肯定有问题。这是由于某些新的配置选项还是一个错误而导致的问题还有待观察。

解决方案:

https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent中讨论了IP伪装。我的解决方案是将每个群集的Pod子网添加到GCP上我的VPN云路由器中发布的网络列表中。因此,现在Pod网络可以遍历VPN。

1 个答案:

答案 0 :(得分:4)

直到GKE 1.13.x为止,即使没有必要,GKE也会伪装尝试到达外部IP的Pod,即使在群集的同一VPC上也是如此,除非目标在10.0.0.0/8范围内。

从1.14.x版本开始,默认情况下不再在群集上添加此规则。这意味着在删除伪装规则后,将看到尝试到达任何端点的Pod的Pod IP而不是节点IP。

您可以尝试重新创建Cloud VPN,以包括POD IP范围。