浅谈跨主机容器间网络方案
2020-07-04武凌峰杨磊龙文君
武凌峰 杨磊 龙文君
摘要:互联网企业内部的数据规模正在经历爆炸式增长,由此带来的高昂的软硬件运营,维护成本以及系统运维难度的增加都促使企业对其数据中心的底层架构进行不断的升级。随着虚拟化技术的不断发展,总体上经历了从裸机到虚拟机,再到容器的架构演进。容器技术以其突出的优势强力地冲击着传统的虚拟化技术。本文重点介绍容器网络中跨主机容器间的网络通信问题。
关键词:容器技术;跨主机通信
中图分类号:TP31 文献标识码:A
文章编号:1009-3044(2020)15-0265-02
1Docker(容器技术)技术简介
1.1概述
Docker是一种轻量级的操作系统虚拟化技术,是使用Go语言实现的云开源项目,采用C/S架构。ContmlGroups(Cgroup)和Namespace是实现容器的最重要的两种技术,通过ControlGroups(Cgroup)进行资源控制,利用Namespace进行资源隔离,减少了对内存的占用,提升了资源利用率和10性能,推动了云计算的快速发展和应用部署方式的变革。
1.2 Docker两大组件
Docker主要包含两大组件:Docker镜像和Docker容器。镜像是Docker容器的基石,容器是鏡像的运行实例。
为了更好地资源共享,Docker镜像和容器均采用分层的储存结构,从图1可以看出,对于Docker中新的镜像,是从base镜像一层一层叠加生成的,无论添加,删除还是修改文件,所有对容器的改动都只会发生在容器层,而容器层下面的镜像层都是只读的。对于Docker容器,容器是动态的,可以随时启动、停止和移除。
1.3 Docker技术的优势
传统的虚拟化技术,如VMWare、KVM、Xen,是创建完整的虚拟机。为了运行应用,除了部署应用本身及其依赖,还要安装整个操作系统。
Docker在传统的虚拟化技术上,创新性地引人了容器镜像技术,Docker容器技术具有如下优势:
(1)更快速,更简单的交付和部署。
(2)更有效的虚拟化。
(3)更轻松的迁移和扩展。
(4)更简洁的管理。
(5)方便的镜像仓库。
2 Docker网络
2.1Docker网络的分类
Docker网络可以根据覆盖范围分为单个host上的网络和多个host的网络。
前者主要包括:None网络、host网络、bridge网络和user-de-fined网络。
后者网络方案主要包括:overlay和macvlan以及常用的第三方方案:flannel、weave和calico。而众多的方案是通过libnet_work以及CNM与Docker集成在一起的。
2.2 libnetwork&CNM
Libnetwork是Docker容器网络库,其核心的即是Container Network Model(CNM),图2是CNM的示例,该模型通过三部分组件抽象了容器网络:
(1)Sandbox
Sandbox是容器的网络栈,包含容器的interface、路由表和DNS设置。Sandbox的标准实现是Linux Network Namespace。
(2)Endpoint
Sandbox是通过Endpoint接人Network。Endpoint的典型实现是veth pair一个Endpoint只能属于一个网络,也只能属于一个Sandbox。
通过图4和图5可以看出。hboxl可以ping通bboxl的IP,却不能解析“bboxl”主机名,即docker没有为macvlan提供DNS服务。
3 overlay和macvlan的比较
Docker起初只提供了简单的single-host网络,并不利于Docker构建容器集群并通过scale-out方式横向扩展到多个主机。在市场需求推动下,跨主机容器网络技术快速发展。这里我们通过网络模型,IPMA,连通与隔离,性能等方面比较over-lay和macvlan。
(1)网络模型
Oveday网络,构建主机间VxLAN隧道,初始数据包在发送之前被封装成VxLAN数据包,到达目的后解包。Macvlan网络在二层上通过VLAN连接容器,连接不同macvlan时则需要外部网关实现。数据包直接发送,不需要封装。
(2)IPAM
Dockeroverlay网络中所有主机共享一个subnet,容器启动时会顺序分配IP,同时也可以通过subnet定制空间IP,而Macv-lan则需要用户自己管理subnet,为容器分配IP,不同subnet通信依赖外部网关。
(3)连通与隔离
同一Docker Oveday网络中的容器可以通信,但不同网络之间无法通信。Macvlan网络的连通或隔离完全取决于二层VLAN和三层路由。
(4)性能
Oveday网络由于涉及数据包的封装和解封,存在额外的CPU和网络开销。虽然大部分Overlay网络方案底层都采用Linux kernel的vxlan模块,这样可以尽量减少开销,但这个开销与Underlay网络相比还是存在的。所以Macvlan的性能会优于Docker overlay。
4总结
通过对跨主机容器间网络方案介绍与实现,不同的网络方案有着特有的优势,相较于Docker的网络提供的四种简单的网络模式,增加了多租户网络隔离、网络Qos、服务发现等功能,满足了生产环境下复杂的使用场景。弥补了Docker本身网络的各种功能缺陷。