前言

本文主要会介绍笔者在学习Overlay网络与Underlay网络时所总结的知识点,其中会涉及到两者的原理、实现方式、优缺点以及选型等方面的相关内容。 笔者也会将自己的理解在文中进行阐述,这也算是在和大家交流心得的一个过程。若文中有错误的理解和概念,请大家及时纠正;吸纳大家的建议,对于我来说也是很重要的学习过程之一。


(目录)


1.Overlay网络

1.1 核心理念

需要在已有的宿主机网络上,再通过软件构建一个覆盖在已有宿主机网络之上的、可以把所有容器连通在一起的虚拟网络;这种技术就被称为:Overlay Network(覆盖网络)。即为使用软件构件的一种虚拟网络,在真实的物理网络上再覆盖一层逻辑/虚拟网络

b4387a992352109398a66d1dbe6e413d.png.webp

1.2 优缺点

优点:灵活,通用 缺点:使用复杂

1.3 实现方式

Overlay网络利用隧道技术将数据包封装到UDP中进行传输。因为涉及到数据包的封装和解包,所以存在额外的CPU运算和网络开销。Overlay网络可以支持更多的二层网段并且能够更好利用现有网络,以避免和物理网络有冲突。

Tips: 几乎所有的Overlay网络方案都使用Liunx kernel的vxlan模块,因为这样能够尽量减少开销。

Overlay网络的典型实现: 1. docker overlay 2. flannel-vxlan 3. weave


2. Underlay网络

指使用硬件构件的直连网络,即直接依赖于真实物理网络

xoverlay-underlay-network.png.pagespeed.ic.XBvZ9W7RK9.png

2.1 优缺点

优点:简单,高效,性能高 缺点:扩展性差

2.2 实现方式

典型实现: 1. docker macvlan 2. calico 3. flannel-hostgw


3.选型思路

对于在搭建容器网络时,选择哪种类型的网络解决方案好的问题;这里笔者依据自己的理解给出一些选型思路供大家思考:可以依据当前的基础设施现状来考虑该问题。 如果当前的网络架构是可以满足一个容器集群中的所有node都能够在同一个子网中,即能够实现所有node之间通过二层网络通信。那么此时可以优先选择基于Underlay网络的容器网络解决方案。因此这样可以最大化的利用当前的物理网络性能,让容器网络通信更加高效。 如果当前的网络架构是不太容易进行更改、扩展或复杂的,则此时可以考虑优先选择基于Overlay网络的容器网络解方案。因此这种场景下是肯定能够保证一个容器集群中的所有node是能够通过三层网络进行通信的,而Overlay网络的特性就在于其不太关心底层物理网络的现状,因此就能够解决当前网络架构复杂等问题。