kubernetes中的overlay网络与underlay网络的区别
Kubernetes 中的 overlay 网络和 underlay 网络是两个不同的网络层面。
Underlay 网络 在 Kubernetes 网络架构中,Underlay 网络是指承载 Kubernetes 网络流量的物理网络或底层网络。这个网络通常由物理交换机、路由器和其他网络硬件组成,它们之间通过各种路由协议(例如 OSPF、BGP 等)连接在一起组成的传统网络。
Underlay 网络负责为 Kubernetes 节点提供基本的网络连接,它为上层的 overlay 网络提供支持。
总之,Kubernetes 的网络流量,例如 Pod 到 Pod、Pod 到 Service 等都将在这个 Underlay 网络上进行传输。
Overlay 网络 对于 Overlay 网络也被称为 覆盖网络,想必只要接触过一点 kubernetes 网络知识的同学都不陌生,它主用来解决 不同节点 中 Pod 之间通讯的一种网络解决方案。 在上图可以看到 Overlay 网络是构建在 underlay 网络之上的一层虚拟网络,它通过封装数据包(如VXLAN)通过物理网络进行传输,到达目标网络后再对数据包进行解包得出真正的目标地址,最后响应数据包原路返回,从而实现跨网段的网络通讯。
它就像创建了一个逻辑网络,可以实现跨越不同节点和集群实现网络正常通讯,但有一个前提是对于 overlay 网络要求节点网络三层互通。对于 overlay 不好的一点是存在封装、解封装过程,带来一定性能损耗,也因此各大云厂商均大力发展 underlay容器网络,使得容器网络具有直通能力,比如ELB直通容器,容器直接绑eip等。
常见的 overlay 网络有 Flannel、Calico、Weave 等。
总之,Overlay 网络为 Kubernetes 集群中的 Pod 提供 IP 地址,并实现 Pod 之间的通信。
read more