最先进的容器技术:应用、编排和安全外文翻译资料

 2023-03-15 04:03

最先进的容器技术:应用、编排和安全

摘要

容器化是一种轻量级的虚拟化技术,使它能够在云、边缘计算/雾计算和物联网平台上部署和执行分布式应用程序。容器技术正在以光速发展,而且有许多开放的研究挑战。在本文中,提出了一个广泛的文献综述,它确定了与在高性能计算、大数据分析和地理环境中采用容器技术相关的挑战分布式(边缘计算、雾计算、物联网)应用程序。从我们的研究中可以看出,性能,编排,网络安全是主要的问题。对于每一个挑战,分析最先进的解决方案。

容器性能关系到对容器空间占用性能的评估,以及与虚拟机和裸露金属部署空间占用的比较、监控、性能预测、I / O吞吐量的提高。编排与对分布式平台上的多容器打包的应用程序的配置的选择、部署和动态控制有关。这项工作的重点是运行时自适应功能。网络安全是关于容器隔离、容器化数据的机密性和网络安全的问题。从对97篇论文的分析得出,在性能评估和运行时适应领域比安全解决方案更成熟。然而,目前尚未解决的主要挑战是I / O吞吐量优化、性能预测、多层监测、隔离以及数据保密性(在静止和传输中)。

关键词:大数据、云计算、网络安全、Docker、编排、运行时适应

1.介绍

如今,分布式应用和基础设施正从以虚拟机( VM )为中心向以容器为中心发展。容器的技术得到PaaS提供商、IaaS提供商和Internet服务提供商的大力支持。此外,容器技术被用来在大数据分析、科学计算、边缘计算和物联网等具有挑战性的领域部署大规模应用。

容器取得成功的关键有很多:对分布式应用的生命周期进行更容易的管理,在裸机资源或虚拟服务器上运行时的开销可以忽略不计,以及它们启动、重新启动和停止的时间,相对于虚拟机,它被减少到了一个数量级。最后,容器启用了应用程序的可移植性,这就是基于hypervisor的虚拟化失败的地方。事实上的标准容器技术Docker、Kubernetes和Cloudify都符合云可移植框架TOSCA。而且,可移植性还得到了开放容器倡议( OpenContainers . org )的支持,它创建的目的是为容器定义标准的镜像格式和标准的运行时环境。

由于这些众多优点,容器技术领域正在以光速发展和扩大,但仍有许多挑战需要解决,例如,与管理程序相比,减少了网络和I/O开销;安全的资源共享和隔离以启用多租户;多层监测的方法和工具;复杂运行时的自适应算法功能;高级的运行时自适应功能(例如,扩大、缩小和迁移);以及高可用性的支持。

在这样快速演变和具有挑战的情形下,我们并没有对识别成熟和早期研究成果的文献进行广泛的谱系回顾。

为了填补这一空白,我们使用以下方法分析了研究工作:首先,我们查阅文献,以确定采用容器技术要求最苛刻的应用领域( 即高性能计算、大数据分析和地理分布式应用程序)及其相关挑战(即性能、运行时适应和安全性)。然后,我们收集和分析额外的文献以确定解决这些挑战的解决方案,并指出开放的问题。由于采用了上述方法,本次调查呈现了沿以下四类文献的分类与分析。

  • 应用程序。这类集群聚集了在高性能计算、大数据分析和地理分布式(雾、边缘、物联网)应用程序中使用容器的研究论文。
  • 性能比较。此类别组研究评估不同工作负载和不同主机环境下容器性能的工作。所有这些论文都研究了问题使用容器作为虚拟机的替代品或堆叠在虚拟机之上的优缺点。
  • 编排。这一类包括应对容器化应用程序和容器平台运行时自适应的挑战,以保证其性能和高可用性。
  • 安全性。这个类别包含了解决网络安全挑战的研究结果。文学的重点是容器隔离、容器镜像层安全、存储卷安全和网络安全。

据我们所知,在撰写这篇论文时,这是第一个关于这个主题的广泛的文献综述,它在很大程度上扩展了以前发表的关于容器编排的调查。一个非常接近本文的研究工作是对微服务软件体系结构的调查。然而,该研究研究了架构模式,并没有提到与容器微服务的实现和部署相关的挑战。

本文的其余部分的组织结构如下所示。第2节提供了有关应用程序和系统容器、容器管理器和容器业务流程器的背景知识。第3节描述了上述类别的文献分类法。第4、5、6和7节分析了上述类别的最新作品。总之, 第8节总结了文献如何解决应用领域的挑战,并证明了公开的问题。

2.背景

容器的概念可以追溯到Pike等人的工作。在容器技术的基础上,提出了cgroup(control group)和Linux Namespace的概念。要了解容器技术的概况,四个主要概念很重要:应用程序和系统容器、容器管理器和容器编排器。

2.1 应用程序和系统容器

应用程序和系统容器建立在相同的技术和概念之上。唯一的区别在于它们的使用:一个系统容器运行一个完整的操作系统,而一个应用程序容器是用于部署应用程序或应用程序组件。例如,Docker开发指南和最佳实践建议在一个容器中运行一个微服务,而不是一个完整的应用程序。

一个应用程序容器是由一系列的充分利用Union File System服务和Copy-on-Write技术的镜像层构建起来的,它允许一个文件系统以可写的形式出现,但实际上不允许通过写来改变文件系统内容。

通常,应用程序开发人员可以从基本镜像(例如,操作系统内核和默认库开始)。之后,可以将应用程序复制到一个新层中(或者可能是两个层,底层包含源代码和库,顶层包含可执行文件)。同样,系统容器在底层包含一个基本操作系统镜像,它可以自定义地在新层中添加库、工具和数据。

在多层镜像构建后,所有的图层是只读的,而最后一个层是可读且非持久可写的。这意味着当删除容器时,内容会丢失。

为了持久存储数据,一个容器化的应用程序需要安装一个虚拟磁盘( Docker行话中的Docker卷)。Docker卷可以同时安装在多个容器中,允许并发读写。并发既可以在应用级管理,也可以在分布式文件系统(如GlusterFS25和Ceph.26 Bind-mount )中管理。绑定装载是一种可以在主机文件系统中存储数据的持久存储方案。它的数据从容器和主机都可以访问。这样的解决方案不具有便携性,且引入了安全问题,但可以提高I / O性能。

表1 本工作中考虑的容器技术。类型首字母缩写词定义如下:应用程序容器(AC)、系统容器(SC)、容器管理器(CM)、编排框架(O F)

表1列出了本文所考虑的容器技术。使用最广泛的应用程序容器技术是一种为Linux、OSX和Windows设计的多平台解决方案:Docker。Docker使用内核和应用程序级的API扩展了LXC,以促进容器管理和容器化应用程序的管理。LXC也可以用作应用程序容器。rkt是一种旨在在云本地环境中运行应用程序容器的解决方案,即CoreOS(容器Linux)。Oracle Solaris容器解决方案比Docker提供了更多的隔离功能。Windows服务器容器(WSC)是微软版本的应用程序容器。在系统容器方面,Linux容器和OpenVZ允许在相同的基础镜像构建的容器之间共享Linux内核。LXC使用标准内核,而OpenVZ使用专门的内核。Hyper-V容器(WHC)是微软版本的系统容器;为了保证强大的环境隔离,WHCs不在容器之间共享内核。

2.2 容器管理器

容器管理器是为了轻松地管理容器的所有生命周期而提供的一组API框架。(cf。图1),包括以下阶段:获取,生成,提交,部署,运行和维护。

在获取阶段,它从容器存储库(如Docker Hub )中选择和下载容器镜像,并将该镜像用作将被容器化的应用程序的基础层。在生成阶段,所有的应用程序组件、库和可能的数据都被打包在容器镜像中。之后,镜像被发布在一个公共/私人存储库中。在提交阶段,将使应用程序投入生产,还可能包括漏洞分析步骤。在部署阶段,部署是关于部署该应用程序并维护它是最新的,比如通过使用一个连续的交付模型。在运行阶段,设置管理系统和运行时环境(例如,扩展策略、运行状况检查、恢复策略)。最后一步是在运行时和离线时维护应用程序。监视应用程序行为,当触发故障时,系统会尝试在运行时管理它们,例如,通过重新启动容器。离线时,调试应用程序,查找故障的根本原因并修复。然后,该过程再次通过“获取”或“生成”阶段,以创建将提交、部署和维护的应用程序的新容器化版本。

容器管理器可以归类为内部部署解决方案或托管解决方案。需要在专用数据中心或在云结构或地理分布式基础设施上运行的虚拟机上安装、配置和管理内部部署解决方案。托管解决方案是由云提供商作为服务提供,只需要部分配置。在表1中所列的技术中。Docker、LXD、OpenVZ和rkt都是内部部署解决方案的例子。托管解决方案的例子有谷歌容器引擎、微软Azure容器服务和亚马逊ECS。Docker已被设计为一个容器管理系统,并正在成为事实上的标准。。例如,Windows Server容器和Hyper-V容器都可以使用Docker进行管理;GCE、ACS和ECS支持Docker容器,并且rkt提供了易于进行应用程序容器管理的API 。关于系统容器,LXD是LXC的容器管理器。OpenVZ还提供了一些容器管理API。

2.3 容器编排器

容器编排器允许云和应用程序提供商定义如何在云中选择、部署、监视和动态控制多个容器封装的应用程序的配置。容器编排器与运行时的管理有关,以支持部署、运行和维护阶段(参见图1 )。容器编排器通常提供以下主要功能( cf .表2 ):资源限制控制、调度、负载平衡、健康检查、容错和自动缩放。

图1 容器的生命周期。容器管理器提供的API可以至少支持从获取阶段到运行阶段,而编排器则允许自动化部署、运行和维护任务(运行时)阶段

表2 由不同的业务流程框架实现的功能

资源限制控制允许为容器预留特定数量的CPU和内存,这些约束可以用来做出调度决策和限制容器之间的资源争用。资源限制控制功能利用了容器管理器提供的等效机制。事实上,虽然一个容器可以使用底层系统中所有可用的资源,容器管理器可以提供API来限制内存和CPU的使用量以及特定CPU的使用量。然而,可以实施更复杂的机制。例如,Kubernetes提供了将特定数量的资源(如使用带有spec.containers[].resources.requests.cpu值的CPU来限制预留资源的使用,如带有spec.containers[].resources.limits.cpu值的CPU。如果我们考虑CPU的示例,请求允许分配特定数量的CPU (例如0.5,1,2核),而限制允许指定请求CPU部分超过100毫秒的最大时间。请求配额非常严格:如果节点运行两个指定CPU请求为0.5和0.3的容器,则只有当其CPU请求小于或等于0.2时,才能分配新容器。限制配额并不严格,即容器可以在一段时间内超过配额。

调度定义了在给定时刻在所需节点上放置所需容器数量的策略。可以根据资源约束或节点关联或两者进行调节。更复杂的调度器通常可以作为外部组件集成(表2中的自定义特性)。

负载平衡器负责在多个容器实例之间分配负载。循环策略是默认实现的策略。外部负载平衡器可以提供更复杂的策略(表2中的自定义功能)。

健康检查是实现对容器是否有能力回答请求的控制。通常的实现都是利用TCP / UDP / SSH连接尝试打开端口和HTTP请求/响应检查。

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


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


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

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

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