基于Kubernetes和Docker计算容器的云原生平台的资源管理方案外文翻译资料

 2023-03-15 11:02:33

基于Kubernetes和Docker计算容器的云原生平台的资源管理方案

摘 要

在过去的十年,越来越多的企业采用云技术,并将其整合到公司内部业务流程中。基于云的部署方式提供了按业务需求而自动变化相关资源分配、容器调度的特性,不需要人工主动进行干涉管理。最近,有人提出了云原生应用程序的概念,这是帮助企业和组织有能力做到更迅速地开发软件和更频繁地更新软件以实现显著业务成果的一个概念。云原生是一种利用云计算交付模型优点而开发和运行应用程序的方法。更重要的是开发者只用关心如何创建与部署应用而不是关心应用在何处。同时基于容器的虚拟化技术,例如,Docker和Kubernetes是作为云原生应用程序的基础。本文研究了两种流行的计算密集型应用程序(大数据和深度学习)在云原生环境下的性能。我们分析了这些应用程序的系统开销和资源使用情况。通过大量的实验,我们发现通过改变默认设置,完成时间减少了79.4%,两个平台上资源管理方案的不同,完成时间增加了96.7%。此外,不同系统的资源释放延迟高达116.7%。我们的工作是可以通过选择和配置托管平台,指导开发者,管理员和研究员更好地设计和部署他们的方案。

关键词:容器管理,Docker Swarm,Kubernetes,Tensorflow

第一章 介 绍

在这过去的十年,遍布世界各地的企业,无论规模大小或行业,都在转向云服务来满足它们的计算需求。在企业层面采用云服务的好处之一是,转向云计算可以减少管理和维护IT系统的成本。这些云基础设施可以根据计算和存储需求快速伸长或收缩,以适应业务发展,并允许随着需求的变化来灵活调整。

根据福布斯的一份报告[1],从2013年到2018年,云计算基础设施和平台的支出以30%的复合年增长率增长,而整个企业IT的增长率为5%。从云计算服务提供商的角度来看,如亚马逊网络服务[2],微软Azure[3]和谷歌云平台[4],虚拟机支持虚拟技术为数据中心提供动力,并为同一个服务器上的多个用户提供服务,同时保持数据中心之间的隔离。从用户的角度来看,他们在本地开发和测试应用程序,然后在云上创建了一个虚拟机,虚拟机与他们的运行时环境是相同的,例如,操作系统和硬件设置,最后,在虚拟机内部部署应用提供服务。

在一个小规模系统中,这种系统是十分高效的,因为当客户的需求增加时可以通过购买来增加活跃的虚拟机,并且需要缩小规模时可以终止虚拟机。但是,随着系统的增加,通过虚拟机提供服务意味着在运行同一个操作系统的重复实例和冗余的引导卷,这回导致较大的调度开销。此外,虚拟机通常以提供完整服务为目标,例如在一种类型的机器上运行访问控制,数据库和日志记录。虽然当数据库查询的工作负载,复制虚拟机可以提高数据库服务的性能,但是整个系统将不可避免地浪费分配给同一虚拟机上其他服务的一些资源。

为了解决上述的局限性,充分利用云计算的优势,容器化工具(如Docker)被设计出来为了部署和运行分布式应用程序,而无需启动整个虚拟机。相反,多个独立的容器共享操作系统和物理资源。此外,容器化是服务级别的虚拟化,每个容器都专注于提供有限数量的服务,这使得系统对于需求的弹性更加合适。

图1展示了一台容纳了四个容器的机器,其目标是提供两个服务(S1和S2)。Docker只用安装这个要求的二进制和库,而不是加载这整个宿主机操作系统,这节省了大量资源并大大加快了启动速度。目前,S1通过一个容器提供,S2通过两个容器提供。如果S1的工作负载增加,则系统可以为S1启动新的容器,或者根据S2的情况,系统可以停止S2的其中一个容器并重新将其资源分配给S1。

利用基于容器的虚拟化,云原生的概念被提出,是开发打包在虚拟化容器的服务的应用程序,能作为微服务部署,并且可以通过敏捷开发,操作流程和可持续交付工作流程在弹性基础设施上进行管理。在云原生应用程序的开发环境中,多节点集群被用来提供为伸缩特性而运行的后备基础设施。在管理容器化集群的域中,Docker Swarm[6]和Kubernetes[7]是关键。他们都提供了丰富的功能,包括资源管理方案,安全策略实施,网络访问,系统管理等。但是,这些功能将引入系统的开销。在本文中,我们从资源管理的角度研究了使用云原生框架的性能。本文的主要贡献被总结如下。

(1)我们建立了一个监控系统来收集实时的资源使用情况,并计算了运行在Kubernetes和Docker架构上的容器化的大数据和深度学习应用程序的完成时间。

(2)我们在每个使用不同的工作负载的独立的平台上进行了大量的实验,并发现完成时间最多可以减少79.4%和69.4%通过分别改变每个实验的Docker和Kubernetes的默认配置。

(3)通过大量的实验,我们证明了针对于短期深度学习任务,Docker平台将资源释放的过程推迟了116.7%。此外,相互比较不同的资源管理方案,完成时间可以增加到96.7%。

本文的其余部分组织如下。在第二节,我们将会回顾该文献中的相关工作。在第三节,我们引入了云原生应用和和两个具有代表性的托管平台,Docker和Kubernetes,以及他们的资源管理方案。在第四节,介绍了我们进行的具有代表性的实验去评估这个平台应用程序产生的分析结果。最后总结本文的结论。

第二章 相关工作

云计算已经被商业化,并在过去的十年服务于各行各业[8]。无论什么时候,每当我们滚动浏览Facebook[9]或Twitter[10],观看流媒体,访问网络email服务,例如Gmail[11]或Outlook[12],或使用在我们手机上的应用,我们就能访问在云上的数据和服务。基于云基础设施,已经开展了许多研究项目来优化系统性能[13]-[16]并启用新的应用程序[17]-[19]。传统上,云计算由虚拟机来提供,以便在不同的客户端之间,并为每一个客户端维护了一个隔离的环境。虽然这种架构十分适合工作在一个小规模可伸缩系统上,但在服务于一个更大、更复杂的系统时,它将因服务提供、存储空间,和系统弹性而拥有更大的系统开销。

最近,云计算的概念被提出,用来专门构建在弹性和分布式环境中运行的应用程序,这是现代云计算平台所要求的。在后端,基于虚拟化技术的容器是云原生应用程序的基础。相比较于虚拟机,容器是更轻量,资源友好,能更高效地扩展[21]。有许多的工作从不同的角度研究了容器和虚拟机的性能。在文章[22]的实验中,不同虚拟化技术的比较研究已经进行了实验,这些作者得出了结论,这些容器可能提供裸机性能,但是它们缺乏丰富的隔离属性。ContainerCloudSim[23]扩展CloudSim是容器化云计算环境的模拟和仿真。[24]文章中的作者提出了了一个关于在数据中心中放置和迁移工作负载的决策的数学框架,其中应用程序被打包为在虚拟机上运行的OS容器。在大数据处理的领域中,[25][26]文章中的实验证明了容器增强了企业云的性能。

除了单个容器提供的好处,云原生计算的一个更高级的部分是容器编排。在这个领域,Docker Swarm[6]和Kubernetes[7]是关键。Asif等人提供了一份非详尽的说明性文档来确定和实施容器编排平台中的关键机制。

Eddy等人研究了运行和管理数据库集群的容器编排架构的性能开销。NBWGuard[28]被提议作为Kubernetes的网络带宽管理设计。随着新兴的容器化深度学习应用,在[29]中文章的作者提出了ProCon,一个将每个作业的进度纳入资源分配的容器调度器。此外,为了优化这模型训练过程的容器管理平台,TRADL[30]和FlowCon[31]提供了有效的调度算法去提高系统的可扩展性。

除了现有的研究之外,本文研究了两种流行的资源使用模式,深度学习框架(Tensorflow[32]和Pytorch[33])和大数据处理[34]的云原生应用的资源使用模式。

第三章 云上应用

本节,我们将会讨论云原生应用和容器技术,例如作为云原生应用的基本构建块Docker和Kubernetes。

3.1 云原生

云原生是一个利用了云计算模型好处的构建和运行应用的方法。云原生计算机基金会(CNCF)[35]描述了使用了开源软件栈的云原生有以下属性。

(1)容器化。意味着应用的每一部分都被打包进自己的容器中。一种具有再现性,透明度和资源隔离的属性。Swarm和Kubernetes充分受益于云平台。

(2)动态编排。容器被积极地调度和管理,以优化资源利用率。

(3)面向微服务。应用程序分为多种服务,并在弹性基础设施上进行管理,以提高应用程序的总体灵活性和可维护性。

3.1.1 Docker Swarm模型

虽然在单一机器上Docker可以创建虚拟化应用,但是Docker Swarm模型是一个开源的容器编排平台,并提供了一套容器集群的管理工具。它是Docker容器原生的集群方案,并紧密融入了Docker生态系统和拥有自己的API的优点。在Swarm模型中,运行多个Docker宿主机组成一个Swarm。

图3展示了多节点集群下的Docker Swarm模型的系统架构。在这个集群中有两种节点类型,工作节点和管理节点。工作节点负责运行任务;另一放面,管理节点接受来自用户的规范和从镜像源拉取镜像(例如Docker Hub)。工作节点接收并执行来自管理者的任务。在工作节点上的代理将会上报任务的状态给管理者,管理者负责将真实集群的状态调谐成这期望状态。这所谓的任务是一个容器,命令在容器中运行。每个管理者管理一个或多个工作节点,工作节点将会随着负载的增加而增加。

3.1.2 Kubernetes

Kubernetes是一个开源平台,由Google开发,用于容器部署操作、扩展和容器化应用程序的管理。它是一个管理工具,专门设计用于简化使用容器的工作负载的可伸缩性。Kubernetes支持Docker的相同镜像。

外文原文资料信息

[1] 外文原文作者:Mao, Ying amp; Fu, Yuqi amp; Gu, Suwen amp; Vhaduri, Sudip amp; Cheng, Long amp; Liu, Qingzhi

[2] 外文原文所在书名或论文题目:Resource Management Schemes for Cloud-Native Platforms with Computing Containers of Docker and Kubernetes

[3] 外文原文来源:

出版社或刊物名称、出版时间或刊号、译文部分所在页码:

网页地址:

剩余内容已隐藏,支付完成后下载完整资料


英语原文共 13 页,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[596134],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。