为什么 kubernetes 不提供 pod 到 pod 的通信?



在试图理解Kubernetes 网络时,有一点让我感到困惑。为什么Kubernetes 不处理内置的 pod 到 pod 通信?

根据文档 - https://kubernetes.io/docs/concepts/cluster-administration/networking/

4 个不同的网络问题需要解决:

  1. 高度耦合的容器到容器通信:已解决 通过 Pod 和本地主机通信。
  2. Pod-to-Pod 通信:这是主要关注点 公文。
  3. 容器到服务通信:这由服务涵盖。
  4. 外部到服务通信:这由服务涵盖。

当 Kubernetes 可以处理所有其他网络问题(如上所述)时,为什么 pod 到 pod 的通信需要由其他插件(如 ACI、Cilium、Flannel、Jaguar 等)来处理。

想知道这种架构有什么具体的原因吗?

简短的回答是,网络是复杂且高度定制的。 提供可在任何地方使用的高效内置组件并不容易。 所有云提供商网络都不同于裸机网络。 我们要求最终用户做出决定,而不是选择一个糟糕的默认值,他们是唯一可能理解其网络的人。

做一个内置的VXLAN或其他东西可能是可能的,但对许多用户来说远非理想,而且默认值往往会坚持下去......

同意上面的蒂姆。一般来说,Kubernetes 主要是开发人员的计算、存储和网络的抽象和编排层,这样他们就不必了解实现。实现本身将与底层基础设施相关联,而 kubernetes 只是为它们定义接口(CRI 用于容器 - 计算,CSI 用于存储和 CNI 用于网络)。

通过仅定义接口,实现可以在不破坏契约的情况下独立发展。例如,将来可能会将 pod 到 pod 网络卸载到 nic-card,并且期望 kubernetes 能够发展到这样的技术变化可能是一个很大的问题。通过不与实施紧密联系,它允许在每一层加速技术开发。

最新更新