【问题标题】:Does GKE use an overlay network?GKE 是否使用覆盖网络?
【发布时间】:2019-02-16 20:38:55
【问题描述】:

GKE 使用kubenet 网络插件设置容器接口并在 VPC 中配置路由,以便容器可以在不同主机上相互访问。

维基百科将overlay 定义为a computer network that is built on top of another network

是否应该将 GKE 的网络模型视为覆盖网络?它建立在另一个网络之上,因为它依赖于集群中节点之间的连接才能正常运行,但是 Pod IP 在 VPC 内是可本地路由的,因为路由会通知网络去哪个节点去寻找一个特定的 Pod。

【问题讨论】:

  • 一般不会,但某些方面可以被视为覆盖:例如服务以及如何在节点上使用 iptables 规则设置它们。不过这个问题听起来有点像XY Problem,你想解决什么问题?
  • 我并不是真的想解决问题,我只是想知道我是否应该将 GKE 的网络设置称为覆盖网络以及为什么 - 我似乎记得有人说过 GKE不使用覆盖网络(不幸的是我不记得在哪里,所以我无法确认),我想知道为什么 GKE 不符合我上面链接的定义
  • 我不会说服务实现与网络是否定义为覆盖有任何关系,但也许是这样

标签: networking kubernetes google-compute-engine google-kubernetes-engine


【解决方案1】:

VPC 原生和非 VPC 原生 GKE 集群使用 GCP virtual networking。根据定义,它不是严格意义上的覆盖网络。覆盖网络将是一个仅与 GKE 集群隔离的网络。

VPC 原生集群的工作方式如下:

每个节点虚拟机都有一个主要的内部地址和两个别名 IP 范围。一个别名 IP 范围用于 Pod,另一个用于服务。 集群使用的 GCP 子网必须至少有两个辅助 IP 范围(一个用于节点 VM 上的 pod 别名 IP 范围,另一个用于节点 VM 上的服务别名 IP 范围)。

非 VPC 原生集群:

GCP 创建自定义静态路由,其目的地与 pod IP 空间和服务 IP 空间匹配。这些路由的下一个跃点是按名称命名的节点虚拟机,因此存在基于实例的路由,作为每个虚拟机内的“下一步”发生。

我可以看到有些人可能认为这是覆盖网络。我不认为这是最好的定义,因为 pod 和服务 IP 可以从 GKE 集群之外的网络中的其他虚拟机寻址。

如需深入了解 GCP 的网络基础架构,请联系 GCP’s network virtualization whitepaperhere

【讨论】:

  • 感谢您提供更多资源的链接,但有一些不正确的地方:1)每个节点虚拟机都没有自己的服务 IP 范围,服务 IP 范围是集群-宽的。只有集群范围的 Pod IP 范围为每个节点 VM 划分为 /24s (cloud.google.com/kubernetes-engine/docs/how-to/…) 2) VPC-native 集群仍然设置这些到节点 VM 的静态路由,这不是非 VPC-native 特定的事情,因为答案暗示
  • 3) 无论哪种情况,服务 IP 都无法从 GKE 集群外部的虚拟机中寻址,服务由 kube-proxy 实现,该代理仅在构成集群的节点虚拟机上运行
  • 不过,An overlay network would be one that's isolated to just the GKE cluster 我觉得对我来说很有意义
猜你喜欢
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多