CN107431720B - 镜像部署方法和装置 - Google Patents

镜像部署方法和装置 Download PDF

Info

Publication number
CN107431720B
CN107431720B CN201580009116.4A CN201580009116A CN107431720B CN 107431720 B CN107431720 B CN 107431720B CN 201580009116 A CN201580009116 A CN 201580009116A CN 107431720 B CN107431720 B CN 107431720B
Authority
CN
China
Prior art keywords
mirror image
disposed
host
image
mirror
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580009116.4A
Other languages
English (en)
Other versions
CN107431720A (zh
Inventor
杨磊
李金成
王航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN107431720A publication Critical patent/CN107431720A/zh
Application granted granted Critical
Publication of CN107431720B publication Critical patent/CN107431720B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Medical Treatment And Welfare Office Work (AREA)
  • Processing Or Creating Images (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种镜像部署方法,该镜像部署方法运用于容器系统,通过采集各个主机上已部署的镜像信息,在获取待部署镜像的镜像标签后,判断各个主机上已部署的镜像与待部署镜像之间的重合程度,重合程度越高的主机部署该待部署镜像时需要下载的数据量越小,部署待部署镜像的速度越快,管理节点最后根据各个主机的重合程度,选择出部署该待部署镜像的部署主机。

Description

镜像部署方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及运用于容器技术中的镜像部署方法、镜像部署装置,用于镜像部署的计算设备,以及容器系统。
背景技术
容器技术是一种基于操作系统的轻量级虚拟技术,容器运行于操作系统之上的用户空间,一个主机上的容器共用能够操作系统内核。近年来,容器技术逐渐成为云计算研究的热点,容器技术的核心之一即分层镜像的使用。容器技术中使用的镜像由镜像层组成,每一个镜像层包括在该镜像层的父镜像层(英文:parent image layer)的基础上进行的各种修改,因此一个完整的镜像必须包括其所需的全部镜像层。用户可以制作并发布自己的镜像,也可以从镜像库中下载所需的镜像,将镜像下载至主机上之后,根据下载的镜像可以启动该镜像对应的容器。
容器系统中一般运行有多个用于运行容器的主机,当用户希望在容器系统中部署某一容器时,容器系统首先需要从多个主机中选择一个来运行该容器,该主机随后检测被选择的主机已存储的镜像层能否支持该容器的启动,如果不能支持,该主机需要向镜像库请求缺乏的镜像层。因此,容器部署所消耗的时间包括容器所需镜像的下载时间和镜像下载后容器的启动时间,而镜像下载后容器的启动时间很短,制约容器部署速度的往往是下载镜像耗时较长。
发明内容
本申请提供了一种镜像部署方法,通过比较待部署镜像的父镜像与各个主机上已部署的镜像选择待部署镜像的部署主机,提升了镜像的部署速度。
本申请的第一方面,提供了一种镜像部署方法,管理节点获取各个主机上已部署的镜像的镜像标签,本步骤可以实现于镜像部署方法之前,无须在每次部署镜像时都执行,例如可以周期性的执行,或在满足触发时机的情况下执行。管理节点获取待部署镜像的镜像标签后,获取待部署镜像的父镜像的镜像标签,并与之前获得的各个主机上已部署的镜像的镜像标签进行比较,则可以得知各个主机上已部署的镜像中哪些属于待部署镜像的父镜像,也即可以得知各个主机相对于待部署镜像,还缺乏哪些部分。通过各个主机的比较结果以及预定策略来选择一个相对需要下载量较少的主机来部署该待部署镜像,以提升镜像部署的速度。
结合第一方面,在第一方面的第一种实现方式中,管理节点获取各个主机上已部署的镜像的镜像标签的触发时机包括:预设的周期到达,接收到部署容器的指令或接收到用户发送的收集指令。
结合第一方面或第一方面的第一种实现方式,在第一方面的第二种实现方式中,管理节点还获取了每个主机的资源使用信息,被管理节点比较过的主机,可以为管理节点根据每个主机的资源使用信息确定满足待部署镜像的资源使用要求的主机,也即待选主机。通过待选主机的确定,减少了管理节点后续进行比较的工作量,提升了管理节点的工作效率。
结合第一方面或第一方面的任一种实现方式,在第一方面的第三种实现方式中,管理节点选择出的部署节点可以为已部署待部署镜像的父镜像数量最多的主机。已部署待部署镜像的父镜像数量最多的主机所需的下载量也最小,进一步提升了部署待部署镜像的速度。
结合第一方面或第一方面的任一种实现方式,在第一方面的第四种实现方式中,由于运用于容器领域的镜像与其父镜像有着对应关系,一般而言如果一个主机部署了一个镜像,则该主机部署了该镜像的全部父镜像。因此管理节点确定各个主机上已部署的待部署镜像的父镜像的过程中,可以不将待部署镜像的父镜像的镜像标签与各个主机上已部署的镜像的镜像标签逐一比较,而是从待部署镜像的镜像标签开始,从上往下用待部署镜像的父镜像的镜像标签与各个主机上已部署的镜像的镜像标签比较,节省了管理节点比较的时间,提升了管理节点的工作效率。
本申请的第二方面,提供了一种镜像部署方法,管理节点获取各个主机上已部署的镜像层的层标识,本步骤可以实现于镜像部署方法之前,无须在每次部署镜像时都执行,例如可以周期性的执行,或在满足触发时机的情况下执行。管理节点获取待部署镜像的镜像标签后,获取待部署镜像的镜像层的层标识,并与之前获得的各个主机上已部署的镜像层的层标识进行比较,则可以得知各个主机上已部署的镜像层中哪些属于待部署镜像,也即可以得知各个主机相对于待部署镜像,还缺乏哪些镜像层。通过各个主机的比较结果和预定策略来选择一个相对需要下载量较少的主机来部署该待部署镜像,以提升镜像部署的速度。
结合第二方面,在第二方面的第一种实现方式中,管理节点获取各个主机上已部署的镜像层的层标识的触发时机包括:预设的周期到达,接收到部署容器的指令或接收到用户发送的收集指令。
结合第二方面或第二方面的第一种实现方式,在第二方面的第二种实现方式中,管理节点还获取了每个主机的资源使用信息,被管理节点比较过的主机,可以为管理节点根据每个主机的资源使用信息确定满足待部署镜像的资源使用要求的主机,也即待选主机。通过待选主机的确定,减少了管理节点后续进行比较时的工作量,提升了管理节点的工作效率。
结合第二方面或第二方面的任一种实现方式,在第二方面的第三种实现方式中,管理节点选择出的部署节点可以为已部署待部署镜像的镜像层数量最多的主机。已部署待部署镜像的镜像层数量最多的主机所需的下载量也最小,进一步提升了部署待部署镜像的速度。
结合第二方面或第二方面的任一种实现方式,在第二方面的第四种实现方式中,由于运用于容器领域的镜像层与其父镜像层有着对应关系,一般而言如果一个主机部署了一个镜像层,则该主机部署了该镜像层的父镜像层及其父镜像层的父镜像层等。因此管理节点确定各个主机上已部署的待部署镜像的镜像层的过程中,可以不将待部署镜像的镜像层的层标识与各个主机上已部署的镜像的层标识逐一比较,而是从待部署镜像的顶层镜像层的层标识开始,向下进行比较,节省了管理节点比较的时间,提升了管理节点的工作效率。
本申请的第三方面,提供了一种镜像部署装置,该镜像部署装置用于在容器系统中部署镜像,该镜像部署装置包括了用于执行第一方面提供的镜像部署方法的至少一个单元。
本申请的第四方面,提供了一种镜像部署装置,该镜像部署装置用于在容器系统中部署镜像,该镜像部署装置包括了用于执行第二方面提供的镜像部署方法的至少一个单元。
本申请的第五方面,提供了一种计算设备,该计算设备用于在容器系统中部署镜像,该计算设备可以为容器系统中的管理节点,该计算设备运行时执行第一方面提供的镜像部署方法。
本申请的第六方面,提供了一种计算设备,该计算设备用于在容器系统中部署镜像,该计算设备可以为容器系统中的管理节点,该计算设备运行时执行第二方面提供的镜像部署方法。
本申请的第七方面,提供了一种镜像部署方法,该镜像部署方法运用于容器系统中的主机与管理节点,其中主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像的镜像标签,其中管理节点执行的部分参考第一方面提供的镜像部署方法。
本申请的第八方面,提供了一种镜像部署方法,该镜像部署方法运用于容器系统中的主机与管理节点,其中主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像层的层标识,其中管理节点执行的部分参考第二方面提供的镜像部署方法。
本申请的第九方面,提供了一种主机,该主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像的镜像标签,满足触发时机包括:预设的周期到达,或接收到管理节点发送的收集指令,收集指令指示向管理节点发送已部署的镜像的镜像标签,或检测到本地已部署的镜像发生变化。
本申请的第十方面,提供了一种主机,该主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像层的层标识,满足触发时机包括:预设的周期到达,或接收到管理节点发送的收集指令,收集指令指示向管理节点发送已部署的镜像层的层标识,或检测到本地已部署的镜像层发生变化。
本申请的第十一方面,提供了一种镜像标签发送模块,该模块运行于主机上,使得主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像的镜像标签。
本申请的第十二方面,提供了一种镜像标签发送模块,该模块运行于主机上,使得主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像层的层标识。
本申请的第十三方面,提供了一种容器系统,该容器系统包括至少两个第九方面提供的主机,以及通过第三方面提供的镜像部署装置或第五方面提供的计算设备实现的管理节点。
可选的,容器系统中管理节点获取待部署镜像的父镜像的镜像标签后,还可以将待部署镜像的父镜像的镜像标签发送至各个主机,由各个主机确定已部署的待部署镜像的父镜像,各个主机再将各自已部署的待部署镜像的父镜像的镜像标签返回至管理节点,以供管理节点确定部署节点。这种容器系统将管理节点的部分工作分布式的卸载到各个主机上,进一步提升了管理节点的工作效率。
本申请的第十四方面,提供了一种容器系统,提供了一种容器系统,该容器系统包括至少两个第十方面提供的主机,以及通过第四方面提供的镜像部署装置或第六方面提供的计算设备实现的管理节点。
可选的,容器系统中管理节点获取待部署镜像的镜像层的层标识后,还可以将待部署镜像的镜像层的层标识发送至各个主机,由各个主机确定已部署的待部署镜像的镜像层,各个主机再将各自已部署的待部署镜像的镜像层的层标识返回至管理节点,以供管理节点确定部署节点。这种容器系统将管理节点的部分工作分布式的卸载到各个主机上,进一步提升了管理节点的工作效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作以简单地介绍,显而易见的,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的容器系统的架构的示意图;
图2为本申请实施例提供的容器系统的物理架构的示意图;
图3为本申请实施例提供的镜像组织关系示意图;
图4为本申请实施例提供的计算设备的组织结构示意图;
图5为本申请实施例提供的镜像部署方法的流程示意图;
图6为本申请实施例提供的镜像标签的存储结构示意图;
图7(a)至图7(d)为本申请实施例提供的镜像标签的匹配流程示意图;
图8为本申请实施例提供的另一镜像部署方法的流程示意图;
图9为本申请实施例提供的镜像层的层标识的存储结构示意图;
图10(a)至图10(c)为本申请实施例提供的镜像层的层标识的匹配流程示意图;
图11为本申请实施例提供的镜像部署装置的组织结构示意图;
图12为本申请实施例提供的另一镜像部署装置的组织结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
贯穿本说明书,镜像是根文件系统(英文:root filesystem)的修改以及对应的容器运行时参数的有序集合,镜像是只读(英文:read only)文件。
镜像由镜像层组成。镜像层包括该镜像层对应的元数据(英文:metadata)和该镜像层所描述的文件系统修改中的至少一个。其中该镜像层对应的元数据通过json格式描述,也可以称之为层元数据(英文:layer metadata);或该镜像层所描述的文件系统修改,也可以称之为镜像文件系统修改集(英文:image filesystem changeset)。不同的镜像可以共享相同的镜像层,使得镜像层得以复用,节省了主机上的存储开销,并且镜像的更新能够通过在原镜像的镜像层的基础上发布新镜像层来实现,提升了镜像的更新以及发布的效率。
其中,元数据描述了镜像层的基本信息,例如创建日期、作者、本镜像层的层标识、父镜像层的层标识、本镜像层的大小。镜像层的镜像文件系统修改集记录了相对于该镜像层的父镜像层中的被修改的文件的存档。
每个镜像层由层标识表示,每个镜像由镜像标签表示。镜像层的层标识指代镜像层在创建时被赋予的标识,每一个镜像层的层标识唯一,常用一个256比特的16进制编码表达。镜像标签(英文:tag)指代与一个镜像层的层标识具有映射关系的描述性的、用户提供的名称。镜像标签包括两部分,即该镜像的应用名与版本号,例如Mysql:5.4,其中Mysql为应用名,5.4为Mysql的版本号。
除了基础镜像外的镜像由至少两个镜像层组成,每一个镜像层都有唯一的父镜像层。如图3所示,镜像标签为Mysql:5.4的镜像包括层标识为层标识1、层标识2、层标识3、层标识4、层标识5、层标识10的镜像层和基础镜像,以及图3中省略的Mysql:5.3与Ubuntu:12.10之间的镜像层,以及图3中省略的Ubuntu:12.10与基础镜像之间的镜像层。
除基础镜像外的镜像包括至少一个父镜像,如图3所示,Mysql:5.4的父镜像包括Mysql:5.3,Ubuntu:12.10,以及基础镜像,而Mongo:2.2的父镜像包括Ubuntu:12.10,以及基础镜像。因此,两个镜像可能有着相同的父镜像,而如果两个镜像共有的父镜像不是基础镜像,则这两个镜像还包括相同的镜像层。
基础镜像(英文:base image)没有父镜像,基础镜像一般包括了一个操作系统发行版所需的除去操作系统内核的部分。
镜像与容器对应,一个镜像对应的容器包括该镜像,以及叠加在该镜像上的读写层。例如如果需要运行一个版本为5.4的Mysql应用对应的容器,则运行该容器需要镜像标签为Mysql:5.4的镜像。在一个主机上可以运行多种容器,这些容器可以包括不同的基础镜像,但同一主机上运行的容器共享操作系统内核。
镜像库指代存储了各个镜像包括的镜像层信息,各个镜像包括的父镜像信息,以及多个镜像层的数据库。镜像库可以为公有的,用户通过互联网访问公有镜像库,例如Docker Hub。用户也可以在私有的数据中心中建立私有的镜像库。
镜像库中包括至少一个镜像族,每个镜像族包括n个镜像,n个镜像中的每两个镜像具有父子关系,第1层镜像为基础镜像,第n层镜像的父镜像包括第1层到第n-1层镜像,n为大于等于2的自然数。图3中包括两个镜像族,即包括了Mysql:5.4、Mysql:5.3、Ubuntu:12.10、基础镜像的镜像族1,以及包括了Mongo:2.2、Ubuntu:12.10、基础镜像的镜像族2。镜像族1中基础镜像为第1层镜像,Mysql:5.4为第n层镜像,Mysql:5.3为第n-1层镜像。因此对于Mysql:5.4,Mysql:5.3为其顶层父镜像,也即对于第m层镜像而言,第m-1即镜像为其顶层父镜像,第m-2层镜像为其次一层父镜像,而对于Mysql:5.4,其顶层镜像层的层标识为1,次一层镜像层的层标识为2。需要说明的是,Mysql:5.3以及Mysql:5.3的父镜像也可以构成一个镜像族3,则镜像族3包括的镜像的数量比镜像族1包括的镜像的数量少1。
本申请实施例所应用的容器系统的架构
图1为本申请实施例所应用的容器系统的架构的示意图,容器系统包括管理节点和多个运行容器的主机。管理节点上运行容器系统调度模块和容器系统管理模块。容器系统管理模块用于管理各个主机的资源使用信息,包括中央处理器(英文:centralprocessing unit,缩写:CPU)的利用率、内存总量、内存利用率、硬盘(英文:hard diskdrive,缩写:HDD)或固态硬盘(英文:solid state drive,缩写:SSD)利用率等。容器系统管理模块还用于管理主机上已经部署的镜像层的信息,以及主机上已经部署的镜像的信息。容器系统调度模块用于根据主机的资源使用信息、主机上已经部署的镜像的信息、主机上已经部署的镜像层的信息等部署镜像,容器系统调度模块还可以根据伸缩策略对主机上的容器进行管理。主机上运行了主机镜像管理模块,用于管理主机上的已部署的镜像。容器系统管理模块和各个主机上的主机镜像管理模块可以为主从(英文:master slave)模式,即各个主机镜像管理模块收集各个主机的镜像信息给容器系统管理模块。容器系统调度模块根据容器系统管理模块收集来的各个主机的镜像信息以及各个主机的资源使用信息确定了由某一主机部署一个镜像,则会通知该主机上的主机镜像管理模块与镜像库交互,获取该主机上部署该镜像缺乏的镜像层。
每个主机上可以部署一个或多个镜像,一般而言,一种镜像会部署于多个主机上,以使得该镜像对应的容器不会因为某一主机的故障而全部停止运行。
主机可以为虚拟机或物理机,管理节点可以为物理机或虚拟机。管理节点一般与主机部署于不同物理机。容器系统调度模块与容器系统管理模块和各个主机通过网络访问镜像库。
容器系统的一种物理架构的示意图如图2所示,本物理架构中,主机与管理节点均为虚拟机,一个物理机上可以运行多个主机,管理节点与各个主机运行于不同的物理机,以使得容器系统的管理与实际容器的运行相隔离,提升容器系统的工作效率和稳定性。
图1或图2中的管理节点可以通过图4中的计算设备200实现。计算设备200的组织结构示意图如图4所示,包括处理器202、存储器204,还可以包括总线208、通信接口206。
其中,处理器202、存储器204和通信接口206可以通过总线208实现彼此之间的通信连接,也可以通过无线传输等其他手段实现通信。
存储器204可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid state drive,缩写:SSD);存储器204还可以包括上述种类的存储器的组合。在通过软件来实现本申请提供的技术方案时,用于实现本申请图5提供的镜像部署方法的程序代码保存在存储器204中,并由处理器202来执行。
计算设备200通过通信接口206与镜像库和容器系统的各个主机通信。
处理器202可以为中央处理器(英文:central processing unit,缩写:CPU)。
处理器202获取待部署镜像的镜像标签,并根据待部署镜像的镜像标签,从镜像库获取待部署镜像的父镜像的镜像标签。随后从容器系统中的主机中确定至少两个待选主机,即根据各个主机的资源使用信息,以及待部署镜像的资源使用要求,从各个主机中选择能够符合待部署镜像的资源使用要求的待选主机。通过选择待选主机,使得接下来的处理只需针对各个待选主机,无须对容器系统的全部主机进行分析,提升了处理效率。
处理器202根据待部署镜像的父镜像的镜像标签,与每个待选主机上已部署的镜像的镜像标签,确定每个待选主机上已部署的待部署镜像的父镜像,最后比较每个待选主机上已部署的待部署镜像的父镜像,根据比较结果和预定策略为待部署镜像指定部署主机,该部署主机用于部署待部署镜像。预定策略可以为选择已部署待部署镜像的父镜像最多的待选主机作为部署主机,也可以结合其他参数例如各个待选主机的资源使用情况进行选择。
该部署主机可以为已部署待部署镜像的父镜像最多的待选主机,也可以结合其他策略,选择至少两个待选主机中已部署待部署镜像的父镜像相对较多的。通过部署主机的选择过程,使得该部署主机在下载待部署镜像的过程中,需要下载的数据量较少,提升了镜像部署的速度。
处理器202还可以在满足触发时机的情况下,获取并保存容器系统中每个主机上已部署的镜像的镜像标签。满足触发时机包括:预设了获取每个主机上已部署的镜像的镜像标签的周期,该周期到达,管理节点需要获取每个主机上已部署的镜像的镜像标签,以刷新管理节点存储的各个主机上的镜像情况;还包括接收到部署容器的指令,例如用户发送请求部署容器,为了部署该容器,管理节点需要获取每个主机上已部署的镜像的镜像标签,以选择该容器的部署主机;还包括接收到用户发送给管理节点的收集指令,指示管理节点收集并保存每个主机上已部署的镜像的镜像标签。
本申请还提供了一种镜像部署方法,图1、图2中的管理节点以及图4中的计算设备200运行时执行该方法,其流程示意图如图5所示。
步骤402,管理节点获取待部署镜像的镜像标签。
容器系统需要部署某一容器时,管理节点会获取该待部署容器对应的待部署镜像的镜像标签。常见的场景中,根据容器系统预设的伸缩策略或用户发送的请求,容器系统中需要启动容器,则管理节点会接收到该容器对应的镜像的镜像标签,即待部署镜像的镜像标签。
可选的,还执行了步骤400。步骤400与步骤402可以不连续执行,在步骤402执行之前应该至少执行过一次步骤400。
步骤400,管理节点在满足触发时机的情况下,获取并保存容器系统中的每个主机上已部署的镜像的镜像标签。
可选的,管理节点获取的为每个主机上全部已部署的镜像的镜像标签,以使得后续部署主机的选择过程更为准确。
可选的,满足触发时机包括:预设的周期到达,或接收到部署容器的指令,或接收到用户发送的收集指令,收集指令指示收集并保存容器系统中的主机上已部署的镜像的镜像标签。管理节点在预设的周期到达时,获取各个主机上已部署的镜像的镜像标签,以更新管理节点上存储的各个主机上已部署的镜像的镜像标签。管理节点也可以在接收到部署容器的指令的情况下,向各个主机发送指令,要求各个主机上报各自已部署的镜像的镜像标签。管理节点也可以接收用户发送的收集指令后,向各个主机发送指令,要求各个主机上报各自已部署的镜像的镜像标签。
需要说明的是,管理节点在镜像部署过程中选择待部署镜像的部署主机时,可以仅利用各个主机上已部署的部分镜像的镜像标签,因此,步骤400中可以获取各个主机上已部署的部分镜像的镜像标签,例如可以不获取各个主机上已部署的基础镜像的镜像标签。
需要说明的是,管理节点在镜像部署过程中选择待部署镜像的部署主机时,可以仅从容器系统中的部分主机中选择待部署镜像的部署主机,因此步骤400中,管理节点可以仅获取并保存容器系统中部分主机上已部署的镜像的镜像标签。常见的,可以预设容器系统中的部分主机不参与当前待部署镜像的部署,则管理节点在步骤400中无须获取这部分主机上已部署的镜像的镜像标签。
管理节点获取的各个主机上已部署的镜像的镜像标签可以为有依赖关系的,或无依赖关系的。以主机1上部署的镜像情况如图3所示为例,管理节点存储的主机1上已部署的镜像的镜像标签包括以下几种方式:
方式1,管理节点获取的为每个镜像族包括的镜像的有依赖关系的镜像标签,如镜像族1,Mysql:5.4-Mysql:5.3-Ubuntu:12.10-基础镜像;镜像族2,Mongo:2.2-Ubuntu:12.10-基础镜像,其中“-”指示后一个镜像为前一个镜像的父镜像。
方式2,管理节点获取的为每个镜像族包括的镜像的无依赖关系的镜像标签,如镜像族1,Mysql:5.4、Ubuntu:12.10、Mysql:5.3、基础镜像;镜像族2,Ubuntu:12.10、Mongo:2.2、基础镜像。方式2下,主机1只需上报各个镜像族包括的镜像标签即可,可以不指示各个镜像族内镜像之间的依赖关系。进一步的,方式2中,还可以将不同镜像族包括的相同镜像的镜像标签合并,例如镜像族1和镜像族2中,Ubuntu:12.10和基础镜像为重复的,则主机1仅需上报主机1上已部署的镜像的镜像标签包括:Mysql:5.4、Ubuntu:12.10、Mysql:5.3、基础镜像、Mongo:2.2。主机1在上报前对其已部署的镜像的镜像标签进行合并,可以减少上传到管理节点的数据量,提升管理节点的工作效率。
进一步的,管理节点获取的各个主机上已部署的镜像的镜像标签后,可以进一步对各个主机上已部署的镜像的镜像标签进行处理后再存储为方式3。以图6为例,若管理获取了主机1到主机4上分别已部署的镜像的镜像标签,则可以根据各个主机上已部署的镜像的镜像标签中包括的应用名,以应用为索引,记录各个主机上已部署的镜像的镜像标签。方式3下,如果管理节点需要查询哪几个主机上部署了Mysql应用对应的镜像,无须对全部主机进行筛选,仅需根据应用名Mysql,即可获取主机1和主机2,提升了管理节点确定部署待部署镜像的主机的效率。
步骤404,管理节点根据待部署镜像的镜像标签,从镜像库获取待部署镜像的父镜像的镜像标签。
可选的,管理节点从镜像库获取的为待部署镜像的全部父镜像的镜像标签,以使得后续部署主机的选择过程更为准确。
可选的,管理节点可以本地存储有一部分镜像的父镜像的镜像标签,若待部署镜像属于其中之一,则管理节点无须向镜像库请求待部署镜像的父镜像的镜像标签。
需要说明的是,相应于步骤400中可以获取各个主机上已部署的部分镜像的镜像标签,步骤404中管理节点也可以从镜像库获取待部署镜像的部分父镜像的镜像标签,例如不获取待部署镜像的父镜像中的基础镜像的镜像标签。
步骤404中,从镜像库获取的待部署镜像的父镜像的镜像标签可以为有依赖关系的,以待部署镜像的镜像标签为Mysql:5.4为例,获取的该镜像的父镜像的镜像标签如:Mysql:5.4-Mysql:5.3-Ubuntu:12.10-基础镜像;获取的待部署镜像的父镜像的镜像标签也可以为无依赖关系的,获取的该镜像的父镜像的镜像标签如:Mysql:5.4、Ubuntu:12.10、Mysql:5.3、基础镜像。
步骤406,管理节点从容器系统中的主机中确定至少两个待选主机。
可选的,步骤406之前,管理节点还获取了容器系统中各个主机的资源使用信息,则步骤406包括根据容器系统中主机的资源使用信息,确定满足待部署镜像的资源使用要求的至少两个待选主机。通过待选主机的选取,使得管理节点在后续步骤中仅需从待选主机中选择部署节点,提升了管理节点的工作效率,由于待选主机需要满足待部署镜像的资源使用要求,因此也使得从待选主机中选取的部署节点在资源方面必然能够满足待部署镜像,提升了待部署镜像的部署成功率。
用户向管理节点发出请求,要求管理节点部署该待部署镜像的时候,可以同时发送用户期望的该待部署镜像的资源使用要求,例如部署该镜像的主机的CPU使用量、内存使用量、内存总量等,如果用户没有发送该待部署镜像的资源使用要求,管理节点可以查询历史已部署的镜像的资源使用请求,调用其中存储的该待部署镜像的资源使用要求。管理节点随后结合各个主机的资源使用信息,与待部署镜像的资源使用要求,确定能够满足待部署镜像的资源使用要求的至少两个待选主机。
需要说明的是,步骤404和步骤406的执行顺序不限定。尤其如果先执行步骤406,管理节点从容器系统中的主机中只能确定一个能够满足待部署镜像的资源使用要求的待选主机,则无需执行步骤404及步骤406后的步骤,直接将该待选主机选为待部署镜像的部署主机。
步骤408,管理节点确定每个待选主机上已部署的镜像的镜像标签。
在步骤400中,管理节点已经获取容器系统中的每个主机上已部署的镜像的镜像标签,则管理节点从中获取每个待选主机上已部署的镜像的镜像标签。
步骤410,管理节点根据待部署镜像的父镜像的镜像标签,与每个待选主机上已部署的镜像的镜像标签为待部署镜像指定部署主机,部署主机用于部署该待部署镜像,部署主机上已部署的所述待部署镜像的父镜像满足预定策略。
步骤410可以包括:将待部署镜像的父镜像的镜像标签,与每个待选主机上已部署的镜像的镜像标签进行匹配,确定每个待选主机上已部署的待部署镜像的父镜像;并将每个待选主机上已部署的待部署镜像的父镜像进行比较,根据比较结果和预定策略指定所述部署主机,其中,预定策略为选择至少两个待选主机中已部署的待部署镜像的父镜像数量最多的待选主机为部署主机。
需要说明的是,获取了各个待选主机上已部署的待部署镜像的父镜像后,进一步,还可以获取相对于待部署镜像,各个待选主机上缺乏的镜像层的大小,并结合各个待选主机上的资源使用情况选择待部署主机,因此实际运用中,随着预定策略的设计,最后选择的部署主机也可能不是待部署镜像的父镜像数量最多的待选主机。
根据步骤400中,管理节点存储的各个主机上已部署的镜像的镜像标签的方式不同,以及步骤404中,从镜像库获取待部署镜像的父镜像的镜像标签是否有依赖关系,步骤410中管理节点确定每个待选主机上已部署的待部署镜像的父镜像的方式也有所不同。以待部署镜像的镜像标签为Mysql:5.4为例,管理节点获取的该待部署镜像的父镜像的镜像标签可以为,有依赖关系的Mysql:5.4-Mysql:5.3-Ubuntu:12.10-基础镜像,或无依赖关系的Mysql:5.4、Ubuntu:12.10、Mysql:5.3、基础镜像。
如果步骤404中从镜像库获取待部署镜像的父镜像的镜像标签没有依赖关系,则需要将待部署镜像的父镜像的镜像标签与各个待选主机上已部署的待部署镜像的父镜像的镜像标签逐个进行匹配,以确定各个待选主机上已部署的待部署镜像的父镜像。
如果步骤404中从镜像库获取待部署镜像的父镜像的镜像标签有依赖关系。
方式1的情况下,由于各个待选主机上报的已部署的镜像的镜像标签之间有依赖关系,如果步骤404中获取的待部署镜像的父镜像的镜像标签也有依赖关系,则首先从选择出的待选主机中确定当前待选主机,然后根据待部署镜像的镜像标签,与当前待选主机上已部署的镜像的镜像标签进行匹配。匹配顺序可以从顶层镜像向基础镜像进行匹配,包括以下步骤:步骤一,将待部署镜像的镜像标签,与当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定当前待选主机上已部署待部署镜像及待部署镜像的全部父镜像,若未匹配上,执行步骤二;步骤二,将待部署镜像的顶层父镜像的镜像标签,当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定当前待选主机已部署待部署镜像的全部父镜像,若未匹配上,执行步骤三;步骤三,将当前镜像的镜像标签,与当前待选主机上已部署的镜像的镜像标签进行匹配,当前镜像为前一步骤中进行了匹配的待部署镜像的父镜像的顶层父镜像,若匹配上,确定当前待选主机上已部署当前镜像的全部父镜像,若未匹配上,返回执行步骤三,直至匹配过待部署镜像的每个父镜像。任一步骤中,当前待选主机匹配上了镜像标签,则不进行接下来的步骤。而一个待选主机被指定为当前待选主机并执行了前述步骤后,指定另一个待选主机执行前述步骤,直至所有待选主机全部执行了上述步骤,即确定了每个待选主机上已部署的待部署镜像的父镜像。
如图7(a),用Mysql:5.4与各个待选主机上已部署的镜像的镜像标签进行匹配,若在某一待选主机上匹配到了Mysql:5.4,由于待选主机上已部署的镜像的镜像标签已经具有依赖关系,则该待选主机上无须继续匹配,如501。若某一待选主机的匹配过程中一直未匹配到Mysql:5.4,则一直在该待选主机已部署的镜像的镜像标签中向下匹配,直至全部镜像标签匹配完毕,如502、503、504。待选主机3的部分匹配过程省略和待选主机4的匹配过程在图中省略。匹配上待部署镜像的镜像标签的待选主机上已部署待部署镜像,也即待选主机1上已部署Mysql:5.4,并且已部署Mysql:5.4的全部父镜像。
随后,将待部署镜像的顶层父镜像的镜像标签,与至少两个待选主机中主机1之外的待选主机上已部署的镜像的镜像标签进行匹配,匹配上待部署镜像的顶层父镜像的镜像标签的待选主机上已部署待部署镜像的父镜像。如图7(b),用Mysql:5.3与各个待选主机进行匹配,在之前步骤已经匹配上的待选主机无须再次进行匹配。具体的匹配过程如508至513。待选主机4的匹配过程在图中省略。匹配上待部署镜像的顶层父镜像的镜像标签的待选主机上已部署待部署镜像的全部父镜像,也即待选主机2上已部署Mysql:5.4的全部父镜像。
随后,将待部署镜像的次一层父镜像的镜像标签,与至少两个待选主机中之前步骤未匹配上的待选主机上已部署的镜像的镜像标签进行匹配,匹配上待部署镜像的次一层父镜像的镜像标签的待选主机上已部署除待部署镜像的顶层父镜像之外的父镜像,如图7(c),用Ubuntu:12.10与各个待选主机进行匹配,在之前步骤已经匹配上的待选主机无须再次进行匹配。具体的匹配过程如514至517。匹配上待部署镜像的次一层父镜像的镜像标签的待选主机上已部署除待部署镜像的顶层父镜像之外的父镜像,即待选主机3上已部署Ubuntu:12.10与基础镜像。重复本步骤,待部署镜像的一层父镜像与各个待选主机匹配完毕后,用该父镜像的顶层父镜像与剩余待选主机匹配,直至匹配过每个待选主机上已部署的镜像的镜像标签。
以上获取每个待选主机上已部署的所述待部署镜像的父镜像的方法,避免了将待部署镜像与各个待选主机上全部的已部署的所述待部署镜像的父镜像逐一比较,提升了匹配效率。
方式2的情况下,待选主机上报给管理节点的为每个镜像族包括的镜像的无依赖关系的镜像标签,因此确定待选主机上已部署的所述待部署镜像的父镜像,需要将待部署镜像的父镜像的镜像标签,与所保存的至少两个待选主机上已部署的镜像的镜像标签进行逐一对比,才能获取各个待选主机上已部署的待部署镜像的父镜像。
方式3的情况下,与方式1的区别在于,首先根据待部署镜像的镜像标签中的应用为索引去查询管理节点中存储的各个主机上已部署的镜像的镜像标签。如图7(d)所示,通过518可知,仅有待选主机1上部署了Mysql:5.4,通过519可知仅有待选主机3上部署了Mysql:5.3,通过520可知待选主机1至4上均部署了Ubuntu:12.10。通过这种镜像标签的存储结构,管理节点可以更快获取各个待选主机上已部署的待部署镜像的父镜像。以上获取每个待选主机上已部署的所述待部署镜像的父镜像的方法,避免了将待部署镜像与各个待选主机上全部的已部署的所述待部署镜像的父镜像逐一比较,提升了匹配效率。
步骤400至步骤410可以由管理节点的容器系统管理模块执行,容器系统管理模块在步骤410中确定了部署主机后,将部署主机的标识发送至容器系统调度模块,容器系统调度模块根据部署主机的标识,指示部署主机部署待部署镜像。
图5对应的镜像部署方法,通过判断各个主机上已经部署的镜像与待部署镜像包括的父镜像的重合程度,选取出部署过程中需要下载的镜像较少的主机来部署待部署镜像,有效提升了待部署镜像的部署速度。
图1或图2中的管理节点还可以通过与图4中的计算设备200的结构相同的计算设备实现。该计算设备包括处理器、存储器,还可以包括总线、通信接口。
其中,处理器、存储器和通信接口可以通过总线实现彼此之间的通信连接,也可以通过无线传输等其他手段实现通信。
存储器可以包括易失性存储器,例如RAM;也可以包括非易失性存储器,例如ROM,快闪存储器,HDD或SSD;存储器还可以包括上述种类的存储器的组合。在通过软件来实现本申请提供的技术方案时,用于实现本申请图8提供的镜像部署方法的程序代码可以保存在存储器中,并由处理器来执行。
该计算设备通过通信接口与镜像库和容器系统的各个主机通信。
处理器可以为CPU。处理器获取待部署镜像的镜像标签,并根据待部署镜像的镜像标签,从镜像库获取待部署镜像的镜像层的层标识。随后从容器系统中的主机中确定至少两个待选主机,即根据各个主机的资源使用信息,以及待部署镜像的资源使用要求,从各个主机中选择能够符合待部署镜像的资源使用要求的待选主机。通过选择待选主机,使得接下来的处理只需针对各个待选主机,无须对容器系统的全部主机进行分析,提升了处理效率。
处理器根据待部署镜像的镜像层的层标识,与每个待选主机上已部署的镜像层的层标识,确定每个待选主机上已部署的待部署镜像的镜像层,最后比较每个待选主机上已部署的待部署镜像的镜像层的层标识,根据比较结果和预定策略为待部署镜像指定部署主机,该部署主机用于部署待部署镜像。预定策略可以为选择已部署待部署镜像的镜像层最多的待选主机作为部署主机,也可以结合其他参数例如各个待选主机的资源使用情况进行选择。
处理器还可以在满足触发时机的情况下,获取并保存获取并保存容器系统中每个主机上已部署的镜像层的层标识。满足触发时机包括:预设了获取各个主机上已部署的镜像层的层标识的周期,该周期到达,管理节点需要获取各个主机上已部署的镜像层的层标识,以刷新管理节点存储的各个主机上的镜像情况;还包括接收到部署容器的指令,例如用户发送请求部署容器,为了部署该容器,管理节点需要获取各个主机上已部署的镜像层的层标识,以选择该容器的部署主机;还包括接收到用户发送给管理节点的收集指令,指示管理节点收集并保存个主机上已部署的镜像层的层标识。
通过部署主机的选择过程,使得该部署主机在下载待部署镜像的过程中,需要下载的数据量较少,提升了镜像部署的速度。
本申请还提供了一种镜像部署方法,图1、图2中的管理节点以及前述的计算设备运行时执行该方法,其流程示意图如图8所示。
步骤602,管理节点获取待部署镜像的镜像标签。
容器系统需要部署某一容器时,管理节点会获取该待部署容器对应的待部署镜像的镜像标签。常见的场景中,根据容器系统预设的伸缩策略或用户发送的请求,容器系统中需要启动容器,则管理节点会接收到该容器对应的镜像的镜像标签,即待部署镜像的镜像标签。
可选的,还执行了步骤600。步骤600与步骤602可以不连续执行,在步骤602执行之前应该至少执行过一次步骤600。
步骤600,管理节点在满足触发时机的情况下,获取并保存容器系统中的主机上已部署的镜像层的层标识。
可选的,管理节点从各个主机获取的为各个主机上全部已部署的镜像层的层标识,以使得后续部署主机的选择过程更为准确。
可选的,满足触发时机包括:预设的周期到达,或接收到部署容器的指令,或接收到用户发送的收集指令,收集指令指示收集并保存容器系统中的主机上已部署的镜像层的层标识。管理节点在预设的周期到达时,获取各个主机上已部署的镜像层的层标识,以更新管理节点上存储的各个主机上已部署的镜像层的层标识。管理节点也可以在接收到部署容器的指令的情况下,向各个主机发送指令,要求各个主机上报各自已部署的镜像层的层标识。管理节点也可以接收用户发送的收集指令后,向各个主机发送指令,要求各个主机上报各自已部署的镜像层的层标识。
需要说明的是,管理节点在镜像部署过程中选择待部署镜像的部署主机时,可以仅利用各个主机上已部署的部分镜像层的层标识,因此,步骤600中可以获取各个主机上已部署的部分镜像层的层标识。
需要说明的是,管理节点在镜像部署过程中选择待部署镜像的部署主机时,可以仅从容器系统中的部分主机中选择待部署镜像的部署主机,因此步骤600中,管理节点可以仅获取并保存容器系统中部分主机上已部署的镜像层的层标识。常见的,可以预设容器系统中的部分主机不参与当前待部署镜像的部署,则管理节点在步骤600中无须获取这部分主机上已部署的镜像层的层标识。
管理节点获取的各个主机上已部署的镜像层的层标识可以为有依赖关系的,或无依赖关系的。以主机5上部署的镜像情况如图3所示为例,管理节点存储的主机5上已部署的镜像层的层标识包括以下几种方式:
方式4,主机5上报给管理节点的为每个镜像族的镜像层的有依赖关系的层标识,如镜像族1,层标识1-层标识2-层标识3-层标识4-层标识5-层标识10;镜像族2,层标识7-层标识8-层标识10,其中“-”指示后一个镜像层为前一个镜像层的父镜像层。
方式5,主机5上报给管理节点的为每个镜像族的镜像层的无依赖关系的层标识,如镜像族1,层标识1、层标识3、层标识2、层标识5、层标识4、层标识10;镜像族2,层标识8、层标识7、层标识10。方式5下,主机5只需上报各个镜像族包括镜像的层标识即可,可以不指示各个镜像族内镜像层之间的依赖关系。进一步的,方式5中,还可以将不同镜像族的相同镜像层的层标识合并,例如镜像族1和镜像族2中,层标识10为重复的,则主机5仅需上报主机5上已部署的镜像的镜像标签包括:层标识1至层标识10。主机5在上报前对其已部署的镜像层的层标识进行合并,可以减少上传到管理节点的数据量,提升管理节点的工作效率。
进一步的,管理节点获取的各个主机上已部署的镜像层的层标识后,可以进一步对各个主机上已部署的镜像层的层标识进行处理后再存储为方式6。以图9为例,若管理获取了主机5到主机8上分别已部署的镜像层的层标识,则可以根据各个主机上已部署的镜像层的层标识中包括的应用名,以应用为索引,记录各个主机上已部署的镜像层的层标识。方式6下,如果管理节点需要查询哪几个主机上部署了Mysql应用对应的镜像层,无须对全部主机进行筛选,仅需根据应用名Mysql,即可获取主机5和主机6,提升了管理节点确定部署待部署镜像的主机的效率。
步骤604,管理节点根据待部署镜像的镜像标签,从镜像库获取待部署镜像的镜像层的层标识。
可选的,管理节点从镜像库获取的为待部署镜像的全部镜像层的层标识,以使得后续部署主机的选择过程更为准确。
可选的,管理节点可以本地存储有一部分镜像的镜像层的层标识,若待部署镜像属于其中之一,则管理节点无须向镜像库请求待部署镜像的镜像层的层标识。
需要说明的是,相应于步骤600中可以获取各个主机上已部署的部分镜像层的层标识,步骤604中管理节点也可以从镜像库获取待部署镜像的部分镜像层的层标识。
步骤604中,从镜像库获取的待部署镜像的镜像层的层标识可以为有依赖关系的,以待部署镜像的镜像标签为Mysql:5.4为例,获取的该镜像的镜像层的层标识如:层标识1-层标识2-层标识3-层标识4-层标识5-层标识10;获取的待部署镜像的镜像层的层标识也可以为无依赖关系的,获取的该镜像的镜像层的层标识如:层标识1、层标识2、层标识5、层标识4、层标识3、层标识10。
步骤606,管理节点从容器系统中的主机中确定至少两个待选主机。
可选的,步骤606之前,管理节点还获取了容器系统中各个主机的资源使用信息,则步骤606包括根据容器系统中主机的资源使用信息,确定满足待部署镜像的资源使用要求的至少两个待选主机。通过待选主机的选取,使得管理节点在后续步骤中仅需从待选主机中选择部署节点,提升了管理节点的工作效率,由于待选主机需要满足待部署镜像的资源使用要求,因此也使得从待选主机中选取的部署节点在资源方面必然能够满足待部署镜像,提升了待部署镜像的部署成功率。
用户向管理节点发出请求,要求管理节点部署该待部署镜像的时候,可以同时发送用户期望的该待部署镜像的资源使用要求,例如CPU使用量、内存使用量等,如果用户没有发送该待部署镜像的资源使用要求,管理节点也会查询历史已部署的镜像的资源使用请求,调用其中存储的该待部署镜像的资源使用要求。管理节点随后结合各个主机的资源使用信息,与待部署镜像的资源使用要求,确定能够满足待部署镜像的资源使用要求的至少两个待选主机。
需要说明的是,步骤604和步骤606的执行顺序不限定。尤其如果先执行步骤606,管理节点从容器系统中的主机中只能确定一个能够满足待部署镜像的资源使用要求的待选主机,则无需执行步骤604及步骤606后的步骤,直接将该待选主机选为待部署镜像的部署主机。
步骤608,管理节点确定每个待选主机上已部署的镜像层的层标识。
在步骤600中,管理节点已经获取容器系统中的每个主机上已部署的镜像层的层标识,则管理节点从中获取每个待选主机上已部署的镜像层的层标识。
步骤610,根据待部署镜像的镜像层的层标识,与每个待选主机上已部署的镜像层的层标识,为待部署镜像指定部署主机,部署主机用于部署该待部署镜像,部署主机上已部署的待部署镜像的镜像层满足预定策略。
步骤610可以包括:将待部署镜像的镜像层的层标识,与每个待选主机上已部署的镜像层的层标识进行匹配,确定每个待选主机上已部署的待部署镜像的镜像层;并将每个待选主机上已部署的待部署镜像的镜像层进行比较,根据比较结果和预定策略指定部署主机,其中,预定策略为选择至少两个待选主机中已部署的待部署镜像的镜像层数量最多的待选主机为部署主机。
需要说明的是,获取了各个待选主机上已部署的待部署镜像的镜像层后,进一步,还可以获取相对于待部署镜像,各个待选主机上缺乏的镜像层的大小,并结合各个待选主机上的资源使用情况选择待部署主机,因此实际运用中,随着预定策略的设计,最后选择的部署主机也可能不是待部署镜像的镜像层数量最多的待选主机。
根据步骤600中,管理节点存储的各个主机上已部署的镜像层的层标识的方式不同,以及步骤604中,从镜像库获取待部署镜像的镜像层的层标识是否有依赖关系,步骤610中管理节点确定每个待选主机上已部署的待部署镜像的镜像层的方式也有所不同。以待部署镜像的镜像标签为Mysql:5.4为例,管理节点获取的该待部署镜像的镜像层的层标识可以为,有依赖关系的层标识1-层标识2-层标识3-层标识4-层标识5-层标识10,或无依赖关系的层标识1、层标识2、层标识5、层标识4、层标识3、层标识10。
如果步骤604中从镜像库获取待部署镜像的镜像层的层标识没有依赖关系,则需要将待部署镜像的镜像层的层标识与各个待选主机上已部署的待部署镜像的镜像层的层标识逐个进行匹配,以确定各个待选主机上已部署的待部署镜像的镜像层。
如果步骤604中从镜像库获取待部署镜像的镜像层的层标识有依赖关系。方式4的情况下,由于各个待选主机上报的已部署的镜像层的层标识之间有依赖关系,如果步骤604中获取的待部署镜像的镜像层的层标识也有依赖关系,则首先从选择出的待选主机中确定当前待选主机,然后根据待部署镜像的镜像层的层标识,与当前待选主机上已部署的镜像层的层标识进行匹配。匹配顺序可以从顶层镜像层向下进行匹配,包括以下步骤:步骤一,将待部署镜像的顶层镜像层的层标识,与当前待选主机上已部署的镜像层的层标识进行匹配,若匹配上,确定当前待选主机上已部署待部署镜像的全部镜像层,若未匹配上,执行步骤二;步骤二,将当前镜像层的层标识,与当前待选主机上已部署的镜像层的层标识进行匹配,当前镜像层为前一步骤中进行了匹配的待部署镜像的镜像层的父镜像层,若匹配上,确定当前待选主机上已部署当前镜像层以下的全部镜像层,此处的当前镜像层以下的镜像层包括当前镜像层的父镜像以及当前镜像层的父镜像层的父镜像层等,若未匹配上,返回执行步骤二,直至匹配过待部署镜像的每个镜像层。任一步骤中,当前待选主机匹配上了镜像层的层标识,则不进行接下来的步骤。而一个待选主机被指定为当前待选主机并执行了前述步骤后,指定另一个待选主机执行前述步骤,直至所有待选主机全部执行了上述步骤,即确定了每个待选主机上已部署的待部署镜像的镜像层。
如图10(a),用层标识1与各个待选主机上已部署的镜像层的层标识进行匹配,若在某一待选主机上匹配到了层标识1,由于待选主机上已部署的镜像层的层标识已经具有依赖关系,则该待选主机上无须继续匹配,如701。若某一待选主机的匹配过程中一直未匹配到层标识1,则一直在该待选主机已部署的镜像层的层标识中向下匹配,直至全部层标识匹配完毕,如702、703、704、705。待选主机7和待选主机8的匹配过程在图中省略。匹配上待部署镜像的顶层镜像层的层标识的待选主机上已部署待部署镜像,也即待选主机5上已部署Mysql:5.4的全部镜像层。
随后,将待部署镜像的次一层镜像层的层标识,与至少两个待选主机中之前步骤未匹配上的待选主机上已部署的镜像层的层标识进行匹配,匹配上待部署镜像的次一层镜像层的层标识的待选主机上已部署待部署镜像的顶层镜像层外的全部镜像层。如图10(b),用层标识2与各个待选主机进行匹配,在之前步骤已经匹配上的待选主机无须再次进行匹配。具体的匹配过程如706至709。待选主机7和待选主机8的匹配过程在图中省略。重复本步骤,待部署镜像的一层镜像层的层标签与各个待选主机匹配完毕后,用该镜像层的父镜像层与剩余待选主机匹配,直至匹配过每个待选主机上已部署的镜像层的层标识。
以上获取每个待选主机上已部署的所述待部署镜像的父镜像的方法,避免了将待部署镜像与各个待选主机上全部的已部署的所述待部署镜像的父镜像逐一比较,提升了匹配效率。
方式5的情况下,待选主机上报给管理节点的为每个镜像族包括的镜像层的无依赖关系的层标识,因此确定待选主机上已部署的所述待部署镜像的镜像层,需要将待部署镜像的镜像层的层标识,与所保存的至少两个待选主机上已部署的镜像层的层标识进行逐一对比,才能获取各个待选主机上已部署的待部署镜像的镜像层。
方式6的情况下,与方式5的区别在于,首先根据待部署镜像的镜像标签中的应用为索引去查询管理节点中存储的各个主机上已部署的镜像层的层标识。如图10(c)所示,首先层标识1至层标识5均属于Mysql的镜像层,因此仅在待选主机5和待选主机6上匹配,因此通过710至714可知仅有待选主机5上部署了层标识1对应镜像层以及其下层镜像层,而待选主机6上部署了层标识4对应镜像层以及其下层镜像层。层标识10对应的镜像层属于Ubuntu,因此通过715可知待选主机5至待选主机8上部署了层标识10对应的镜像层。通过这种镜像标签的存储结构,管理节点可以更快获取各个待选主机上已部署的待部署镜像的镜像层。以上获取每个待选主机上已部署的所述待部署镜像的镜像层的方法,避免了将待部署镜像的镜像层的层标识与各个待选主机上全部的已部署的所述待部署镜像的镜像层的层标识逐一比较,提升了匹配效率。
步骤600至步骤610可以由管理节点的容器系统管理模块执行,容器系统管理模块在步骤610中确定了部署主机后,将部署主机的标识发送至容器系统调度模块,容器系统调度模块根据部署主机的标识,指示部署主机部署待部署镜像。
图8对应的镜像部署方法,通过判断各个主机上已经部署的镜像层与待部署镜像包括的镜像层的重合程度,选取出部署过程中需要下载的镜像层较少的主机来部署待部署镜像,有效提升了待部署镜像的部署速度。
图8对应的镜像部署方法与图5对应的镜像部署方法各有特点,图8对应的镜像部署方法通过待部署镜像的镜像层与已部署的镜像层的比较确定部署主机,更加精确,而图5对应的镜像部署方法通过待部署镜像的父镜像与已部署的镜像的比较确定部署主机,相对镜像层的比较而言,更加快速。实际运用中,这两种镜像部署方法也可以结合使用。
本发明实施例还提供了镜像部署装置800,该装置可以通过图4所示的计算设备200实现,还可以通过专用集成电路(英文:application-specific integrated circuit,缩写:ASIC)实现,或可编程逻辑器件(英文:programmable logic device,缩写:PLD)实现。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:CPLD),FPGA,通用阵列逻辑(英文:generic array logic,缩写:GAL)或其任意组合。该镜像部署装置800用于实现图5所示的镜像部署方法。通过软件实现图5所示的镜像部署方法时,镜像部署装置800也可以为软件模块。
镜像部署装置800的组织结构示意图如图11所示,包括:获取单元802和处理单元804。获取单元802工作时,执行图5所示的镜像部署方法中的步骤400和402以及步骤406中获取容器系统中各个主机的资源使用信息的部分,处理单元804工作时,执行图5所示的镜像部署方法中的步骤404至步骤410及其可选方案。
本镜像部署装置,能够通过判断各个主机上已经部署的镜像与待部署镜像包括的父镜像的重合程度,选取出部署过程中需要下载的镜像较少的主机来部署待部署镜像,有效提升了待部署镜像的部署速度。
本发明实施例还提供了镜像部署装置1000,该装置可以通过图4所示的计算设备200实现,还可以通过ASIC实现,或PLD实现。上述PLD可以是复杂可编程CPLD,FPGA,GAL或其任意组合。该镜像部署装置1000用于实现图8所示的镜像部署方法。通过软件实现图8所示的镜像部署方法时,镜像部署装置1000也可以为软件模块。
镜像部署装置1000的组织结构示意图如图12所示,包括:获取单元1002和处理单元1004。获取单元1002工作时,执行图8所示的镜像部署方法中的步骤600和602及步骤606中获取容器系统中各个主机的资源使用信息的部分,处理单元1004工作时,执行图8所示的镜像部署方法中的步骤604至步骤610及其可选方案。
本镜像部署装置,能够通过判断各个主机上已经部署的镜像层与待部署镜像包括的镜像层的重合程度,选取出部署过程中需要下载的镜像层较少的主机来部署待部署镜像,有效提升了待部署镜像的部署速度。
本发明实施例还提供了运用于图1或图2所示的容器系统的第一种镜像部署方法,包括:
容器系统中的主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像的镜像标签。
可选的,满足触发时机包括:预设的周期到达,或接收到管理节点发送的收集指令,收集指令指示向管理节点发送已部署的镜像的镜像标签,或检测到本地已部署的镜像发生变化。
如图1所示,容器系统的主机上部署了主机镜像管理模块,各个主机的主机镜像管理模块监控本主机上部署的镜像,也即本地部署的镜像,是否发生变化,例如是否有新下载的镜像、用户是否删除了镜像等,如果发生变化,则主机镜像管理模块向管理节点发送本主机上已部署镜像的镜像标签,以更新管理节点上的信息。主机也可以在预设周期到达时,上报其已部署的镜像的镜像标签。主机也可以接收到管理节点发送的收集指令后上报。
管理节点接收并保存容器系统中的主机上已部署的镜像的镜像标签后的动作,参考图5对应的镜像部署方法。
本镜像部署方法,通过判断容器系统的各个主机上已经部署的镜像与待部署镜像包括的父镜像的重合程度,选取出部署过程中需要下载的镜像较少的主机来部署待部署镜像,有效提升了容器系统部署待部署镜像的速度。
本发明实施例还提供了运用于图1或图2所示的容器系统的第二种镜像部署方法,包括:
容器系统中的主机在满足触发时机的情况下,向管理节点发送本地已部署的镜像层的层标识。
可选的,满足触发时机包括:预设的周期到达,或接收到管理节点发送的收集指令,收集指令指示向管理节点发送已部署的镜像的镜像标签,或检测到本地已部署的镜像发生变化。
如图1所示,容器系统的主机上部署了主机镜像管理模块,各个主机的主机镜像管理模块监控本主机上已部署的镜像层,也即本地部署的镜像,是否发生变化,例如是否有新下载的镜像层、用户是否删除了镜像层等,如果发生变化,则主机镜像管理模块向管理节点发送本主机上已部署的镜像层的层标识,以更新管理节点上的信息。主机也可以在预设的周期到达时,上报其已部署的镜像层的层标识。主机也可以接收到管理节点发送的收集指令后上报。
管理节点接收并保存容器系统中的主机上已部署的镜像层的层标识后的动作,参考图8对应的镜像部署方法。
本镜像部署方法,通过判断容器系统的各个主机上已经部署的镜像层与待部署镜像包括的镜像层的重合程度,选取出部署过程中需要下载的镜像层较少的主机来部署待部署镜像,有效提升了容器系统部署待部署镜像的速度。
本发明实施例还提供了第一种容器系统,该容器系统的组织结构示意图如图1或图2所示。该容器系统运行时,执行前述运用于容器系统的第一种镜像部署方法。
本发明实施例还提供了第二种容器系统,该容器系统的组织结构示意图如图1或图2所示。该容器系统运行时,执行前述运用于容器系统的第二种镜像部署方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。图5所示的镜像部署方法的实现细节,可以用于镜像部署装置800,运用于容器系统的第一种镜像部署方法中,由管理节点执行的动作也可以参考图5所示的镜像部署方法。图8所示的镜像部署方法的实现细节,可以用于镜像部署装置1000,运用于容器系统的第二种镜像部署方法中,由管理节点执行的动作也可以参考图8所示的镜像部署方法。
第一种容器系统的管理节点,可以通过计算设备200或镜像部署装置800实现。第二种容器系统的管理节点,可以通过用于执行图8所示的镜像部署方法的计算设备或镜像部署装置1000实现。
结合本申请公开内容所描述的方法可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM、快闪存储器、ROM、可擦除可编程只读存储器(英文:erasable programmable read only memory,缩写:EPROM)、电可擦可编程只读存储器(英文:electrically erasable programmable read only memory,缩写:EEPROM)、硬盘、光盘或者本领域熟知的任何其它形式的存储介质中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件或软件来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、改进等,均应包括在本申请的保护范围之内。

Claims (32)

1.一种镜像部署方法,其特征在于,镜像库中保存多个镜像,每个镜像由镜像标签表示,所述多个镜像包括至少一个镜像族,每个镜像族包括n个镜像,所述n个镜像中的每两个镜像具有父子关系,第1层镜像为基础镜像,第n层镜像的父镜像包括所述第1层到第n-1层镜像,所述n为大于等于2的自然数;
所述部署方法包括:
获取待部署镜像的镜像标签;
根据所述待部署镜像的镜像标签,从所述镜像库获取所述待部署镜像的父镜像的镜像标签;
从容器系统中的主机中确定至少两个待选主机;
确定每个待选主机上已部署的镜像的镜像标签;
根据所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签为所述待部署镜像指定部署主机,所述部署主机用于部署所述待部署镜像,所述部署主机上已部署的所述待部署镜像的父镜像满足预定策略。
2.如权利要求1所述的镜像部署方法,其特征在于,所述方法还包括:在满足触发时机的情况下,获取并保存所述容器系统中的每个主机上已部署的镜像的镜像标签;所述满足触发时机包括:预设的周期到达,或接收到部署容器的指令,或接收到用户发送的收集指令,所述收集指令指示收集并保存所述每个主机上已部署的镜像的镜像标签;
则,根据保存的所述每个主机上已部署的镜像的镜像标签,确定所述每个待选主机上已部署的镜像的镜像标签。
3.如权利要求1或2所述的镜像部署方法,其特征在于,所述从容器系统中的主机中确定至少两个待选主机前,还包括:获取所述每个主机的资源使用信息,所述资源使用信息包括内存使用率或中央处理器使用率;
所述从容器系统中的主机中确定至少两个待选主机包括:
根据所述每个主机的资源使用信息,确定满足所述待部署镜像的资源使用要求的所述至少两个待选主机。
4.如权利要求1或2所述的镜像部署方法,其特征在于,所述根据所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签,为所述待部署镜像指定部署主机包括:
将所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的父镜像;
将所述每个待选主机上已部署的所述待部署镜像的父镜像进行比较,根据比较结果和所述预定策略指定所述部署主机,其中,所述预定策略为选择所述至少两个待选主机中已部署的所述待部署镜像的父镜像数量最多的待选主机为所述部署主机。
5.如权利要求4所述的镜像部署方法,其特征在于,所述将所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的父镜像包括:
从所述至少两个待选主机中确定当前待选主机,将所述当前待选主机依次执行下述步骤,直到确定所述当前待选主机上已部署的所述待部署镜像的父镜像,所述步骤包括:
步骤一,将所述待部署镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定所述当前待选主机上已部署所述待部署镜像,若未匹配上,执行步骤二;
步骤二,将所述待部署镜像的顶层父镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定所述当前待选主机已部署所述待部署镜像的全部父镜像,若未匹配上,执行步骤三;
步骤三,将当前镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,所述当前镜像为前一步骤中进行了匹配的所述待部署镜像的父镜像的顶层父镜像,若匹配上,确定所述当前待选主机上已部署所述当前镜像的全部父镜像,若未匹配上,返回执行步骤三,直至匹配过所述待部署镜像的每个父镜像。
6.一种镜像部署方法,其特征在于,镜像库中保存多个镜像,每个镜像包括至少两个镜像层,每个镜像层由层标识表示,所述每个镜像的至少两个镜像层具有父子关系;
所述部署方法包括:
获取待部署镜像的镜像标签;
根据所述待部署镜像的镜像标签,从所述镜像库获取所述待部署镜像的镜像层的层标识;
从容器系统中的主机中确定至少两个待选主机;
确定每个待选主机上已部署的镜像层的层标识;
根据所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识,为所述待部署镜像指定部署主机,所述部署主机用于部署所述待部署镜像,所述部署主机上已部署的所述待部署镜像的镜像层满足预定策略。
7.如权利要求6所述的镜像部署方法,其特征在于,所述方法还包括:在满足触发时机的情况下,获取并保存所述容器系统中的每个主机上已部署的镜像层的层标识;所述满足触发时机包括:预设的周期到达,或接收到部署容器的指令,或接收到用户发送的收集指令,所述收集指令指示收集并保存所述每个主机已部署的镜像层的层标识;
则,根据保存的所述每个主机上已部署的镜像层的层标识,确定所述每个待选主机上已部署的镜像层的层标识。
8.如权利要求6或7所述的镜像部署方法,其特征在于,所述从容器系统中的主机中确定至少两个待选主机前,还包括:获取所述每个主机的资源使用信息,所述资源使用信息包括内存使用率或中央处理器使用率;
所述从容器系统中的主机中确定至少两个待选主机包括:
根据所述每个主机的资源使用信息,确定满足所述待部署镜像的资源使用要求的所述至少两个待选主机。
9.如权利要求6或7所述的镜像部署方法,其特征在于,所述根据所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识,为所述待部署镜像指定部署主机包括:
将所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的镜像层;
将所述每个待选主机上已部署的所述待部署镜像的镜像层进行比较,根据比较结果和所述预定策略指定所述部署主机,其中,所述预定策略为选择所述至少两个待选主机中已部署的所述待部署镜像的镜像层数量最多的待选主机为所述部署主机。
10.如权利要求9所述的镜像部署方法,其特征在于,将所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的镜像层包括:
从所述至少两个待选主机中确定当前待选主机,将所述当前待选主机依次执行下述步骤,直到确定所述当前待选主机上已部署的所述待部署镜像的镜像层,所述步骤包括:
步骤一,将所述待部署镜像的顶层镜像层的层标识,与所述当前待选主机上已部署的镜像层的层标识进行匹配,若匹配上,确定所述当前待选主机上已部署所述待部署镜像的全部镜像层,若未匹配上,执行步骤二;
步骤二,将当前镜像层的层标识,与所述当前待选主机上已部署的镜像层的层标识进行匹配,所述当前镜像层为前一步骤中进行了匹配的所述待部署镜像的镜像层的父镜像层,若匹配上,确定所述当前待选主机上已部署所述当前镜像层以下的全部镜像层,若未匹配上,返回执行步骤二,直至匹配过所述待部署镜像的每个镜像层。
11.一种镜像部署装置,其特征在于,镜像库中保存多个镜像,每个镜像由镜像标签表示,所述多个镜像包括至少一个镜像族,每个镜像族包括n个镜像,所述n个镜像中的每两个镜像具有父子关系,第1层镜像为基础镜像,第n层镜像的父镜像包括所述第1层到第n-1层镜像,所述n为大于等于2的自然数,所述装置包括:
获取单元,用于获取待部署镜像的镜像标签;
处理单元,用于根据所述待部署镜像的镜像标签,从所述镜像库获取所述待部署镜像的父镜像的镜像标签;还用于从容器系统中的主机中确定至少两个待选主机;还用于确定每个待选主机上已部署的镜像的镜像标签;还用于根据所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签为所述待部署镜像指定部署主机,所述部署主机用于部署所述待部署镜像,所述部署主机上已部署的所述待部署镜像的父镜像满足预定策略。
12.如权利要求11所述的镜像部署装置,其特征在于,所述获取单元,还用于在满足触发时机的情况下,获取并保存所述容器系统中的每个主机上已部署的镜像的镜像标签;所述满足触发时机包括:预设的周期到达,或接收到部署容器的指令,或接收到用户发送的收集指令,所述收集指令指示收集并保存所述每个主机上已部署的镜像的镜像标签;
所述处理单元确定所述每个待选主机上已部署的镜像的镜像标签包括:根据保存的所述每个主机上已部署的镜像的镜像标签,确定所述每个待选主机上已部署的镜像的镜像标签。
13.如权利要求11或12所述的镜像部署装置,其特征在于,所述获取单元,还用于获取所述每个主机的资源使用信息,所述资源使用信息包括内存使用率或中央处理器使用率;
所述处理单元从容器系统中的主机中确定至少两个待选主机包括:根据所述每个主机的资源使用信息,确定满足所述待部署镜像的资源使用要求的所述至少两个待选主机。
14.如权利要求11或12所述的镜像部署装置,其特征在于,所述处理单元根据所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签,为所述待部署镜像指定部署主机包括:
将所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的父镜像;将所述每个待选主机上已部署的所述待部署镜像的父镜像进行比较,根据比较结果和所述预定策略指定所述部署主机,其中,所述预定策略为选择所述至少两个待选主机中已部署的所述待部署镜像的父镜像数量最多的待选主机为所述部署主机。
15.如权利要求14所述的镜像部署装置,其特征在于,所述处理单元将所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的父镜像包括:
从所述至少两个待选主机中确定当前待选主机,将所述当前待选主机依次执行下述步骤,直到确定所述当前待选主机上已部署的所述待部署镜像的父镜像,所述步骤包括:
步骤一,将所述待部署镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定所述当前待选主机上已部署所述待部署镜像,若未匹配上,执行步骤二;
步骤二,将所述待部署镜像的顶层父镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定所述当前待选主机已部署所述待部署镜像的全部父镜像,若未匹配上,执行步骤三;
步骤三,将当前镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,所述当前镜像为前一步骤中进行了匹配的所述待部署镜像的父镜像的顶层父镜像,若匹配上,确定所述当前待选主机上已部署所述当前镜像的全部父镜像,若未匹配上,返回执行步骤三,直至匹配过所述待部署镜像的每个父镜像。
16.一种镜像部署装置,其特征在于,镜像库中保存多个镜像,每个镜像包括至少两个镜像层,每个镜像层由层标识表示,所述每个镜像的至少两个镜像层具有父子关系,所述装置包括:
获取单元,用于获取待部署镜像的镜像标签;
处理单元,用于根据所述待部署镜像的镜像标签,从所述镜像库获取所述待部署镜像的镜像层的层标识;还用于从容器系统中的主机中确定至少两个待选主机;还用于确定每个待选主机上已部署的镜像层的层标识;还用于根据所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识,为所述待部署镜像指定部署主机,所述部署主机用于部署所述待部署镜像,所述部署主机上已部署的所述待部署镜像的镜像层满足预定策略。
17.如权利要求16所述的镜像部署装置,其特征在于,所述获取单元,还用于在满足触发时机的情况下,获取并保存所述容器系统中的每个主机上已部署的镜像层的层标识;所述满足触发时机包括:预设的周期到达,或接收到部署容器的指令,或接收到用户发送的收集指令,所述收集指令指示收集并保存所述每个主机已部署的镜像层的层标识;
所述处理单元确定所述每个待选主机上已部署的镜像层的层标识包括:根据保存的所述每个主机上已部署的镜像层的层标识,确定所述每个待选主机上已部署的镜像层的层标识。
18.如权利要求16或17所述的镜像部署装置,其特征在于,所述获取单元,还用于获取所述每个主机的资源使用信息,所述资源使用信息包括内存使用率或中央处理器使用率;
所述处理单元从容器系统中的主机中确定至少两个待选主机包括:根据所述每个主机的资源使用信息,确定满足所述待部署镜像的资源使用要求的所述至少两个待选主机。
19.如权利要求16或17所述的镜像部署装置,其特征在于,所述处理单元根据所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识,为所述待部署镜像指定部署主机包括:
将所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的镜像层;将所述每个待选主机上已部署的所述待部署镜像的镜像层进行比较,根据比较结果和所述预定策略指定所述部署主机,其中,所述预定策略为选择所述至少两个待选主机中已部署的所述待部署镜像的镜像层数量最多的待选主机为所述部署主机。
20.如权利要求19所述的镜像部署装置,其特征在于,所述处理单元将所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的镜像层包括:
从所述至少两个待选主机中确定当前待选主机,将所述当前待选主机依次执行下述步骤,直到确定所述当前待选主机上已部署的所述待部署镜像的镜像层,所述步骤包括:
步骤一,将所述待部署镜像的顶层镜像层的层标识,与所述当前待选主机上已部署的镜像层的层标识进行匹配,若匹配上,确定所述当前待选主机上已部署所述待部署镜像的全部镜像层,若未匹配上,执行步骤二;
步骤二,将当前镜像层的层标识,与所述当前待选主机上已部署的镜像层的层标识进行匹配,所述当前镜像层为前一步骤中进行了匹配的所述待部署镜像的镜像层的父镜像层,若匹配上,确定所述当前待选主机上已部署所述当前镜像层以下的全部镜像层,若未匹配上,返回执行步骤二,直至匹配过所述待部署镜像的每个镜像层。
21.一种计算设备,其特征在于,包括处理器、存储器,所述处理器与所述存储器建立通信连接;
所述处理器用于读取所述存储器中的程序执行如权利要求1至5任一项所述的镜像部署方法。
22.一种计算设备,其特征在于,包括处理器、存储器,所述处理器与所述存储器建立通信连接;
所述处理器用于读取所述存储器中的程序执行如权利要求6至10任一项所述的镜像部署方法。
23.一种镜像部署方法,其特征在于,所述部署方法运用于容器系统,所述容器系统包括管理节点,与所述容器系统通信的镜像库中保存多个镜像,每个镜像由镜像标签表示,所述多个镜像包括至少一个镜像族,每个镜像族包括n个镜像,所述n个镜像中的每两个镜像具有父子关系,第1层镜像为基础镜像,第n层镜像的父镜像包括所述第1层到第n-1层镜像,所述n为大于等于2的自然数;
所述部署方法包括:
所述管理节点获取待部署镜像的镜像标签;
所述管理节点根据所述待部署镜像的镜像标签,从所述镜像库获取所述待部署镜像的父镜像的镜像标签;
所述管理节点从容器系统中的主机中确定至少两个待选主机;
所述管理节点确定每个待选主机上已部署的镜像的镜像标签;
所述管理节点根据所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签为所述待部署镜像指定部署主机,所述部署主机用于部署所述待部署镜像,所述部署主机上已部署的所述待部署镜像的父镜像满足预定策略。
24.如权利要求23所述的镜像部署方法,其特征在于,所述方法还包括:在满足触发时机的情况下,所述容器系统中的每个主机向所述管理节点发送本地已部署的镜像的镜像标签;所述管理节点获取并保存所述每个主机上已部署的镜像的镜像标签;所述满足触发时机包括:预设的周期到达,或接收到所述管理节点发送的收集指令,所述收集指令指示向所述管理节点发送已部署的镜像的镜像标签,或检测到本地已部署的镜像发生变化;
则,所述管理节点根据保存的所述每个主机上已部署的镜像的镜像标签,确定所述每个待选主机上已部署的镜像的镜像标签。
25.如权利要求23或24所述的镜像部署方法,其特征在于,所述管理节点从容器系统中的主机中确定至少两个待选主机前,还包括:获取所述每个主机的资源使用信息,所述资源使用信息包括内存使用率或中央处理器使用率;
所述管理节点从容器系统中的主机中确定至少两个待选主机包括:根据所述每个主机的资源使用信息,确定满足所述待部署镜像的资源使用要求的所述至少两个待选主机。
26.如权利要求23或24所述的镜像部署方法,其特征在于,所述管理节点根据所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签,为所述待部署镜像指定部署主机包括:
所述管理节点将所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的父镜像;
所述管理节点将所述每个待选主机上已部署的所述待部署镜像的父镜像进行比较,根据比较结果和所述预定策略指定所述部署主机,其中,所述预定策略为选择所述至少两个待选主机中已部署的所述待部署镜像的父镜像数量最多的待选主机为所述部署主机。
27.如权利要求26所述的镜像部署方法,其特征在于,所述管理节点将所述待部署镜像的父镜像的镜像标签,与所述每个待选主机上已部署的镜像的镜像标签进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的父镜像包括:
所述管理节点从所述至少两个待选主机中确定当前待选主机,将所述当前待选主机依次执行下述步骤,直到确定所述当前待选主机上已部署的所述待部署镜像的父镜像,所述步骤包括:
步骤一,将所述待部署镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定所述当前待选主机上已部署所述待部署镜像,若未匹配上,执行步骤二;
步骤二,将所述待部署镜像的顶层父镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,若匹配上,确定所述当前待选主机已部署所述待部署镜像的全部父镜像,若未匹配上,执行步骤三;
步骤三,将当前镜像的镜像标签,与所述当前待选主机上已部署的镜像的镜像标签进行匹配,所述当前镜像为前一步骤中进行了匹配的所述待部署镜像的父镜像的顶层父镜像,若匹配上,确定所述当前待选主机上已部署所述当前镜像的全部父镜像,若未匹配上,返回执行步骤三,直至匹配过所述待部署镜像的每个父镜像。
28.一种镜像部署方法,其特征在于,所述部署方法运用于容器系统,所述容器系统包括管理节点,与所述容器系统通信的镜像库中保存多个镜像,每个镜像包括至少两个镜像层,每个镜像层由层标识表示,所述每个镜像的至少两个镜像层具有父子关系;
所述部署方法包括:
所述管理节点获取待部署镜像的镜像标签;
所述管理节点根据所述待部署镜像的镜像标签,从所述镜像库获取所述待部署镜像的镜像层的层标识;
所述管理节点从容器系统中的主机中确定至少两个待选主机;
所述管理节点确定每个待选主机上已部署的镜像层的层标识;
所述管理节点根据所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识,为所述待部署镜像指定部署主机,所述部署主机用于部署所述待部署镜像,所述部署主机上已部署的所述待部署镜像的镜像层满足预定策略。
29.如权利要求28所述的镜像部署方法,其特征在于,所述方法还包括:在满足触发时机的情况下,所述容器系统中的每个主机向所述管理节点发送本地已部署的镜像层的层标识;所述管理节点获取并保存所述每个主机上已部署的镜像层的层标识;所述满足触发时机包括:预设的周期到达,或接收到所述管理节点发送的收集指令,所述收集指令指示向所述管理节点发送已部署的镜像层的层标识,或检测到本地已部署的镜像层发生变化;
则,所述管理节点根据保存的所述每个主机上已部署的镜像层的层标识,确定所述每个待选主机上已部署的镜像层的层标识。
30.如权利要求28或29所述的镜像部署方法,其特征在于,所述管理节点从容器系统中的主机中确定至少两个待选主机前,还包括:获取所述每个主机的资源使用信息,所述资源使用信息包括内存使用率或中央处理器使用率;
所述管理节点从容器系统中的主机中确定至少两个待选主机包括:根据所述每个主机的资源使用信息,确定满足所述待部署镜像的资源使用要求的所述至少两个待选主机。
31.如权利要求28或29所述的镜像部署方法,其特征在于,所述管理节点根据所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识,为所述待部署镜像指定部署主机包括:
所述管理节点将所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的镜像层;
所述管理节点将所述每个待选主机上已部署的所述待部署镜像的镜像层进行比较,根据比较结果和所述预定策略指定所述部署主机,其中,所述预定策略为选择所述至少两个待选主机中已部署的所述待部署镜像的镜像层数量最多的待选主机为所述部署主机。
32.如权利要求31所述的镜像部署方法,其特征在于,所述管理节点将所述待部署镜像的镜像层的层标识,与所述每个待选主机上已部署的镜像层的层标识进行匹配,确定所述每个待选主机上已部署的所述待部署镜像的镜像层包括:
所述管理节点从所述至少两个待选主机中确定当前待选主机,将所述当前待选主机依次执行下述步骤,直到确定所述当前待选主机上已部署的所述待部署镜像的镜像层,所述步骤包括:
步骤一,将所述待部署镜像的顶层镜像层的层标识,与所述当前待选主机上已部署的镜像层的层标识进行匹配,若匹配上,确定所述当前待选主机上已部署所述待部署镜像的全部镜像层,若未匹配上,执行步骤二;
步骤二,将当前镜像层的层标识,与所述当前待选主机上已部署的镜像层的层标识进行匹配,所述当前镜像层为前一步骤中进行了匹配的所述待部署镜像的镜像层的父镜像层,若匹配上,确定所述当前待选主机上已部署所述当前镜像层以下的全部镜像层,若未匹配上,返回执行步骤二,直至匹配过所述待部署镜像的每个镜像层。
CN201580009116.4A 2015-12-31 2015-12-31 镜像部署方法和装置 Active CN107431720B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/100291 WO2017113374A1 (zh) 2015-12-31 2015-12-31 镜像部署方法和装置

Publications (2)

Publication Number Publication Date
CN107431720A CN107431720A (zh) 2017-12-01
CN107431720B true CN107431720B (zh) 2019-11-29

Family

ID=59224365

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580009116.4A Active CN107431720B (zh) 2015-12-31 2015-12-31 镜像部署方法和装置

Country Status (4)

Country Link
US (1) US10552133B2 (zh)
EP (1) EP3211859B1 (zh)
CN (1) CN107431720B (zh)
WO (1) WO2017113374A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10614117B2 (en) * 2017-03-21 2020-04-07 International Business Machines Corporation Sharing container images between mulitple hosts through container orchestration
CN107590033B (zh) * 2017-09-07 2021-06-22 网宿科技股份有限公司 一种创建docker容器的方法、装置和系统
CN109542493A (zh) * 2017-09-22 2019-03-29 华为技术有限公司 一种镜像升级方法及设备
US10949250B2 (en) 2018-02-07 2021-03-16 Red Hat, Inc. Image subunit based guest scheduling
WO2019165573A1 (zh) * 2018-02-27 2019-09-06 深圳中兴力维技术有限公司 一种基于Docker的镜像同步方法、装置及系统
US10922118B2 (en) 2018-05-11 2021-02-16 International Business Machines Corporation Distributed container image repository service
CN108984268A (zh) * 2018-07-13 2018-12-11 郑州云海信息技术有限公司 Docker系统中容器管理的方法和装置
CN110896404B (zh) * 2018-09-12 2021-09-14 华为技术有限公司 数据处理的方法、装置和计算节点
US10838702B2 (en) 2018-11-09 2020-11-17 International Business Machines Corporation Analyzing and optimizing container images in cloud computing
CN111190608B (zh) * 2018-11-14 2022-09-16 佛山市顺德区顺达电脑厂有限公司 用于待测装置的作业系统布署方法
CN111198745A (zh) * 2018-11-16 2020-05-26 北京京东尚科信息技术有限公司 容器创建的调度方法、装置、介质及电子设备
US11132210B2 (en) 2019-05-09 2021-09-28 International Business Machines Corporation Dynamic parallelism adjustment
CN110704162B (zh) * 2019-09-27 2022-09-20 北京百度网讯科技有限公司 物理机共享容器镜像的方法、装置、设备及存储介质
US11748171B2 (en) * 2020-03-17 2023-09-05 Dell Products L.P. Method and system for collaborative workload placement and optimization
CN111414234A (zh) * 2020-03-20 2020-07-14 深圳市网心科技有限公司 镜像容器创建方法及装置、计算机装置及存储介质
WO2021197579A1 (en) * 2020-03-31 2021-10-07 Telefonaktiebolaget Lm Ericsson (Publ) Method for deploying application software in cloud environments
CN113934506A (zh) * 2020-06-29 2022-01-14 伊姆西Ip控股有限责任公司 管理容器的映像的方法、设备和计算机程序产品
US11281443B1 (en) * 2020-07-31 2022-03-22 Tableau Software, LLC Organizing deployment packages for software applications and services
CN112269694B (zh) * 2020-10-23 2023-12-22 北京浪潮数据技术有限公司 一种管理节点确定方法、装置、电子设备及可读存储介质
CN112714163B (zh) * 2020-12-22 2022-06-10 北京百度网讯科技有限公司 数据传输方法、装置、电子设备和介质
US12039314B2 (en) * 2021-01-15 2024-07-16 Palantir Technologies Inc. System and methods for using container layers to facilitate cloud resource sharing and decrease startup times
US11928452B2 (en) * 2022-02-03 2024-03-12 Red Hat, Inc. Reducing the size of image files usable for deploying software in computing environments
US12045595B2 (en) * 2022-06-14 2024-07-23 Sap Se Low-/no-code packaging of application based on artifacts and universal tags
CN116700902B (zh) * 2023-06-25 2024-03-12 天津大学 一种镜像层异步并行提取的容器加速部署方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101594387A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 虚拟集群部署方法和系统
CN102088367A (zh) * 2010-12-10 2011-06-08 北京世纪互联工程技术服务有限公司 虚拟化环境下快速部署方法
CN103037002A (zh) * 2012-12-21 2013-04-10 中标软件有限公司 一种云计算集群环境中服务器集群的部署方法及系统
CN103514023A (zh) * 2013-10-22 2014-01-15 中国科学院信息工程研究所 一种虚拟机离线自动软件安装的方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116768B1 (en) * 2014-11-20 2015-08-25 Symantec Corporation Systems and methods for deploying applications included in application containers
CN104809025B (zh) * 2015-04-29 2018-06-22 北京奇艺世纪科技有限公司 一种项目上线方法及装置
US10365976B2 (en) * 2015-07-28 2019-07-30 Vmware, Inc. Scheduling and managing series of snapshots
US9965261B2 (en) * 2015-08-18 2018-05-08 International Business Machines Corporation Dependency-based container deployment
US9639558B2 (en) * 2015-09-17 2017-05-02 International Business Machines Corporation Image building
US10002247B2 (en) * 2015-12-18 2018-06-19 Amazon Technologies, Inc. Software container registry container image deployment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101594387A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 虚拟集群部署方法和系统
CN102088367A (zh) * 2010-12-10 2011-06-08 北京世纪互联工程技术服务有限公司 虚拟化环境下快速部署方法
CN103037002A (zh) * 2012-12-21 2013-04-10 中标软件有限公司 一种云计算集群环境中服务器集群的部署方法及系统
CN103514023A (zh) * 2013-10-22 2014-01-15 中国科学院信息工程研究所 一种虚拟机离线自动软件安装的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A simulation as a service cloud middleware;SHEKHAR SHASHANK等;《ANNALES DES COMMUNICATIONS- ANNALS OF TELECOMMUNICATIONS》;20150902;第71卷(第3期);第93-108页 *

Also Published As

Publication number Publication date
WO2017113374A1 (zh) 2017-07-06
EP3211859A1 (en) 2017-08-30
EP3211859A4 (en) 2017-10-25
US10552133B2 (en) 2020-02-04
EP3211859B1 (en) 2018-11-14
CN107431720A (zh) 2017-12-01
US20170220329A1 (en) 2017-08-03

Similar Documents

Publication Publication Date Title
CN107431720B (zh) 镜像部署方法和装置
US10447806B1 (en) Workload scheduling across heterogeneous resource environments
US11003476B2 (en) Entity database historical data
RU2646323C2 (ru) Технологии для выделения конфигурируемых вычислительных ресурсов
US11520506B2 (en) Techniques for implementing fault domain sets
CN1996847B (zh) 基于协作网格的图像及多媒体数据通信与存储系统
CN104486445B (zh) 一种基于云平台的分布式可扩展资源监控系统
CN104618693B (zh) 一种基于云计算的监控视频在线处理任务管理方法及系统
CN103238136B (zh) 对于异构迁移环境的虚拟机变化
CN106067080B (zh) 提供可配置工作流能力
US9716746B2 (en) System and method using software defined continuity (SDC) and application defined continuity (ADC) for achieving business continuity and application continuity on massively scalable entities like entire datacenters, entire clouds etc. in a computing system environment
US20150074671A1 (en) Anticipatory warm-up of cluster resources for jobs processed on multiple cluster nodes
CN110417613A (zh) 基于Jmeter的分布式性能测试方法、装置、设备及存储介质
CN108243012B (zh) 在线计费系统ocs中计费应用处理系统、方法及装置
CN102035862A (zh) Svc集群中配置节点的故障移交方法和系统
CN109933338B (zh) 区块链部署方法、装置、计算机设备和存储介质
CN106295220A (zh) 一种医疗数据管理方法、装置及医疗数据系统
Hu et al. A green private cloud architecture with global collaboration
CN111752723B (zh) 一种可视化的多源服务管理系统及其实现方法
CN109902028A (zh) Acl特性的自动化测试方法、装置、设备及存储介质
CN102790788B (zh) 一种网格资源管理系统
Sato et al. Access-pattern and bandwidth aware file replication algorithm in a grid environment
CN116881012A (zh) 一种容器应用垂直扩容方法、装置、设备及可读存储介质
CN103631635B (zh) 用于使用预调配的变异模板来创建虚拟机的方法和系统
US20200028739A1 (en) Method and apparatus for closed-loop and dynamic capacity management in a web-scale data center

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220224

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.