在尝试理解 Kubernetes网络时,有一点使我感到困惑。为什么 Kubernetes不自行处理内置的Pod到Pod通讯?
根据文档-https://kubernetes.io/docs/concepts/cluster-administration/networking/
有 4个不同的联网问题要解决:
当Kubernetes可以处理所有其他网络问题(如上所述)时,为什么Pod到Pod的通信需要由其他plugins 处理例如ACI,Cilium,Flannel,Jaguar等。
是否想知道这种架构有什么具体原因?
答案 0 :(得分:1)
简短的答案是网络非常复杂且高度定制。提供可在任何地方使用的高效内置组件并不容易。所有云提供商网络都与裸机网络不同。与其选择糟糕的默认设置,不如要求最终用户(实际上是唯一可能理解其网络的人)做出决定。
可能会执行内置VXLAN或其他操作,但对于许多用户而言却并非理想之选,并且默认设置可能会持续...
答案 1 :(得分:1)
同意上述Tim。一般来说,Kubernetes大部分是开发人员的计算,存储和网络的抽象和编排层,因此他们不必知道实现。实现本身将与底层基础架构绑定在一起,而kubernetes仅为它们定义了接口(用于容器的CRI-计算,用于存储的CSI和用于网络的CNI)。
只需定义接口,实现就可以独立发展而不会违反合同。例如,将来有可能将Pod到Pod的网络卸载到NIC卡上,并且期望kubernetes演变为这种技术变化可能是一个大问题。通过不与实现紧密联系,它可以加快每一层技术的开发。