用于容器创建的内容感知节点选择
背景技术:
1.本发明涉及硬件虚拟化,并且更具体地,本发明涉及创建和部署容器镜像。
2.现代应用部署通常依赖于容器的使用。例如,容器镜像经由中央注册被分发,并且为了启动容器,主机拉取容器镜像并使用容器镜像创建针对容器的根文件系统。容器镜像的数目以及容器部署的速度快速增加。
3.然而,容器镜像的当前实现方式存在若干问题。例如,容器当前启动起来是缓慢且i/o密集的,因为它们需要下载和存储大容器镜像,导致对本地存储器和/或存储装置的高利用率。通过通信网络传递大容器镜像还导致高网络利用率以及注册服务存储子系统上的高负载。因此,当前的容器镜像的传递和存储是庞大且昂贵的。
4.因此,需要一种更快和更有效的方式来存储和分发容器镜像。
技术实现要素:
5.根据一个实施例,一种计算机实现的方法,包括:接收针对待被创建的容器的容器镜像的清单;标识针对计算节点的集群的映射索引;以及基于清单与映射索引的比较,选择计算节点的集群内的计算节点用于创建容器。
6.根据另一实施例,一种用于执行内容感知节点选择以用于容器创建的计算机程序产品,计算机程序产品包括计算机可读存储介质,计算机可读存储介质具有随其体现的程序指令,其中计算机可读存储介质本身不是瞬态信号,程序指令由处理器可执行以使处理器执行方法,方法包括:由处理器接收针对待被创建的容器的容器镜像的清单;由处理器标识针对计算节点的集群的映射索引;以及由处理器基于清单与映射索引的比较,选择计算节点的集群内的计算节点用于创建容器。
7.根据另一实施例,一种系统,包括:处理器;以及与处理器集成的逻辑,逻辑由处理器可执行,或者与处理器集成且由处理器可执行,逻辑被配置为:接收针对待被创建的容器的容器镜像的清单;标识针对计算节点的集群的映射索引;以及基于清单与映射索引的比较,选择计算节点的集群内的计算节点用于创建容器。
8.本发明的其他方面和实施例将从以下详细描述中变得清楚,当结合附图时,以下详细描述通过示例说明本发明的原理。
附图说明
9.图1描绘了根据本发明的一个实施例的云计算环境。
10.图2描绘了根据本发明的一个实施例的抽象模型层。
11.图3描绘了根据本发明的一个实施例的云计算节点。
12.图4示出了根据本发明的一个实施例的用于执行用于容器创建的内容感知节点选择的方法的流程图。
13.图5示出了根据本发明的一个实施例的示例性系统架构。
具体实施方式
14.下面的描述是为了说明本发明的一般原理的目的而做出的,并且不意味着限制这里要求保护的发明概念。进一步,本文中所描述的特定特征可与不同可能组合和排列中的每一者中的其他所描述的特征组合使用。
15.除非本文另外明确定义,否则所有术语将被给予其最广泛的可能解释,包括从说明书中暗示的含义以及本领域技术人员所理解的和/或如词典、论文等中定义的含义。
16.还必须指出,如在本说明书和所附权利要求书中所使用的,单数形式“一个”、“一种”和“该”包括复数指代物,除非另外指明。将进一步理解的是,当在本说明书中使用术语“包括”和/或“包括”时,其指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整体、步骤、操作、元件、组件和/或其组的存在或添加。
17.以下描述公开了执行用于容器创建的内容感知节点选择的若干实施例。
18.在一个一般实施例中,一种计算机实现的方法,包括:接收针对待被创建的容器的容器镜像的清单;标识针对计算节点的集群的映射索引;以及基于清单与映射索引的比较,选择计算节点的集群内的计算节点用于创建容器。
19.在另一一般实施例中,一种用于执行内容感知节点选择以用于容器创建的计算机程序产品,计算机程序产品包括计算机可读存储介质,计算机可读存储介质具有随其体现的程序指令,其中计算机可读存储介质本身不是瞬态信号,程序指令由处理器可执行以使处理器执行方法,方法包括:由处理器接收针对待被创建的容器的容器镜像的清单;由处理器标识针对计算节点的集群的映射索引;以及由处理器基于清单与映射索引的比较,选择计算节点的集群内的计算节点用于创建容器。
20.在另一一般实施例中,一种系统,包括:处理器;以及与处理器集成的逻辑,逻辑由处理器可执行,或者与处理器集成且由处理器可执行,逻辑被配置为:接收针对待被创建的容器的容器镜像的清单;标识针对计算节点的集群的映射索引;以及基于清单与映射索引的比较,选择计算节点的集群内的计算节点用于创建容器。
21.应当理解,尽管本公开包括关于云计算的详细描述,但是本文所引用的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实现。
22.云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储装置、应用、虚拟机和服务)的共享池的方便、按需的网络访问,可配置计算资源可以用最小的管理精力或与服务提供者的交互来快速被供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
23.特性如下:
24.按需自助服务:云消耗者可按需自动地单方面供应计算能力,诸如服务器时间和网络存储,而无需与服务的提供者的人类交互。
25.广泛的网络接入:能力在网络上是可用的并且通过标准机制来访问,标准机制促进由异构的瘦或厚客户端平台(例如,移动电话、膝上型计算机和pda)的使用。
26.资源池化:提供者的计算资源被池化以使用多租户模型服务于多个消耗者,其中不同的物理和虚拟资源根据需要被动态地指派和重新指派。存在位置独立性的意义,因为消耗者通常对所提供资源的确切位置不具有控制或知识,但可能能够在较高抽象层级(例
如,国家、州或数据中心)处指定位置。
27.快速弹性:可以快速且弹性地提供能力(在一些情况下,自动地)以快速缩小并且快速释放以快速放大。对于消耗者,可用于供应的能力通常显得不受限制,并且可以在任何时间以任何数量购买。
28.测量的服务:云系统通过利用适于服务类型(例如,存储、处理、带宽和活动用户账户)的某种抽象级别的计量能力来自动控制和优化资源使用。可监视、控制和报告资源使用,从而为所利用的服务的提供者和消耗者两者提供透明度。
29.服务模型如下:
30.软件即服务(saas):提供给消耗者的能力是使用在云基础设施上运行的提供者的应用。应用可通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口从不同客户端设备访问。消耗者不管理或控制包括网络、服务器、操作系统、存储或甚至个体应用能力的底层云基础设施,可能的例外是有限的用户特定的应用配置设置。
31.平台即服务(paas):向消耗者提供的能力是在云基础设施上部署消耗者创建或获取的应用,应用是使用提供者所支持的编程语言和工具来创建的。消耗者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但是具有对所部署的应用以及可能的应用托管环境配置的控制。
32.基础设施即服务(iaas):提供给消耗者的能力是提供消耗者能够部署和运行可以包括操作系统和应用的任意软件的处理、存储、网络和其他基本计算资源。消耗者不管理或控制底层云基础设施,而是具有对操作系统、存储、所部署的应用的控制,以及对所选联网组件(例如,主机防火墙)的可能有限的控制。
33.部署模型如下:
34.私有云:云基础设施仅针对组织操作。它可由组织或第三方管理,并且可以存在于场所内或场所外。
35.社区云:云基础设施由若干组织共享并且支持具有共享的关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可由组织或第三方管理,并且可存在于场所内或场所外。
36.公共云:使云基础设施对公众或大型产业组可用并且由销售云服务的组织拥有。
37.混合云:云基础架构是两个或更多个云(私有、社区或公共的)的组成,这些云保持唯一实体但通过标准化或专有技术来绑定在一起,这些技术实现数据和应用便携性(例如,用于云之间的负载平衡的云突发)。
38.云计算环境是面向服务的,关注于状态、低耦合、模块性和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
39.现在参见图1,描绘了说明性云计算环境50。如图所示,云计算环境50包括一个或多个云计算节点10,云消耗者使用的本地计算设备(诸如个人数字助理(pda)或移动电话54a、台式计算机54b、膝上型计算机54c和/或汽车计算机系统54n)可以与云计算节点10通信。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为云消耗者不需要维护本地计算设备上的资源的服务。应理解,图1中所示的计算设备54a-54n的类型仅旨在是说明性的,且计算节点10和云计算环境50可以
通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
40.现在参见图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应预先理解,图2中所示的组件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
41.硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:大型主机61;基于risc(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
42.虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储装置72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
43.在一个示例中,管理层80可以提供下文所描述的功能。资源供应81提供用于执行云计算环境内的任务的计算资源和其他资源的动态获取。计量和定价82在资源在云计算环境内被利用时提供成本跟踪,并针对这些资源的消耗进行计费或开发票。在一个示例中,这些资源可以包括应用软件许可证。安全性提供针对云消耗者和任务的身份验证,以及对数据和其他资源的保护。用户门户83为消耗者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得所需的服务级别被满足。服务级别协议(sla)计划和履行85提供云计算资源的预安排和获取,根据sla预期该云计算资源的未来要求。
44.工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟教室教育递送93;数据分析处理94;交易处理95;以及容器镜像创建和部署96。
45.现在参见图3,示出了云计算节点的示例的示意图。云计算节点10仅是合适的云计算节点的一个示例,并且不旨在对在此描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,云计算节点10能够被实现和/或执行上文阐述的任何功能。
46.在云计算节点10中存在计算机系统/服务器12,其可以与许多其他通用或专用计算系统环境或配置一起操作。可以适于与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、厚客户机,手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品,网络pc、小型计算机系统、大型计算机系统和包括任何上述系统或设备的分布式云计算环境,等等。
47.计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实现,其中任务由通过通信网络而被链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质两者中。
48.如图3所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28、以及将包括系统存储器28的不同系统组件耦合到处理器16的总线18。
49.总线18表示若干类型的总线结构中的任一种总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,此类架构包括工业标准架构(isa)总线、微通道架构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线和外围组件互连(pci)总线。
50.计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是由计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
51.系统存储器28可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过举例的方式,可以提供存储系统34用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,可以提供用于读写可移动非易失性磁盘(例如,“软盘”)的磁盘驱动器以及用于读写诸如cd-rom、dvd-rom或其他光学介质之类的可移动非易失性光盘的光盘驱动器。在这样的示例中,每一个都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有被配置为执行本发明的实施例的功能的程序模块的集合(例如,至少一个)。
52.具有一组(至少一个)程序模块42的程序/功用40以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以通过示例而非限制的方式存储在存储器28中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每项或其某一组合可以包括联网环境的实现。程序模块42通常执行本发明所描述的实施例的功能和/或方法。
53.计算机系统/服务器12也可以与一个或多个外部设备14通信,例如键盘、定点设备、显示器24等;使得用户能够与计算机系统/服务器12交互的一个或多个设备;和/或使计算机系统/服务器12能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这样的通信可以经由输入/输出(i/o)接口22发生。再者,计算机系统/服务器12可以经由网络适配器20与诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,互联网)之类的一个或多个网络通信。如所描述的,网络适配器20经由总线18与计算机系统/服务器12的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器和数据归档存储系统等。
54.现在参见图4,示出了根据一个实施例的方法400的流程图。在不同实施例中,方法400可根据本发明在图1至图3和图5中描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将理解的,方法400中可以包括比图4中具体描述的那些操作更多或更少的操作。
55.方法400的每个步骤可由操作环境的任何合适的组件来执行。例如,在不同实施例中,方法400可以部分地或完全地由一个或多个服务器、计算机或其中具有一个或多个处理器的一些其他设备来执行。处理器(例如,以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可在任何设备中用于执行方法400的一个或多个步骤。说明性处理器包括但不限于中央处理单元(cpu)、专用集成电路(asic)、现场可编程门
阵列(fpga)等、其组合、或本领域已知的任何其他合适的计算设备。
56.如图4所示,方法400可以开始于操作402,其中针对待被创建的容器的容器镜像的清单被接收。在一个实施例中,可以响应于在计算节点的集群内创建容器的请求而取回清单。
57.例如,可以从用户、应用等接收请求。在另一示例中,可以在计算节点的集群处接收请求。在又一示例中,计算节点的集群可以包括分布式计算网络、基于云的计算环境等。在又一示例中,容器可以包括实现操作系统(os)级虚拟化的自包含软件包。
58.附加地,在一个实施例中,创建容器可以包括在集群内的多个计算节点中的一个计算节点处挂载针对容器的文件系统、加载容器内的一个或多个库和/或运行容器内的一个或多个应用、利用挂载的文件系统等。
59.进一步,在一个实施例中,容器镜像可以包括在计算节点的集群中的一个计算节点处创建容器所需的所有文件。在另一实施例中,容器镜像可以包括多个文件(例如,包括代码、运行时、系统工具、系统库和设置等的可执行包)。在又一实施例中,容器镜像的清单可以包括描述容器镜像内的多个文件的元数据。
60.例如,清单可以包括文件名(例如,内容标识符)、与那些文件相关联的所有权和/或权限数据等的列表。在另一示例中,清单可以包括针对文件的基于内容的地址(例如,文件散列、指向多个文件被存储的位置的指针等)。在又一示例中,清单可以存储多个文件存根,其各自包含指向文件被存储的位置的指针。
61.更进一步,在一个实施例中,清单可以包括描述容器镜像内的多个文件而不是多个文件本身的元数据。例如,文件可以远程地存储在内容存储库(例如,集中式对象存储)处。在另一示例中,文件中的一个或多个文件可以被本地存储(例如,在待被创建的容器的节点处等)。
62.在另一个实施例中,一旦创建了容器,容器就可以使用清单来按需要从容器镜像中取回单独的文件(例如,当由在容器内运行的应用请求时以“懒惰”方式等)
63.而且,在一个实施例中,清单可以由与集群内的节点分离的调度器模块取回。在另一实施例中,清单可从储存库(例如,注册表等)取回。例如,与集群内的节点分离的调度器模块可以从物理上与调度器模块分离的清单储存库(例如,数据库等)取回针对容器的容器镜像的清单。在又一实施例中,清单可以在重叠计算模块处从调度器接收。
64.此外,方法400可以进行操作404,其中针对计算节点的集群的映射索引被标识。在一个实施例中,可以在储存库处标识映射索引。在另一实施例中,映射索引可以本地存储在调度器模块处。在一个实施例中,映射索引可以被远程存储(例如,作为单独的数据库等)。在又一实施例中,映射索引可以存储针对计算节点的集群内的每个节点的标识符。
65.此外,在一个实施例中,映射索引可以存储当前被存储在计算节点的集群的每个节点内的所有容器镜像文件的标识符(例如,内容标识符等)。例如,计算节点的集群内的每个节点可以存储一个或多个容器镜像的一个或多个部分。在另一示例中,这些部分包括容器镜像文件。在又一示例中,这些部分可以被存储在节点中的每个节点的高速缓存内。在又一示例中,计算节点的集群内的每个节点可以存储一个或多个容器镜像(例如,不同容器镜像文件等)的与集群的其他节点相比不同的部分。
66.更进一步,在一个实施例中,针对当前被存储在计算节点的集群的节点内的每个
容器镜像文件的内容标识符可以被链接(例如,映射等)到映射索引内的针对节点的标识符(例如,节点标识符等)。以此方式,映射索引可以存储集群的每个节点内所存储的所有容器镜像文件的指示。
67.此外,在一个实施例中,映射索引可以仅存储每个内容标识符的一部分(例如,前缀)以减少映射索引内存储的数据的量。在另一实施例中,可以从储存库(例如,注册表等)取回映射索引。例如,可以从清单被取回的相同储存库取回映射索引。在又一实施例中,可以在重叠计算模块处从调度器接收映射索引。
68.另外,方法400可以进行操作406,其中基于清单与映射索引的比较,在计算节点的集群内选择计算节点用于创建容器。在一个实施例中,重叠计算模块可以将清单内的内容标识符的列表与被链接到映射索引内的节点标识符的内容标识符进行比较。
69.进一步,在一个实施例中,对于映射索引内的每个节点标识符,重叠计算模块可以确定清单内被链接到节点标识符的内容标识符的数目。例如,可以对清单内被链接到节点标识符的内容标识符的数目求和以创建针对节点标识符的得分。以此方式,重叠计算模块可以确定针对当前存储在集群的每个节点内的容器镜像的容器镜像文件的数目。
70.更进一步,在一个实施例中,可以选择被链接到清单内的最大数目的内容标识符的节点(例如,当与集群内的其他节点比较时)用于创建容器。例如,可以标识和返回具有最高得分的节点标识符。在另一实施例中,可以标识映射索引内的节点标识符的子集以与清单进行比较。
71.例如,可以仅将满足一个或多个附加资源要求的节点的节点标识符与清单进行比较。在另一实施例中,附加资源要求可以包括针对节点的可用高速缓存存储器的最小量、针对节点的非易失性存储装置的最小量等。例如,可以仅将与具有高于预定阈值的当前可用高速缓存存储器量的节点相关联的节点标识符与清单进行比较。
72.此外,在一个实施例中,可以标识清单内的所有内容标识符的子集以与映射索引进行比较。例如,清单内的每个内容标识符可以基于由内容标识符表示的文件的历史访问量被分配权重值。在另一示例中,只有权重高于预定阈值的内容标识符可以与映射索引进行比较。这样,可以通过限制待比较的节点标识符和内容标识符的数目来减少节点选择时间。
73.结果,可以选择当前存储针对容器的容器镜像的最大数目的容器镜像文件的节点来创建容器。这可以最小化在节点上的容器的创建/运行期间需要由节点取回的容器镜像文件的量,这进而可以减少用于传递这样的容器镜像文件的带宽的量。这可减少节点与容器镜像存储库之间的网络业务的量,从而改进实现这样的网络通信的一个或多个硬件组件的性能。这还可减少节点取回容器镜像文件的延迟(通过最大化本地容器镜像文件的数目),这可以改善在容器实现期间的节点的计算硬件的性能。
74.此外,在一个实施例中,容器的创建可以在所选择的节点处被调度。在另一实施例中,可以利用清单将针对容器的文件系统挂载在所选的节点处。例如,清单可以包括足够的数据来创建(例如,挂载)针对容器的文件系统。在另一示例中,清单可以包括一个或多个索引节点描述符和文件散列。
75.此外,在一个示例中,索引节点描述符可以包括用于挂载容器的文件系统的元数据。在另一个示例中,文件系统可以挂载在计算节点的集群的节点处(例如,被分配创建容
器的任务的节点等)。
76.更进一步,在一个实施例中,针对容器挂载的文件系统可以标识访问容器的容器镜像内的数据的请求。例如,访问数据的请求可以包括文件读取请求。在另一示例中,访问数据的请求可以包括来自容器内的应用的读取容器镜像内的数据的请求。在又一示例中,数据可以包括容器镜像文件。
77.此外,在一个实施例中,可以利用清单来确定数据的位置。例如,数据的位置可以被包括在清单内存储的元数据内。例如,元数据可以描述容器镜像内的多个文件。在另一示例中,清单可以包括针对文件的基于内容的地址(例如,文件散列、指向多个文件被存储的位置的指针等)。
78.另外,在一个实施例中,可以利用数据的位置来取回数据。例如,可以从节点的高速缓存本地地或从内容存储库/储存库/注册表远程地取回数据。例如,高速缓存可以包括比集群的节点内的标准数据存储装置更快的高速、低延迟存储器。在另一实施例中,高速缓存可以包括易失性存储器。在又一实施例中,内容存储库可以与集群的节点物理上分离,并且可以经由通信网络而被访问。在又一实施例中,内容存储还可以存储最初接收到的清单。
79.进一步,在一个实施例中,响应于确定镜像的清单指示数据本地存储在节点的高速缓存处,可以从高速缓存取回数据。在另一实施例中,响应于确定镜像的清单指示数据未本地存储在高速缓存处,可以利用通信网络从内容存储库取回数据。
80.更进一步,在一个实施例中,内容存储库可以将数据与容器镜像相关联地存储。在另一实施例中,所取回的数据可以由所挂载的文件系统使用。例如,可以利用所挂载的文件系统将所取回的数据呈现给在该节点内运行的应用。
81.此外,在一个实施例中,可以响应于取回容器镜像文件和在节点处存储这样的容器镜像文件来更新映射索引。例如,可以将所取回的容器镜像文件的内容标识符链接/映射到映射索引内的节点的标识符。在另一实施例中,可以响应于从节点移除容器镜像文件来更新映射索引。例如,在已经超过预定时间阈值之后,节点可以驱逐缓存的容器镜像文件。
82.以此方式,可以更新映射索引以准确地指示当前被存储在集群内的所有节点处的所有容器镜像文件。
83.内容感知容器调度
84.在一个实施例中,容器被调度,使得目标节点上现有内容的重叠被最大化。对内容的映射在容器主机进行。基于重叠和附加约束来计算最佳目标主机。当从主机取回/逐出内容时在线更新映射。
85.附加地,需要较少的网络业务,因为需要取回较少的内容(例如,一些策略通常在每次(重新)运行容器时重新填充镜像)。需要较少的存储装置和存储器,因为现有的内容可以被重复使用并且不需要被冗余地存储。需要较少的输入/输出(i/o)带宽,因为缓存的内容可以被重新使用。总体上,由于最大化的数据重用,可以实现更高的容器密度。
86.图5示出了根据一个实施例的示例性系统架构500。如图所示,调度器502接收运行容器的请求。响应于接收到该请求,调度器502从注册表506取回针对容器的清单504。
87.调度器502随后将取回的清单504发送给重叠计算器508。在一个实施例中,调度器502和重叠计算器508可以位于单个计算系统内。在另一实施例中,调度器502和重叠计算器508可以位于分开的计算系统内。
88.响应于接收到取回的清单504,重叠计算器508标识映射索引510,并且将取回的清单504与映射索引510进行比较,以计算映射索引510内的内容标识符与取回的清单504内的内容标识符之间的最大重叠。例如,可以选择映射索引510内的节点514来创建容器,该节点514被链接到在取回的清单504内发现的最大数目的内容标识符(例如,当与集群512内的其他节点比较时)。
89.响应于标识具有最大重叠的节点514,由调度器502调度节点514以运行容器。取回的清单504可以从调度器502被发送到节点514,并且可以用于在节点514内挂载针对容器的文件系统。
90.在文件系统被挂载在节点514内之后,所挂载的文件系统可以请求清单中未找到的附加容器镜像数据。响应于该请求,节点514可以按需方式从注册表506取回所请求的内容516。节点514然后可以将这个取回的内容516的指示发送到映射索引510,并且映射索引510可以被更新以反映节点514处的这个新取回的内容516。还可以响应于节点514移除内容的一个或多个实例来更新映射索引510,使得映射索引510包含存储在集群512的每个节点处的所有容器数据的最新快照。
91.标识目标节点
92.在一个实施例中,可以存储映射索引。例如,映射索引可以包括n个子索引,集群内的每个节点一个子索引。每个索引可以包括哈希集,该哈希集包含该节点上的文件的内容id。恒定时间查找可以按照索引被执行。可以通过仅存储每个内容id的前缀来减少索引的大小。
93.计算目标
94.在一个实施例中,可以标识具有现有文件与清单的最大重叠的节点,该节点也满足任何其他调度要求(例如,节点的数目、可用ram的量等)。示例性步骤如下:
95.1.对于映射索引中的每个节点,检查镜像的多少文件已经存在于该节点上(例如,o(n*m)),其中n是节点的数目并且m是清单中的文件的数目。
96.2.根据重叠大小对节点进行排序
97.3.在同样满足所有其他调度要求的具有最高重叠大小的节点上调度容器
98.减少调度决策时间
99.在一个实施例中,可以从镜像向节点添加附加索引。每个条目可以将镜像映射到节点的列表。对于每个节点,可以跟踪已经开始的镜像及其开始时间。可以选择最后启动镜像的节点来启动该镜像的新实例。
100.在另一实施例中,可以首先根据其他资源要求来过滤节点。例如,可仅检查满足其他资源要求的节点的重叠(例如,o(n*m)减少到o(n_r*m),其中n_r=满足资源要求的剩余节点的集合)。
101.在又一实施例中,可以在镜像的最频繁使用的子集之间计算重叠。例如,镜像中的每个文件条目可以基于其存取模式利用优先级而被标记(例如,存取文件越多,其优先级越高)。当计算重叠(例如,o(n_r*m)-》o(n_r*m_p),其中m_p=优先级》p的文件的数目)时,可以仅考虑优先级高于阈值的文件。
102.在又一实施例中,文件的反向索引可以用于列出包含文件的节点。例如,对于镜像中的每个文件i,可以标识含有文件的节点的列表(n_fi)。可以遍历列表以找到具有最多出
现的节点作为调度目标(例如,其中o(n*m)-》o(m*n_fi n)具有最差情况o(m*n n))。
103.容错性
104.在一个实施例中,响应于索引节点崩溃,索引可以被周期性地刷写到磁盘并且可以在重启时恢复。一致性可能不是关键的,因为索引和实际集群状态的小差异将仅影响调度决策的质量,而不影响操作本身。不需要记日志、事务等。在完全索引丢失的情况下,可从工作节点重建索引。
105.在另一实施例中,工作节点可能崩溃。调度器可以自动停止调度到该节点,但是可以保持针对该节点的索引。在节点恢复时,文件系统可以向调度器发送本地索引校验和。调度器然后可以计算其自己的索引条目的校验和。如果校验和发散,则调度器可以从该节点请求整个节点索引。
106.在一个实施例中,提供了一种用于提供容器化集群中的容器镜像的内容感知调度的方法。附加地,提供了一种维护映射索引以跟踪文件在集群中的位置的方法。进一步地,提供了一种方法,该方法使用映射索引为需要在集群中运行的新容器计算使现有数据的共享最大化的最佳调度目标节点。更进一步,提供了一种方法,其通过限制要在映射索引中检查的节点和文件的数目来减少调度决策次数。
107.在一个实施例中,提供了一种用于执行内容感知容器调度的方法,包括:维护通过内容id标识的集群节点与其缓存的镜像内容之间的映射;每当集群节点取回或删除镜像数据时更新映射;在接收到调度容器的请求时,下载列出镜像中的内容的(多个)内容id的镜像清单;通过查询到内容映射的节点,将镜像清单中的(多个)内容id与存储在集群节点上的数据的内容id进行比较;以及在节点上调度容器,节点在其高速缓存的内容与容器镜像数据之间具有最大重叠。
108.本发明可以是任何可能的集成技术细节级别的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的实施例的计算机可读程序指令的计算机可读存储介质(或多个介质)。
109.计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存),静态随机存取存储器(sram)、便携式致密盘只读存储器(cd-rom),数字通用盘(dvd)、记忆棒、软盘、机械编码设备(诸如穿孔卡片)或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
110.本文的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可
读存储介质中。
111.用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的smalltalk、c 等编程语言,以及过程式编程语言,例如“c”编程语言或类似的编程语言。计算机可读程序指令可完全在用户”的计算机上执行、部分在用户”的计算机上执行、作为独立软件包执行、部分在用户”的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的实施例。
112.本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述本发明的实施例。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
113.这些计算机可读程序指令可以被提供给计算机的处理器或其他可编程数据处理装置以产生机器,使得指令经由计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的实施例的指令。
114.计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
115.附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以作为一个步骤完成、同时执行、基本同时地、以部分或全部时间上重叠的方式执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
116.此外,根据不同实施例的系统可以包括处理器和与处理器集成和/或可由处理器执行的逻辑,该逻辑被配置成执行本文所叙述的过程步骤中的一个或多个。通过集成,意味着处理器具有嵌入其中的逻辑作为硬件逻辑,诸如专用集成电路(asic)、fpga等。通过处理器可执行,意味着逻辑是硬件逻辑;软件逻辑,诸如固件、操作系统的一部分、应用程序的一
部分;处理器能够访问并且被配置为在由处理器执行时使处理器执行某种功能的硬件和软件逻辑的某种组合等。如本领域已知的,软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上。可使用此项技术中已知的任何处理器,例如软件处理器模块和/或硬件处理器,例如asic、fpga、中央处理单元(cpu)、集成电路(ic)、图形处理单元(gpu)等。
117.将清楚的是,前述系统和/或方法的不同特征可以任何方式组合,从而从以上呈现的描述中创建多个组合。
118.将进一步了解,本发明的实施例可以代表客户部署的服务的形式提供以按需提供服务。
119.已经出于说明的目的呈现了本发明的不同实施例的描述,但并不旨在是穷尽性的或局限于所披露的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择在此使用的术语以最佳地解释实施例的原理、实际应用或在市场上找到的技术上的技术改进,或使得本领域普通技术人员能够理解在此披露的实施例。
技术特征:
1.一种计算机实现的方法,包括:接收针对待被创建的容器的容器镜像的清单;标识针对计算节点的集群的映射索引;以及基于所述清单与所述映射索引的比较,选择计算节点的所述集群内的计算节点用于创建所述容器。2.根据权利要求1所述的计算机实现的方法,其中针对所述容器镜像的所述清单包括描述所述容器镜像内的多个文件的元数据,所述元数据包括内容标识符和基于内容的地址的列表。3.根据权利要求1所述的计算机实现的方法,其中所述映射索引存储当前被存储在计算节点的所述集群的每个节点内的所有容器镜像文件的内容标识符,其中针对当前被存储在计算节点的所述集群的节点内的每个容器镜像文件的所述内容标识符被链接到针对所述节点的标识符。4.根据权利要求1所述的计算机实现的方法,其中所述映射索引仅存储当前被存储在计算节点的所述集群的每个节点内的所有容器镜像文件的每个内容标识符的前缀。5.根据权利要求1所述的计算机实现的方法,其中对于所述映射索引内的每个节点标识符,所述清单内被链接到所述节点标识符的内容标识符的数目被确定。6.根据权利要求1所述的计算机实现的方法,其中被链接到所述清单内的最大数目的内容标识符的节点被选择用于创建所述容器。7.根据权利要求1所述的计算机实现的方法,还包括标识所述映射索引内的节点标识符的子集,以与所述清单进行比较。8.根据权利要求1所述的计算机实现的方法,还包括标识所述清单内的所有内容标识符的子集,以与所述映射索引进行比较。9.根据权利要求1所述的计算机实现的方法,还包括:响应于取回容器镜像文件和在所述集群的计算节点处存储所述容器镜像文件而更新所述映射索引。10.根据权利要求1所述的计算机实现的方法,还包括:响应于从所述集群的计算节点移除容器镜像文件而更新所述映射索引。11.根据权利要求1所述的计算机实现的方法,还包括:在所选择的所述计算节点处调度对所述容器的创建。12.根据权利要求11所述的计算机实现的方法,还包括:利用所述清单,在所选择的所述计算节点处挂载针对所述容器的文件系统。13.根据权利要求12所述的计算机实现的方法,还包括:由针对所述容器挂载的所述文件系统标识访问所述容器的容器镜像内的数据的请求;以及利用通过利用所述清单确定的所述数据的位置来取回所述数据。14.一种用于执行内容感知节点选择以用于容器创建的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,其中所述计算机可读存储介质本身不是瞬态信号,所述程序指令由处理器可执行以使所述处理器执行方法,所述方法包括:由所述处理器接收针对待被创建的容器的容器镜像的清单;
由所述处理器标识针对计算节点的集群的映射索引;以及由所述处理器基于所述清单与所述映射索引的比较,选择计算节点的所述集群内的计算节点用于创建所述容器。15.根据权利要求14所述的计算机程序产品,其中针对所述容器镜像的所述清单包括描述所述容器镜像内的多个文件的元数据,所述元数据包括内容标识符和基于内容的地址的列表。16.根据权利要求14所述的计算机程序产品,其中所述映射索引存储当前被存储在计算节点的所述集群的每个节点内的所有容器镜像文件的内容标识符,其中针对当前被存储在计算节点的所述集群的节点内的每个容器镜像文件的所述内容标识符被链接到针对所述节点的标识符。17.根据权利要求14所述的计算机程序产品,其中所述映射索引仅存储当前被存储在计算节点的所述集群的每个节点内的所有容器镜像文件的每个内容标识符的前缀。18.根据权利要求14所述的计算机程序产品,其中对于所述映射索引内的每个节点标识符,所述清单内被链接到所述节点标识符的内容标识符的数目被确定。19.根据权利要求14所述的计算机程序产品,其中被链接到所述清单内的最大数目的内容标识符的节点被选择用于创建所述容器。20.一种系统,包括:处理器;以及与所述处理器集成的逻辑,所述逻辑由所述处理器可执行,所述逻辑被配置为:接收针对待被创建的容器的容器镜像的清单;标识针对计算节点的集群的映射索引;以及基于所述清单与所述映射索引的比较,选择计算节点的所述集群内的计算节点用于创建所述容器。21.一种系统,包括分别用于执行根据权利要求1至13中任一项所述的方法的步骤的模块。
技术总结
本公开的实施例涉及用于容器创建的内容感知节点选择。根据一个实施例,一种计算机实现的方法包括:接收针对待被创建的容器的容器镜像的清单;标识针对计算节点的集群的映射索引;以及基于清单与映射索引的比较,选择计算节点的集群内的计算节点用于创建所述容器。节点的集群内的计算节点用于创建所述容器。节点的集群内的计算节点用于创建所述容器。
技术研发人员:L
受保护的技术使用者:国际商业机器公司
技术研发日:2021.11.08
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-8217.html