0-overlay和underlay,这两种容器网络你分得清吗
本文分享自华为云社区《【理解云容器网络】0-overlay和underlay容器网络》,作者:可以交个朋友。
underlay容器网络
在容器的上下文环境下,underlay容器网络代表承载容器的虚拟机或者物理机网络环境能够识别、转发容器ip。
- 开源网络插件方案如Flannel的host-gw模式、calico的bgp模式,容器网络可以不通过隧封装,依托于网络插件只能功能(增加路由表)和网络要求(kubernetes管理的节点在同一子网,不跨三层)。
- 云厂商致力于将容器网络和VPC网络扁平化,一般有两种方式:
方式一:将每个节点容器小子网注入VCP路由表中,通过注入路由表方式,使得VPC内的ECS、容器可以访问容器ip
方式二:直接从VPC中分配ip给容器,
overlay容器网络
在容器的上下文环境下,overlay容器网络代表承载容器的虚拟机或者物理机网络环境本身不能够识别、转发容器ip,需要通过每个虚拟机或者物理机上的封包、解包进程处理再转发给容器。
开源网络插件方案如Flannel的vxlan模式、calico的ipip模式,容器网络通过隧道封装,只要求kubernetes管理的节点三层网络可达。
可以简单看一下flannel vxlan的报文体会一下封装。
物理机上看到的就是标准的二层包:mac层、ip层、数据包内容,只不过物理机看到的数据包里面又有一个完整的二层包,这个二层包。客户端容器在发出请求后,客户端物理机上的flanneld进程,会对这个报文进行封包(至于如何获取到对端的容器的mac地址、如何得知对端容器所在的节点ip,暂时不用纠结)变成vxlan报文,物理机网卡设备和底层网络三层可达使得报文可以发送到对端物理机。服务端物理机网卡收到报后,根据UDP默认端口,网络协议栈将数据包丢给本无物理机上flanneld进程处理。flanneld拆包后,根据真是对端容器ip,将报文转到服务端容器中。
区别
overlay容器网络只要求节点网络三层互通即可,但是存在封装、解封装过程,带来一定性能损耗。云厂商均大力发展underlay容器网络,使得容器网络具有直通能力,比如ELB直通容器,容器直接绑eip等。