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 等。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/a3905575fec5a36509eb67f24】。文章转载请联系作者。
评论