0-overlay和underlay,这两种容器网络你分得清吗?
内容提要
本文介绍了容器网络的underlay和overlay两种模式,underlay通过网络插件实现容器IP的识别和转发,overlay则需要通过封包、解包进程处理容器IP的转发。云厂商更倾向于发展underlay容器网络,以提高容器网络的性能和直通能力。
延伸解读
underlay与overlay的核心差异
underlay容器网络要求底层网络能识别并转发容器IP,通常依赖网络插件增加路由表,且节点需在同一子网。overlay则通过封包解包进程处理容器IP转发,只要求节点三层互通。两者根本区别在于底层网络是否感知容器IP,这决定了网络架构的复杂度和性能表现。
开源插件的模式对应
Flannel的host-gw模式和Calico的BGP模式属于underlay方案,它们不通过隧道封装,而是依托网络插件增加路由表,但要求Kubernetes节点在同一子网。Flannel的VXLAN模式和Calico的IPIP模式则属于overlay方案,通过隧道封装实现,仅要求节点三层网络可达。选择插件时需根据底层网络条件匹配。
云厂商为何倾向underlay
云厂商大力发展underlay容器网络,主要为了提升性能和直通能力。underlay避免了overlay的封包解包开销,能实现容器网络与VPC网络扁平化,例如将容器子网注入VPC路由表或直接从VPC分配IP。这使得容器可直接绑定EIP或通过ELB直通,满足高性能和直通需求。
overlay的性能损耗与适用场景
overlay容器网络虽然只要求节点三层互通,部署灵活,但封包和解包过程会带来性能损耗。以Flannel VXLAN为例,物理机上的flanneld进程负责封包和解包,增加了处理延迟。因此,对性能敏感或需要直通能力的场景,underlay是更优选择;而节点跨子网或网络环境复杂时,overlay则更易实施。
Q&A
underlay容器网络和overlay容器网络的主要区别是什么?
underlay容器网络要求底层网络能够识别和转发容器IP,无需封装;overlay容器网络则底层网络无法识别容器IP,需要通过封包解包进程处理转发。overlay只要求节点三层互通,但存在性能损耗;underlay性能更好,云厂商更倾向于发展。
哪些开源网络插件方案支持underlay容器网络?
Flannel的host-gw模式和calico的bgp模式支持underlay容器网络。
overlay容器网络是如何实现容器间通信的?
overlay容器网络通过隧道封装实现通信。以Flannel vxlan为例,客户端物理机上的flanneld进程对报文进行封包,变成vxlan报文,通过底层网络发送到对端物理机;对端物理机的flanneld进程拆包后,根据真实容器IP将报文转发给服务端容器。
为什么云厂商更倾向于发展underlay容器网络?
因为underlay容器网络具有直通能力,可以提高容器网络的性能,例如实现ELB直通容器、容器直接绑定EIP等。
云厂商实现容器网络和VPC网络扁平化有哪些方式?
有两种方式:方式一是将每个节点的容器小子网注入VPC路由表中,使得VPC内的ECS和容器可以访问容器IP;方式二是直接从VPC中分配IP给容器。
overlay容器网络有哪些性能损耗?
overlay容器网络存在封装和解封装过程,这会带来一定的性能损耗。