我们将现有的开发集群从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。答案 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范围。