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

标签 kubernetes google-cloud-platform gke-networking

我们将现有的开发集群从 1.13.6-gke.13 升级到 1.14.6-gke.13,我们的 pod 无法再通过 Google Cloud VPN 访问我们的内部网络。我们的生产集群(仍在 1.13 上)共享相同的 VPC 网络和 VPN 隧道,并且仍然运行良好。唯一改变的是管理节点和节点池在开发集群上升级到 1.14。

我在开发集群上的一个 pod 中打开了一个 shell,并尝试 ping 一个我们需要访问的内部服务器的 IP 地址。没有收到回复。在我们的生产集群中的 pod 上做同样的事情会按预期工作。

我通过 ssh 连接到集群中的一个节点,并且能够 ping 内部网络。所以它只是有网络问题的 pod 。

对集群中公开暴露的服务的访问仍按预期工作。健康检查没问题。

更新:

我使用最新的 1.13 版本创建了一个新的节点池,从 1.14 池中排空了 pod,所有 pod 再次在 1.13 池上运行。 1.14 肯定有问题。这是由某些新配置选项引起的问题还是只是一个错误,还有待观察。

解析度:

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

最佳答案

在 GKE 1.13.x 之前,即使没有必要,GKE 也会伪装尝试访问外部 IP 的 pod,即使在集群的同一 VPC 上,除非目标位于 10.0.0.0/8 范围内。

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

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

关于kubernetes - GKE 集群升级到 1.14.6 后,VPN 无法访问内部网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58309735/

相关文章:

security - 如何在 kubernetes 应用程序上获取 ssl?

azure - Azure 中的 Kubeconfig

kubernetes - Kubernetes:获取名称解析错误

google-app-engine - 多区域 Cloud Storage 费用

google-cloud-platform - gsutil acl ch -u AllUsers :R gs://<bucket>/file. js 不起作用

kubernetes - 如何在 Google Kubernetes Engine 上将集群节点设为私有(private)?

windows - 如何在本地 Kubernetes 上运行 Windows 容器?

google-cloud-platform - Cloud Run 无法发出出站 https) 请求 - 超时

http - 两个端口号如何同时工作?