一种面向边缘计算的容器部署优化方法

摘要

近年来,随着云计算、大数据和物联网的快速发展,边缘节点产生的数据量急剧增长,导致对网络带宽的需求大幅上升。为了提升云计算的服务质量,边缘计算在工业界和学术界均受到了广泛关注。作为一种面向边缘节点的资源隔离技术,容器虚拟化已被广泛使用。然而,在边缘环境存在不稳定网络连接的情况下,原生Docker容器存在大量镜像数据传输、网络中断及重传开销等问题,影响了边缘服务的质量。因此,本文提出了一种基于去重的镜像分发方法(IDM‐Dedup),以提高容器镜像的传输效率,减少部署和迁移边缘服务的时间。实验结果表明,IDM‐Dedup相比原生Docker容器方法更加有效。

1. 引言

近年来,随着云计算、大数据和物联网的快速发展,传统的计算模型发生了变革。特别是数据的增长速度远超网络带宽的增长速度。然而,物联网等新应用对响应时间提出了更高的要求。因此,边缘计算作为一种新的计算模型,在工业界和学术界受到了广泛关注[1, 2]。

边缘计算是一种分布式计算模型,计算发生在数据收集和分析位置的附近。通过将计算服务部署在比云计算更接近这些位置的地方,用户能够获得更快、更可靠的业务服务。与云计算相比,边缘计算能更好地支持终端用户应用程序[3‐5]:
- 节省带宽。边缘设备生成的数据量巨大,将所有这些数据传输到云中心会消耗大量带宽。因此,我们应在本地处理这些数据,仅将重要数据传输至云中心,其余数据则丢弃。
- 降低延迟。在云计算中,数据被发送到云中心进行处理,这会导致短暂的延迟,尤其是在网络状况不稳定的情况下。在某些情况下,这种延迟是难以接受的。通过边缘计算,关键数据可以在边缘进行处理,从而获得更快的响应时间。
- 提高安全和隐私。边缘计算避免了用户的私有数据在整个网络中传输,这从安全性角度来看是一个明显的优势。

目前,边缘计算已应用于智慧城市、智能交通、智能制造等多个领域。现有的边缘计算平台基本上基于Openstack和Kubernetes等资源管理与调度平台。鉴于边缘节点资源有限,Docker容器为虚拟化提供了一种轻量级且高性能的替代方案。然而,在边缘环境存在不稳定的网络连接的情况下,现有的Docker部署方法需要进行数据传输和重传。因此,在边缘环境存在不稳定的网络连接条件下,我们提出了一种基于去重的镜像分发方法(IDM‐Dedup),以提高容器镜像的传输效率,降低边缘服务部署与迁移的成本[6]。

本文的其余部分组织如下。第2节讨论了相关工作。在第3节中,我们提出了优化容器镜像传输效率的方法。第4节报告了广泛的实证评估。本文的工作总结在第5节。

2. 相关工作 边缘计算平台(ECP)

ECP使客户能够通过轻松部署和扩展基于容器的应用程序来满足不断增长的业务需求。ECP将高性能计算、存储和网络资源尽可能地靠近终端用户。这样做降低了数据传输成本,减少了延迟,并提高了本地性。目前,边缘计算平台主要包括 ParaDrop [7], Cloudlet [8, 9], PCloud [10], StrlingX [11], Akraino [12] 等项目。

ParaDrop 是由 WiNGS实验室 提出的一个开源边缘计算平台。该项目将无线网关扩展为一个边缘计算平台,并利用网关资源部署云应用。 示意图0

云朵是一个提出的边缘计算项目 d by卡内基梅隆大学,其转变为将原始的“移动设备‐云”架构转变为“移动设备‐云朵‐云”。云朵的架构如图2所示。在云朵中,容器也被用于为应用程序提供隔离的运行环境。 示意图1

PCloud 是佐治亚理工学院 Korvo研究小组 在边缘计算领域的研究成果。它通过整合计算、存储和云计算资源,为移动设备提供服务。StrlingX 是 OpenStack基金会 下的一个开源项目,为分布式边缘云提供服务。Akraino边缘栈 是 Linux基金会 的一个项目,支持边缘计算的高可用性云服务,可在虚拟机(VMs)和容器中开发并运行运营商级计算应用。同时,亚马逊云科技 于2016年推出了其边缘计算平台 Greengrass [13] ,微软 则在 2017年Build大会 上正式发布了其边缘计算平台 Azure IoT Edge 的技术预览版。

总之,大多数边缘计算平台和项目都使用Docker来部署边缘服务。与其他虚拟机(如KVM和Xen [14], )相比,Docker镜像的大小更小比虚拟机(VM)镜像小得多,且可以在毫秒级时间内启动和停止。因此,Docker 比虚拟机更适合在边缘部署应用程序 [15]。

3. 优化方法

本节主要介绍了边缘计算中的容器部署优化方法。首先给出了整体架构,其次给出了用于减小镜像大小的分层模型优化方法,然后给出了在不稳定连接下的传输优化方法,最后给出了移动边缘环境中容器镜像的高效分发与动态合成机制。

3.1. 优化总体架构

与数据中心节点相比,边缘设备的架构是异构的(例如,AMD、英特尔、ARM、PowerPC)。同时,边缘计算具有不同的软件环境、计算资源不足以及不稳定的网络连接。

为了向终端用户提供最佳服务,本文提出了一种基于Docker环境的边缘应用程序部署与迁移的优化方法。该架构如图3所示。 示意图2

边缘应用基础设施架构层 :该层基于Docker 一种轻量级虚拟化技术,利用命名空间和控制组机制提供隔离性和安全性保障。边缘应用基础设施层包括:
- 边缘应用虚拟化 。为了在边缘节点上快速部署边缘应用,需要将边缘应用虚拟化为 Docker镜像。特别是,应考虑基于GPU和FPGA的边缘节点上的加速器。
- 层模型优化 。每个Docker镜像都有一系列只读层,用于表示文件系统差异。这些层相互叠加,以生成容器根文件系统的基底。在边缘环境中,传统方法会产生大量的传输数据。因此采用层模型优化来减小Docker镜像的大小。
- 私有Docker仓库 。现有的容器管理平台主要使用Docker Hub作为其Docker注册中心,Doper Hub是世界上最大的容器镜像库。由于公共Docker仓库存在安全性弱和带宽低的问题,因此有必要为边缘应用构建私有Docker仓库。

边缘应用预安装层 :该层优化了容器镜像在边缘环境中的部署效率。通过镜像预分发、CDN和点对点机制,提升了服务的响应时间。边缘应用预安装层包括:
- 镜像分发 。镜像分发用于将镜像的基础层下载到边缘节点,从而减少服务部署过程中的动态数据传输量。
- 镜像缓存 。在边缘环境中使用CDN来缓存Docker镜像。
- P2P传输 。通过优化现有的镜像传输协议,使用P2P机制来提高传输效率,并支持断点续传。

Docker容器运行层 :该层通过基于本地下载镜像的动态组合机制,将镜像转换为运行中的 Docker。在接下来的部分中,我们将主要介绍该架构中的一些关键技术。

3.2. 分层模型优化

在数据中心环境,应用通过P2V技术从物理计算机镜像(其操作系统、数据和应用)转换为虚拟机(VM)后部署到云中。通常情况下,通过P2V方法转换得到的虚拟机体积较大。因此,在边缘环境中难以采用P2V技术,而基于容器的虚拟化则最为合适。基于容器的虚拟化采用分层方式组织容器镜像,提高了镜像的传输效率。然而,在该模型中,底层通常使用标准的操作系统,然后通过Dockerfile逐层构建Docker镜像。该方法通过共享相同的镜像层显著减少了磁盘使用量。

但在边缘环境存在不稳定的网络连接的情况下,仍存在大量动态数据传输不足的问题。因此,本文通过优化面向边缘应用的镜像分层模型来提升容器部署效率。具体细节如下:
- 选择轻量级基础镜像 。传统的Docker镜像主要基于标准的Ubuntu和RHEL镜像作为基础镜像,这使得Docker镜像在边缘环境中显得过于庞大。因此,通常采用BusyBox和Alpine等大多数轻量级操作系统,可实现显著的资源和成本节约。
- 最大化缓存层 。为了提高应用服务的首次启动时间,在运行Docker容器之前,将基础镜像层推送到边缘节点。因此,有必要尽可能减少容器的层数。新的基础镜像是通过合并所有应用镜像层中存在的公共层而生成的。
- 冗余优化 。在镜像生成过程中,由于安装软件包会产生大量冗余文件。为了优化镜像大小,应删除该镜像中无用的软件包。因此,本文中可以使用inotifyait工具来优化容器镜像。

3.3. 传输机制优化

通常,Docker 使用客户端‐服务器架构。Docker镜像存储在Docker注册中心中,所需的镜像从特定的注册中心拉取。在此过程中,使用Docker Registry HTTP API V2来促进镜像向Docker引擎的分发。

然而,在边缘环境存在不稳定的网络连接的情况下,使用Docker Registry HTTP API V2时,由于网络抖动会导致镜像需要重新传输。这种重传不仅带来巨大的传输开销,还影响服务响应时间。因此,本文采用BitTorrent通信协议在边缘环境中分发镜像。BitTorrent通信协议使边缘节点能够向其邻居节点共享镜像,从而加快镜像的拉取效率,提升Docker部署与迁移的效率。

3.4. 镜像预缓存机制

根据本文的描述,当容器启动时,边缘节点需要从Docker注册中心或其邻居节点下载所需的镜像。在边缘环境存在不稳定的网络连接的情况下,下载过程可能非常耗时。因此,在边缘环境中,一旦检测到边缘节点处于活动状态,就会向该节点推送基础镜像。通过预缓存机制,镜像被提前下载以备后续使用,从而加快Docker启动时间。

4. 实验评估

本节从整体上评估本文所描述方法的有效性和效率。在第4.1节中,我们介绍了实验环境。在第4.2节中,我们验证分层模型优化的效率。在第4.3节中,检查在断点处恢复传输的能力。最后,测试并发传输能力。

4.1. 实验环境

我们在以下环境中运行所有实验:四台服务器(S1、S2、S3、S4)配备Linux操作系统、ARM‐64处理器、128G内存、2T硬盘和1000 Mbps以太网。在我们的实验中,Docker版本为18.03,Kubernetes版本为1.15,并在服务器S1上部署了私有Docker仓库。

4.2. 分层模型优化验证

分层模型优化的有效性通过比较本文中原生方法(DockerNative)与提出的方法(IDM‐Dedup)的镜像大小,验证了该优化方法的有效性。首先,我们从Docker Hub拉取多个常用应用镜像,例如Ubuntu、LaTeX、Hadoop,Redis、MySQL 和 MariaDB。然后我们使用本文提出的方法来优化这些镜像。最后,通过比较这两种方法,结果如图4所示,我们可以看到,经 IDM‐Dedup 优化的镜像大小约为 Docker Hub 中镜像大小的一半。 示意图3

4.3. 验证在断点处恢复传输的能力

我们设计了一个不稳定的网络连接来验证该能力。首先,我们将Hadoop镜像推送到服务器S1上的私有Docker注册中心。其次,在服务器S2上拉取Hadoop镜像。当镜像成功下载后,可以验证该镜像是从服务器S1的 Docker注册中心拉取的。然后,我们使用Linux流量控制工具(TC)在服务器S1上模拟不稳定的网络连接,带宽设置为1Mbps,延迟设置为1秒。接着,在服务器S3和S4上多次拉取镜像。当镜像完全下载后,可以验证部分镜像是从服务器S1的Docker注册中心拉取的,另一部分是从服务器S2拉取的。

通过上述实验验证,在不稳定连接条件下,边缘节点可以通过点对点传输机制从相邻节点拉取镜像,从而消除了Docker注册中心的单点故障。

4.4. 并发传输能力

为了测试并发传输能力,我们在服务器S2、S3和S4上各部署三个虚拟机,通过VirtualBox模拟边缘节点。每个虚拟机将在Docker中运行Hadoop。然后,我们通过在这九个边缘节点上运行Hadoop来测试本文方法的并发传输能力。结果如图5所示,我们可以看到,当并发节点数量增加时,传统镜像分发方法(DockerNative)的时间呈线性增长趋势,因为瓶颈在于单一的Docker注册中心。我们还看到基于去重的镜像分发方法(IDM‐Dedup)性能更优,因为镜像不仅可以从Docker注册中心拉取,还可以从边缘节点拉取。 示意图4

5. 结论

在本文中,我们讨论了边缘计算的优势,以及在边缘环境下网络连接不稳定时现有Docker技术的不足。针对原生Docker容器存在的大量镜像数据传输、网络中断和重传开销等问题,本文提出了一种基于去重的镜像分发方法(IDM‐Dedup),该方法提高了容器镜像的传输效率,减少了部署和迁移边缘服务的时间。实验结果表明,IDM‐Dedup比原生Docker容器方法更有效。

在未来工作中,我们将把研究扩展到蜂窝网络的真实环境中。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐