CN113391875A - 容器部署方法与装置 - Google Patents
容器部署方法与装置 Download PDFInfo
- Publication number
- CN113391875A CN113391875A CN202010177117.2A CN202010177117A CN113391875A CN 113391875 A CN113391875 A CN 113391875A CN 202010177117 A CN202010177117 A CN 202010177117A CN 113391875 A CN113391875 A CN 113391875A
- Authority
- CN
- China
- Prior art keywords
- mirror image
- working node
- identification information
- node
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000004044 response Effects 0.000 claims description 38
- 230000015654 memory Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 19
- 230000009286 beneficial effect Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 13
- 230000009471 action Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 11
- 230000010354 integration Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000839 emulsion Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Abstract
本申请公开了容器部署方法与装置,有助于提升镜像层的下载效率和节省镜像层的存储空间。该方法应用于分布式系统中的第一工作节点,该分布式系统还包括第二工作节点,第二工作节点中存储有第一镜像层。该方法包括:获取多个镜像层的标识信息。其中,该多个镜像层是第一工作节点部署容器所需要的目标容器镜像的镜像层,该多个镜像层包括第一镜像层。如果基于第一镜像层的标识信息,确定第二工作节点中存储有第一镜像层,则从第二工作节点中获取第一镜像层。将所获取的多个镜像层合并为第二镜像层。基于第二镜像层部署容器。
Description
技术领域
本申请涉及虚拟化技术领域,尤其涉及容器部署方法与装置。
背景技术
容器(container)技术是一种轻量级的虚拟化技术。当前,容器技术被广泛应用于分布式系统(如:kubernetes)中。分布式系统架构如图1所示,包括服务器、主节点(masternode)和多个工作节点(worker node)。其中,服务器中包括容器镜像。容器镜像是指部署容器时所需的资源文件,如操作系统、软件环境和应用程序等内容。通常使用联合文件系统(union file system)实现容器镜像的管理。联合文件系统是一种分层的文件系统,在联合文件系统中容器镜像包括多个镜像层(image layer),每个镜像层中包括与该镜像层的父镜像层的差异部分。主节点负责控制和管理工作节点,工作节点是工作负载节点,容器部署在工作节点中。
在分布式系统中的一个工作节点中部署容器时,需要从服务器下载该容器所需要的镜像层,并将这些镜像层都存储在该工作节点中。该过程具体如下:待部署容器的工作节点向服务器发送超文本传输协议(hyper text transfer protocol,HTTP)或超文本传输安全协议(hyper text transfer protocol over secure socket layer,HTTPS)请求,该请求用于请求获取镜像层,服务器根据该请求获取镜像层,之后向上述待部署容器的工作节点发送获取到的镜像层。待部署容器的工作节点将获取的镜像层全部存储在该待部署容器的工作节点中。这样,每当一个工作节点需要部署容器时都需要从服务器下载部署该容器所需要的镜像层,下载效率低,每个工作节点将获取的所有镜像层存储在本地浪费存储空间。
发明内容
本申请的实施例提供容器部署方法与装置,能够提升容器镜像的镜像层的下载效率和节省镜像层的存储空间。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供一种容器部署方法,应用于分布式系统中的第一工作节点,该分布式系统还包括第二工作节点,第二工作节点中存储有第一镜像层。该方法包括:获取多个镜像层的标识信息。其中,多个镜像层是第一工作节点部署容器所需要的目标容器镜像的镜像层,多个镜像层包括第一镜像层。如果基于第一镜像层的标识信息,确定第二工作节点中存储有第一镜像层,则从第二工作节点中获取第一镜像层。将所获取的多个镜像层合并为第二镜像层,基于第二镜像层部署容器。
这样,第一工作节点下载第一镜像层时不会受连接服务器的网络带宽和服务器负载的影响,从而提高了下载效率。对于目标容器镜像的一个镜像层来说,在分布式系统内只需要一个工作节点从服务器下载该镜像层,其余工作节点,如果需要使用该镜像层都可以从该工作节点中获取该镜像层。第一工作节点在获取到多个镜像层之后,将多个镜像层合并为第二镜像层。第一工作节点基于第二镜像层部署容器。这样,第一工作节点从其他工作节点中获取的目标容器镜像的镜像层就不必存储在第一工作节点中,而只用存储从服务器获取的目标容器镜像的镜像层,解决了容器镜像的镜像层在分布式系统中重复下载、重复存储的问题,从而节省了镜像层的存储空间,提高了镜像层的下载效率。使用合并得到的第二镜像层部署容器,减少了容器包括的镜像层的数量,从而简化了容器调度镜像层时的调度算法。
根据第一方面,在第一方面的第一种实现方式中,如果基于第一镜像层的标识信息,确定第二工作节点中存储有第一镜像层,则从第二工作节点中获取第一镜像层,包括:如果基于第一镜像层的标识信息,确定第二工作节点中存储有第一镜像层,则将第二工作节点中存储的第一镜像层挂载在第一工作节点中。访问第二工作节点中的第一镜像层,以获取第一镜像层。
根据第一方面或第一方面的第一种实现方式,在第一方面的第二种实现方式中,该分布式系统还包括记录节点,记录节点中包括工作节点的标识信息与本工作节点中存储的目标容器镜像的镜像层的标识信息之间的对应关系。该方法还包括:向记录节点发送请求消息。其中,请求消息用于请求查询存储有第一镜像层的工作节点,请求消息包括第一镜像层的标识信息。接收记录节点发送的响应消息。其中,响应消息包括第二工作节点的标识信息。示例的,记录节点可以是服务器或主节点或任意一个除第一工作节点之外的工作节点。
根据第一方面至第一方面的第二种实现方式中的任一种实现方式,在第一方面的第三种实现方式中,该方法还包括:向记录节点发送第一工作节点的标识信息、第二镜像层以及多个镜像层中最高层的镜像层的标识信息之间的对应关系。这样,分布式系统中除第一工作节点之外的任意一个第二工作节点需要获取得到第二镜像层所使用的多个镜像层时,可以从第一工作节点中获取第二镜像层,这样,进一步提高了第二工作节点获取目标容器镜像的镜像层的效率。
根据第一方面至第一方面的第三种实现方式中的任一种实现方式,在第一方面的第四种实现方式中,该方法还包括:向分布式系统中的其他工作节点发送第一镜像层的标识信息。其他工作节点为分布式系统中除第一工作节点之外的工作节点。其他工作节点包括第二工作节点。接收第二工作节点发送的指示信息,该指示信息用于指示第二工作节点中存储有第一镜像层的标识信息。这样,不需要专门存储工作节点的标识信息与本工作节点中存储的目标容器镜像的镜像层的标识信息之间的对应关系,从而节省了存储开销。
根据第一方面至第一方面的第四种实现方式中的任一种实现方式,在第一方面的第五种实现方式中,将所获取的多个镜像层合并为第二镜像层,包括:使用联合文件系统将多个镜像层合并为第二镜像层。
第二方面,提供一种容器部署方法,应用于分布式系统中的记录节点,该分布式系统还包括第一工作节点和第二工作节点,该方法包括:接收第一工作节点发送的请求消息。请求消息用于请求查询存储有第一镜像层的工作节点,第一镜像层是第一工作节点部署容器所需要的目标容器镜像的多个镜像层中一个镜像层。请求消息包括第一镜像层的标识信息。根据多个工作节点的标识信息中每个工作节点的标识信息与每个工作节点存储的镜像层的标识信息之间的对应关系,获取第一镜像层的标识信息对应的第二工作节点的标识信息。向第一工作节点发送响应消息。其中,响应消息包括第二工作节点的标识信息。响应消息用于第一工作节点部署容器时,访问第二工作节点中的第一镜像层以合并多个镜像层得到第二镜像层。这样,记录节点能够向第一工作节点提供第一镜像层存储的工作节点。第一工作节点部署容器时,只用存储从服务器获取的目标容器镜像的镜像层,解决了容器镜像的镜像层在分布式系统中重复下载、重复存储的问题,从而节省了镜像层的存储空间。
根据第二方面,在第二方面的第一种实现方式中,该方法还包括:接收第二工作节点发送的第一消息。第一消息包括第二工作节点的标识信息与第一镜像层的标识信息之间的对应关系。存储第二工作节点的标识信息与第一镜像层的标识信息之间的对应关系。
根据第二方面至第二方面的第一种实现方式中的任一种实现方式,在第二方面的第二种实现方式中,该方法还包括:接收第一工作节点发送的第一工作节点的标识信息、第二镜像层的标识信息以及多个镜像层中最高层的镜像层的标识信息之间的对应关系。存储第一工作节点的标识信息、第二镜像层的标识信息以及所述多个镜像层中最高层的镜像层的标识信息之间的对应关系。这样,在分布式系统中的其他工作节点需要获取目标容器镜像的多个镜像层时,记录节点可以提供第二镜像层存储的工作节点为第一工作节点,其他工作节点可以从第一工作节点中获取第二镜像层用于部署容器。其他工作节点为分布式系统中除第一工作节点之外的工作节点。进一步提高了分布式系统中工作节点部署容器的效率。
第三方面,提供一种容器部署装置,该容器部署装置可用于执行上述第一方面至第二方面的任一种可能的实现方式中提供的任一种方法。示例的,该部署装置可以是工作节点、记录节点、计算机可读存储介质或芯片等。
根据第一方面至第二方面的任一种可能的实现方式中,在第三方面的第一种可能的实现方式中,可以根据上述第一方面至第二方面提供的任一种方法,对该部署装置进行功能模块的划分。例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。
根据第一方面至第二方面的任一种可能的实现方式中,在第三方面的第二种可能的实现方式中,该部署装置可以包括处理器,处理器用于执行上述第一方面至第二方面提供的任一种方法。
第四方面,提供了一种分布式系统,该分布式系统包括工作节点和记录节点。其中,工作节点用于执行上述第一方面至第一方面的任一种可能的实现方式提供的任一种方法。记录节点用于执行上述第二方面至第二方面的任一种可能的实现方式提供的任一种方法。
第五方面,提供了一种计算机可读存储介质,如计算机非瞬态的可读存储介质。其上储存有计算机程序(或指令),当该计算机程序(或指令)在计算机上运行时,使得该计算机执行上述第一方面至第二方面的任一种可能的实现方式提供的任一种方法。
第六方面,提供了一种计算机程序产品,当其在计算机上运行时,使得第一方面至第二方面的任一种可能的实现方式提供的任一种方法被执行。
第七方面,提供了一种芯片,包括:处理器,用于从存储器中调用并运行该存储器中存储的计算机程序,执行第一方面至第二方面的任一种可能的实现方式提供的任一种方法。
可以理解的是,上述提供的任一种容器部署装置、分布式系统、计算机可读存储介质、计算机程序产品或芯片等均可以应用于上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的技术方案所适用的一种分布式系统架构图;
图2为可适用于本申请实施例的网络架构图;
图3为本申请实施例提供的技术方案所适用的一种计算机设备的结构示意图;
图4为本申请实施例提供的技术方案所适用的容器的结构示意图;
图5为本申请实施例提供的技术方案所适用的镜像层的结构示意图;
图6为本申请实施例提供的技术方案所适用的容器的结构示意图与容器镜像的结构示意图;
图7为本申请实施例提供的一种容器部署方法的流程示意图;
图8为本申请实施例提供的一种容器镜像的镜像层合并示意图;
图9为第一工作节点基于整合镜像层三部署得到的容器80的结构示意图;
图10为本申请实施例提供的另一种容器部署方法的流程示意图;
图11为本申请实施例提供的另一种容器部署方法的流程示意图;
图12为本申请实施例提供的一种工作节点的结构示意图;
图13为本申请实施例提供的一种记录节点的结构示意图。
具体实施方式
如图2所示为可适用于本申请实施例的网络架构图。图2中的网络架构图中包括汇聚层网络设备201、接入层网络设备202和计算机设备203。汇聚层网络设备201为接入层网络设备202提供数据的汇聚\传输\管理\分发处理。接入层网络设备202用于连接计算机设备203,使得计算机设备203接入网络。图2中的汇聚层网络设备201和接入层网络设备202上的操作系统(operating system,OS)协议栈支持访问外网。
在一个示例中,图2中的多个计算机设备203可以组成一个局域网,该局域网构成上述图1所示的分布式系统。该局域网中的一些计算机设备203可以具备图1中服务器的功能,一些计算机设备203可以具备图1中主节点的功能,一些计算机设备203可以具备图1中工作节点的功能。
如图3所示,为本申请实施例提供的技术方案所适用的一种计算机设备的结构示意图。图3所示的计算机设备203可以包括至少一个处理器101,通信线路102,存储器103以及至少一个通信接口104。
处理器101可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路102可包括至少一条通路,比如数据总线,和/或控制总线,用于在上述组件(如至少一个处理器101,通信线路102,存储器103以及至少一个通信接口104)之间传送信息。
通信接口104,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如广域网(wide area network,WAN),局域网(local area networks,LAN)等。
存储器103,可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器103可以是独立存在,通过通信线路102与处理器101相连接。存储器103也可以和处理器101集成在一起。本申请实施例提供的存储器103通常包括非易失性存储器。其中,存储器103用于存储执行本申请方案的计算机指令,并由处理器101来控制执行。处理器101用于执行存储器103中存储的计算机指令,从而实现本申请下述实施例提供的方法。
存储器103包括内存和硬盘。
可选的,本申请实施例中的计算机指令也可以称之为应用程序代码或系统,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,计算机设备203可以包括多个处理器,这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备203还可以包括输出设备105和/或输入设备106。输出设备105和处理器101通信,可以以多种方式来显示信息。例如,输出设备105可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emittingdiode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备106和处理器101通信,可以以多种方式接收用户的输入。例如,输入设备106可以是鼠标、键盘、触摸屏设备或传感设备等。
需要说明的是,图3所示的计算机设备仅为示例,其不对本申请实施例可适用的计算机设备构成限定。实际实现时,计算机设备可以包括比图3中所示的更多或更少的设备或器件。
以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1)、容器技术、容器、容器镜像
容器技术包括docker、coreos以及其他容器技术。本申请实施例所提供的容器部署方法适用于开放容器计划(open container initiative,OCI)标准的容器技术也适用于docker自身标准的容器技术。以下均以docker为例进行说明。
容器用于构建起能够不依赖于具体环境而运行的应用单元。从功能上来说,容器包括应用运行时所需的全部文件(如:类库、环境变量和配置文件等)。从结构上来说,容器包括:容器层和镜像层。容器层位于最顶层,通常只有一层,且容器层是可读写的;镜像层包括一层或多层,镜像层是只读的。
如图4所示,为本申请实施例提供的技术方案所适用的容器的结构示意图。图4中容器30-1包括三个镜像层(从最低层到最高层依次为:镜像层一、镜像层二和镜像层三)和一个容器层。其中,镜像层一为镜像层二的父镜像层,镜像层二为镜像层三的父镜像层。镜像层一构成容器30-1的版本1,镜像层一和镜像层二一起构成容器30-1的版本2,其中,镜像层2中可以仅需包括容器30-1的版本2相较于容器30-1的版本1的更新部分。图4所示的容器30-1的容器版本为容器版本4。若该容器30-1所在的工作节点将容器版本4发布至服务器得到容器镜像30-2,那么容器镜像30-2的镜像层就包括了4层。容器30-1版本4中的容器层将会变为容器镜像30-2中的镜像层四。
需要说明的是,容器版本与容器镜像版本保持一致。例如,一个容器的容器版本2,该容器版本2的容器镜像版本也是版本2。以下所提到的版本均指容器镜像的版本。在一个示例中,Mysql容器用于启动一个Mysql数据库,该容器的容器镜像包括Mysql的二进制执行文件、动态链接库以及所有部署Mysql的数据库依赖的执行环境。使用该容器镜像可以在任意Linux环境(内核依赖除外)中很方便地部署Mysql数据库,而不需要额外的配置。
2)、联合文件系统
联合文件系统用于管理容器镜像。docker支持的联合文件系统包括OverlayFS(overlay file system)、AUFS(another union file system)、Btrfs(butter filesystem)、虚拟文件系统(virtual file system,VFS)、ZFS(zettabyte file system)和device mapper等。当前,联合文件系统中镜像层的文件,保存与父镜像层的文件的差异部分。
镜像层还包括:镜像层的标识信息、镜像层的父镜像层的指示信息和元数据(metadata)。其中,元数据为能够让容器获取运行和构建环境的信息。如图5所示,为本申请实施例提供的技术方案所适用的镜像层的结构示意图。镜像层40中包括镜像层40的标识信息c22013c84729、镜像层40的父镜像层的指示信息和镜像层40的元数据。
当联合文件系统中的存储驱动的操作粒度为文件目录级别的时候,如图6所示的第一容器镜像50包括三个镜像层。其中,镜像层一中包括文件1和文件2。镜像层二中包括新增的文件3和文件4。镜像层三中包括修改后的新文件3。
当联合文件系统中的存储驱动的操作粒度为文件内容级别的时候,如图6所示的第二容器镜像60包括三个镜像层。其中,镜像层一中包括文件1和文件2。镜像层二中包括文件2-1。其中,文件2-1为文件2新增的部分。镜像层三中包括新增的文件3。
3)、其他术语
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例中,“至少一个”是指一个或多个。“多个”是指两个或两个以上。
在本申请实施例中,“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请实施例中,组合包括一个或多个对象。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
如图7所示,为本申请实施例提供的一种容器部署方法的流程示意图。本实施例可以应用于图1所示的分布式系统架构。图7所示的方法可以包括以下步骤:
S100:第一工作节点向服务器发送第一请求消息。其中,第一请求消息用于获取目标容器镜像的多个镜像层的标识信息;该第一请求消息中包括目标容器镜像的标识信息。其中,目标容器镜像的多个镜像层是第一工作节点部署第一容器所需要的镜像层。
第一工作节点可以是分布式系统中的任意一个工作节点。
以docker容器技术为例,服务器可以是包括docker官方提供的公共仓库dockerHub的服务器,也可以是包括docker私有仓库的服务器。无论是包括dockerHub的服务器还是包括docker私有仓库的服务器中都包括多个容器镜像信息(如:容器镜像的标识信息、容器镜像所包括的镜像层的标识信息和镜像层的父镜像层等)。
目标容器镜像的标识信息包括目标容器的标识信息和目标容器镜像的版本的标识信息。基于图4中的示例,假设,第一工作节点中部署第一容器所需要的镜像层包括镜像层三、镜像层二和镜像层一,那么,目标容器镜像的版本的标识信息可以是镜像层三的标识信息。
S101:服务器根据目标容器镜像的标识信息,获取目标容器镜像的镜像层的标识信息。其中,目标容器镜像可以包括一个或多个镜像层。
基于S100中的示例,服务器根据目标容器镜像的标识信息,获取目标容器镜像的manifest。其中,目标容器镜像的manifest是docker容器中的一个文件,该文件包括目标容器镜像的镜像层的标识信息、镜像层的大小和镜像层之间的关系等。
S102:服务器向第一工作节点发送目标容器镜像的镜像层的标识信息。
基于S101中的示例,服务器向第一工作节点发送目标容器镜像的manifest。
S103:第一工作节点根据目标容器镜像的镜像层的标识信息,获取第一工作节点中不存在的目标容器镜像的镜像层的标识信息。
基于S100中的示例,第一工作节点接收目标容器镜像的manifest之后,读取其中目标容器镜像的配置文件的digest值,该digest值就是一个镜像层的标识信息。第一工作节点根据该镜像层的标识信息,在第一工作节点的repositores.json中查找是否存在同样的镜像层的标识信息。若存在则说明查找的镜像层的标识信息所标识的镜像层在第一工作节点中存在,不需要下载。这样,可以节省网络中的信令开销。若不存在则说明查找的镜像层的标识信息所标识的镜像层在第一工作节点中不存在,需要下载。
例如,假设目标容器镜像包括三个镜像层:镜像层一、镜像层二和镜像层三;第一工作节点中包括镜像层一和镜像层二,不包括镜像层三;那么,镜像层三的标识信息就是第一工作节点中不存在的目标容器镜像的镜像层的标识信息。
S104:第一工作节点向记录节点发送第二请求消息。其中,第二请求消息用于记录节点获取第二请求消息中的镜像层的标识信息所在的工作节点的标识信息。第二请求消息中包括第一工作节点中不存在的目标容器镜像的镜像层的标识信息。记录节点用于记录分布式存储系统中工作节点的标识信息和该工作节点中存储的容器镜像的镜像层的标识信息之间的对应关系。记录节点可以是服务器、主节点或任意一个预设的工作节点。
记录节点中包括的分布式存储系统中工作节点的标识信息和该工作节点中存储的容器镜像的镜像层的标识信息之间的对应关系,可以是存储容器镜像的镜像层的工作节点在从服务器下载了容器镜像的镜像层之后,向记录节点发送的。示例性的,假设记录节点是分布式系统的主节点,那么,在分布式系统初次搭建时,在主节点中创建cluster_repositores.json文件。该文件记录了分布式系统中的repository信息,如:容器的标识信息与容器镜像的镜像层的标识信息的对应关系,以及容器镜像的镜像层所在的工作节点的标识信息(如:工作节点的网际互连协议(internet protocol,IP)地址)。分布式系统搭建完毕后,若第二工作节点从服务器下载了目标容器镜像的镜像层三,就会向主节点发送第二工作节点的标识信息和目标容器镜像的镜像层三的标识信息,主节点更新cluster_repositores.json文件,将第二工作节点的标识信息和目标容器镜像的镜像层三的标识信息的对应关系写入cluster_repositores.json文件。该对应关系用于表征第二工作节点中存储有目标容器镜像的镜像层三。该文件的格式可以如下:{“Repositories”:{
“ubuntu”:{
“ubuntu:latest”:
“sha256:f975c50357489439eb9145dbfa16bb7cd06c02c31aa4df45c77de4d2baa4e232:ipaddr”,
“ubuntu@sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6:ipaddr”:
“sha256:f975c50357489439eb9145dbfa16bb7cd06c02c31aa4df45c77de4d2baa4e232:ipaddr”
}
………………
}
}
S105:记录节点根据分布式存储系统中工作节点的标识信息和该工作节点中存储的容器镜像的镜像层的标识信息之间的对应关系,获取第二请求消息中的镜像层的标识信息对应的工作节点的标识信息。
基于S103和S104中的示例,主节点在cluster_repositores.json文件查找目标容器镜像的镜像层三的标识信息,获取到目标容器镜像的镜像层三的标识信息对应第二工作节点的标识信息。
S106:记录节点向第一工作节点发送第一响应消息。其中,第一响应消息用于指示第一工作节点中不存在的目标容器镜像的镜像层存储的工作节点。第一响应消息中包括目标容器镜像的镜像层的标识信息对应的工作节点的标识信息。
基于S105中的示例,第一响应消息用于指示目标容器镜像的镜像层三存储在第二工作节点中。
S107:第一工作节点根据目标容器镜像的镜像层的标识信息对应的工作节点的标识信息,获取存储在其他工作节点中的目标容器镜像的镜像层。其中,其他工作节点为分布式系统中除第一工作节点之外的工作节点。
具体的,第一工作节点通过如下步骤获取存储在其他工作节点中的目标容器镜像的镜像层:
步骤一:第一工作节点将第一响应消息中包括的目标容器镜像的镜像层的标识信息所标识的镜像层挂载(mount)在第一工作节点中。
需要说明的是,第一工作节点将其他工作节点中的目标容器镜像的镜像层挂载在第一工作节点中的实现技术可以是云计算中的对象存储、块存储或网络文件系统(networkfile system,NFS)中的任意一种。
基于S106中的示例,第一工作节点将第二工作节点中的目标容器镜像的镜像层三挂载在第一工作节点中。
步骤二:第一工作节点获取挂载至第一工作节点中的目标容器镜像的镜像层。
在一种实现方式中,当联合文件系统中的存储驱动的操作粒度为文件目录级别的时候,第一工作节点获取挂载至第一工作节点中的目标容器镜像的镜像层中的文件的最新版本。基于图6中第一容器镜像50的示例,假设第一容器镜像50包括的三个镜像层都挂载至第一工作节点,那么,第一工作节点获取镜像层一中的文件1和文件2、镜像层三的新文件3和镜像层二的文件4。不需要获取镜像层二的文件3。
在另一种实现方式中,当联合文件系统中的存储驱动的操作粒度为文件内容级别的时候,第一工作节点获取挂载至第一工作节点中的目标容器镜像的镜像层中的所有文件。基于图6中第二容器镜像60的示例,假设第二容器镜像60包括的三个镜像层都挂载至第一工作节点,那么,第一工作节点获取镜像层一中的文件1、镜像层一中的文件2、镜像层二中的文件2-1和镜像层三中的文件3。
(可选的)S108:第一工作节点从服务器获取既不在第一工作节点中,也不在其他工作节点中存在的目标容器镜像的镜像层。
具体的,第一工作节点通过如下步骤从服务器获取既不在第一工作节点中,也不在其他工作节点中存在的目标容器镜像的镜像层,即不存在于工作节点中的目标容器镜像的镜像层:
步骤一:第一工作节点向服务器发送请求信息,该请求信息用于请求获取目标容器镜像的不存在于工作节点中的目标容器镜像的镜像层。请求信息中包括请求获取的目标容器镜像的镜像层的标识信息。
步骤二:服务器获取请求信息所请求获取的目标容器镜像的镜像层。
步骤三:服务器向第一工作节点发送第一工作节点请求的目标容器镜像的镜像层。
步骤四:第一工作节点存储接收的目标容器镜像的镜像层。
示例性的,第一工作节点使用manifest中的目标容器镜像的镜像层的标识信息(如:sha256和media type),从服务器下载目标容器镜像的镜像层。第一工作节点接收到服务器发送的目标容器镜像的镜像层之后,首先,对目标容器镜像的镜像层进行解压缩并放到指定的目录。然后,第一工作节点确定解压后的镜像层的标识信息与第一工作节点中的配置文件(如:image config)中的镜像层的标识信息一致,说明下载完成。
(可选的)S109:第一工作节点向记录节点发送第三请求消息。第三请求消息用于记录节点建立第一工作节点的标识信息与第一工作节点从服务器获取的目标容器镜像的镜像层的标识信息之间的对应关系。该对应关系用于表征该目标容器镜像的镜像层存储于第一工作节点中。第三请求消息包括第一工作节点从服务器获取的目标容器镜像的镜像层的标识信息。
需要说明的是,本申请实施例对S107和S108~S109的执行顺序不进行限定。示例性的,可以在执行了S108~S109之后,再执行S107。若S104的请求消息中的目标容器镜像的镜像层的标识信息都在第一响应消息中存在时,则不需要执行S108~S109。本申请实施例中,优先从工作节点中获取目标容器镜像的镜像层。
S110:第一工作节点将目标容器镜像的镜像层合并为整合镜像层三。
在一种实现方式中,第一工作节点使用联合文件系统将目标容器镜像的镜像层合并为整合镜像层三。
当联合文件系统为OverlayFS时,第一工作节点将目标容器镜像的镜像层做overlay,将overlay的结果作为整合镜像层三。如图8所示,目标容器镜像的镜像层分别存储在分布式系统中的第二工作节点和第三工作节点中。第二工作节点中的镜像层一包括文件1、第二工作节点中的镜像层二包括文件2和文件3。第三工作节点中的镜像层三包括新文件3。第一工作节点将目标容器镜像的镜像层做overlay后得到第一工作节点中的整合镜像层三(还可以称作:init层)。
需要说明的是,目标容器镜像的镜像层的数量大于1时,执行S110。若目标容器镜像的镜像层的数量等于1,则不需要执行S110。
S111:第一工作节点基于整合镜像层三部署第一容器。
在一种实现方式中,第一工作节点将整合镜像层三作为第一工作节点中目标容器镜像的镜像层,用于第一工作节点在第一工作节点中部署第一容器。
在一个示例中,第一工作节点将整合镜像层三作为第一工作节点中的第一容器的最底层(如:lowdir)与容器层(如:upperdir)叠加后给第一工作节点中的第一容器使用。基于图8的示例,如图9所示为第一工作节点基于整合镜像层三部署得到的第一容器80的结构示意图。第一容器80包括容器层801和镜像层802,镜像层802包括文件1、文件2和新文件3。容器层801包括文件4。
可选的,第一工作节点向记录节点发送第一工作节点的标识信息、目标容器镜像最高层镜像层的标识信息和整合镜像层三的标识信息。服务器收到第一工作节点的标识信息、目标容器镜像的标识信息和整合镜像层三的标识信息之后,建立目标容器镜像最高层镜像层的标识信息与整合镜像层三的标识信息之间的对应关系,并建立第一工作节点的标识信息与整合镜像层三的标识信息之间的对应关系。该两个对应关系用于表征目标容器镜像的镜像层在第一工作节点中整合之后得到的镜像层为整合镜像层三。
在一种实现方式中,当记录节点为服务器时,分布式系统中除第一工作节点之外的任意一个第二工作节点向服务器发送包含目标容器镜像的标识信息的请求消息时:
首先,服务器根据目标容器镜像的标识信息获取目标容器镜像的镜像层的标识信息。其中,目标容器镜像的镜像层的标识信息包括目标容器镜像最高层镜像层的标识信息。服务器根据目标容器镜像最高层镜像层的标识信息与整合镜像层三之间的对应关系,获取整合镜像层三的标识信息,并获取整合镜像层三所在的第一工作节点的标识信息。
然后,服务器向第二工作节点发送第二响应消息,该第二响应消息用于表征第二工作节点部署第一容器所需要的镜像层为整合镜像层三,整合镜像层三位于第一工作节点中。
最后,第二工作节点从第一工作节点中获取整合镜像层三,用于在第二工作节点中部署第一容器。
在另一种实现方式中,当记录节点为主节点或其他工作节点时,分布式系统中除第一工作节点和记录节点之外的任意一个第二工作节点向服务器发送包含目标容器镜像的标识信息的请求消息时:
首先,服务器根据目标容器镜像的标识信息,获取目标容器镜像的镜像层的标识信息。第二工作节点向记录节点发送请求消息用于查询目标容器镜像的镜像层存储的工作节点。请求消息中包括目标容器镜像最高层镜像层的标识信息。具体参考实施例中S101~S104,不再赘述。
然后,记录节点根据目标容器镜像最高层镜像层的标识信息与整合镜像层三之间的对应关系,获取整合镜像层三的标识信息,并获取整合镜像层三所在的第一工作节点的标识信息。
再然后,记录节点向第二工作节点发送第三响应消息,该第三响应消息用于表征第二工作节点部署第一容器所需要的镜像层为整合镜像层三,整合镜像层三位于第一工作节点中。
最后,第二工作节点从第一工作节点中获取整合镜像层三,用于在第二工作节点中部署第一容器。
这样,上述两种实现方式中的第二工作节点从第一工作节点中获取整合镜像层三。一方面提高了第二工作节点获取目标容器镜像的镜像层的效率。另一方面使用整合镜像层三作为目标容器镜像的镜像层,节省了第二工作节点中的存储空间。
本实施例中,第一工作节点若确定本地没有目标容器镜像的镜像层时,则从分布式系统中的其他工作节点获取目标容器镜像的镜像层,不会受连接服务器的网络带宽和服务器负载的影响,从而提高了下载效率。这样,对于目标容器镜像的一个镜像层来说,在分布式系统内只需要一个工作节点从服务器下载该镜像层,其余工作节点,如果需要使用该镜像层都可以从该工作节点中获取该镜像层。第一工作节点在获取到目标容器镜像的镜像层之后,将目标容器镜像的镜像层合并为整合镜像层三。第一工作节点基于整合镜像层三部署第一容器。这样,第一工作节点从其他工作节点中获取的目标容器镜像的镜像层就不必存储在第一工作节点中,而只用存储从服务器获取的目标容器镜像的镜像层,解决了容器镜像的镜像层在分布式系统中重复下载、重复存储的问题,从而节省了镜像层的存储空间,提高了镜像层的下载效率。使用合并得到的整合镜像层三部署第一容器,减少了第一容器包括的镜像层的数量,从而简化了第一容器调度镜像层时的调度算法。
可选的,如图10所示,为本申请实施例提供的另一种容器部署方法的流程示意图。当记录节点是服务器时,上述S104~S106可以合并至S101和S102中。这样,服务器在向第一工作节点发送目标容器镜像的镜像层的标识信息时,可以将目标容器镜像的镜像层所在的工作节点的标识信息也发送给第一工作节点。第一工作节点不需要再发送消息用于获取目标容器镜像的镜像层所在的工作节点,从而节省了信令开销,提高了目标容器镜像的镜像层的下载效率。具体的,S101和S102可以替换为:
S101′:服务器根据第一请求消息中目标容器镜像的标识信息,获取目标容器镜像的镜像层的标识信息之后,根据目标容器镜像的镜像层的标识信息,获取目标容器镜像的镜像层存储的工作节点的标识信息。
在一个示例中,服务器根据目标容器镜像的标识信息,获取目标容器镜像的manifest,如果目标容器镜像的镜像层三存储在第二工作节点中,那么,目标容器镜像的manifest中包括该镜像层三的标识信息与第二工作节点的标识信息的对应关系,用于表征镜像层三存储在第二工作节点中。
S102′:服务器向第一工作节点发送第三响应消息。其中,第三响应消息包括目标容器镜像的镜像层的标识信息对应的工作节点的标识信息。
基于上述S101′中的示例,服务器向第一工作节点发送目标容器镜像的manifest。
对其他步骤的编号也进行相应的修改,具体参考图10,不再赘述。
可选的,如图11所示,为本申请实施例提供的另一种容器部署方法的流程示意图。上述实施例一中S104~S106可以替换为如下步骤:
S104′:第一工作节点向分布式系统中其他工作节点发送广播消息。其中,其他工作节点是分布式系统中除第一工作节点之外的工作节点。该广播消息用于其他工作节点确定本工作节点中是否存储有目标容器镜像的镜像层。该广播消息中包括第一工作节点中不存在的目标容器镜像的镜像层的标识信息。
S105′:接收到广播消息的工作节点,获取该工作节点中存储的广播消息中的目标容器镜像的镜像层的标识信息。
S106′:获取到目标容器镜像的镜像层的标识信息的工作节点,向第一工作节点发送第四响应消息。第四响应消息用于指示发送第四响应消息的工作节点中存储有目标容器镜像的镜像层。第四响应消息中包括目标容器镜像的镜像层的标识信息对应的工作节点的标识信息。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对第一工作节点进行功能模块的划分,例如可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图12所示,为本申请实施例提供的一种工作节点的结构示意图。该工作节点90可以用于执行上文中任意一个实施例(如图7、图10或图11所示的实施例)中第一工作节点所执行的功能。该工作节点90应用于分布式系统,该分布式系统还包括第二工作节点,该第二工作节点中存储有第一镜像层。该工作节点90包括:获取单元901、合并单元902和部署单元903。获取单元901用于获取多个镜像层的标识信息。其中,多个镜像层是工作节点90部署容器所需要的目标容器镜像的镜像层,多个镜像层包括第一镜像层。如果基于第一镜像层的标识信息,确定第二工作节点中存储有第一镜像层,则从第二工作节点中获取第一镜像层。合并单元902,用于将所获取的多个镜像层合并为第二镜像层。部署单元903,用于基于第二镜像层部署容器。例如,结合图7,获取单元901可以用于执行S103、S107~S108,合并单元902可以用于执行S110,部署单元903用于执行S111。结合图10,获取单元901可以用于执行S103′~S105′。合并单元902可以用于执行S107′。部署单元903用于执行S108′。结合图10,获取单元901可以用于执行S103、S107~S108,合并单元902可以用于执行S110。部署单元903用于执行S111。
可选的,获取单元901具体用于:如果基于第一镜像层的标识信息,确定第二工作节点中存储有第一镜像层,则将第二工作节点中存储的第一镜像层挂载在工作节点90中。访问第二工作节点中的第一镜像层,以获取第一镜像层。
可选的,分布式系统还包括记录节点,该记录节点中包括工作节点的标识信息与本工作节点中存储的目标容器镜像的镜像层的标识信息之间的对应关系。工作节点90还包括收发单元904,用于向记录节点发送请求消息。其中,该请求消息用于请求查询存储有第一镜像层的工作节点,该请求消息包括第一镜像层的标识信息。接收记录节点发送的响应消息。其中,所述响应消息包括所述第二工作节点的标识信息。获取单元901,具体用于获取响应消息中的第二工作节点的标识信息。
可选的,该收发单元904,用于向记录节点发送工作节点90的标识信息、第二镜像层的标识信息以及多个镜像层中最高层的镜像层的标识信息之间的对应关系。
可选的,收发单元904还用于:向分布式系统中的其他工作节点发送第一镜像层的标识信息。其他工作节点为分布式系统中除工作节点90之外的工作节点。其他工作节点包括第二工作节点。接收第二工作节点发送的指示信息,指示信息用于指示第二工作节点中存储有第一镜像层的标识信息。
可选的,合并单元902具体用于:使用联合文件系统将多个镜像层合并为第二镜像层。
在一个示例中,参见图3,上述收发单元904的发送和接收功能可以通过通信接口104实现。获取单元901和合并单元902均可以由图3中的处理器101调用存储器103中存储的计算机程序实现。
关于上述可选方式的具体描述参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种工作节点90的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
需要说明的是,上述各个模块对应执行的动作仅是具体举例,各个单元实际执行的动作参照上述基于图7、图10~图11所述的实施例的描述中提及的动作或步骤。
如图13所示,为本申请实施例提供的一种记录节点的结构示意图。该记录节点70可以用于执行上文中任意一个实施例(如图7、图10或图11所示的实施例)中记录节点所执行的功能。该记录节点70应用于分布式系统,该分布式系统还包括第一工作节点和第二工作节点。该记录节点70包括:接收单元701、获取单元702和发送单元703。接收单元701用于接收第一工作节点发送的请求消息。请求消息用于请求查询存储有第一镜像层的工作节点,第一镜像层是第一工作节点部署容器所需要的目标容器镜像的多个镜像层中一个镜像层。请求消息包括第一镜像层的标识信息。获取单元702,用于根据多个工作节点的标识信息中每个工作节点的标识信息与每个工作节点存储的镜像层的标识信息之间的对应关系,获取第一镜像层的标识信息对应的第二工作节点的标识信息。发送单元703,用于向第一工作节点发送响应消息。其中,响应消息包括第二工作节点的标识信息。响应消息用于第一工作节点部署容器时,访问第二工作节点中的第一镜像层以合并多个镜像层得到第二镜像层。例如,结合图7,接收单元701可以用于执行S104中的接收步骤,获取单元702可以用于执行S105。发送单元703可以用于执行S106中的发送步骤。结合图10,接收单元701可以用于执行S106′中的接收步骤。
可选的,接收单元701还用于:接收第二工作节点发送的第一消息。第一消息包括第二工作节点的标识信息与第一镜像层的标识信息之间的对应关系。
记录节点70还包括存储单元704,用于存储第二工作节点的标识信息与第一镜像层的标识信息之间的对应关系。
可选的,接收单元701还用于:接收第一工作节点发送的第一工作节点的标识信息、第二镜像层的标识信息以及多个镜像层中最高层的镜像层的标识信息之间的对应关系。存储单元704还用于:存储第一工作节点的标识信息、第二镜像层的标识信息以及多个镜像层中最高层的镜像层的标识信息之间的对应关系。
在一个示例中,参见图3,上述接收单元701和发送单元703可以通过通信接口104实现。获取单元702可以由图3中的处理器101调用存储器103中存储的计算机程序实现。存储单元704可由存储器103实现。
关于上述可选方式的具体描述参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种记录节点70的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
需要说明的是,上述各个模块对应执行的动作仅是具体举例,各个单元实际执行的动作参照上述基于图7、图10所述的实施例的描述中提及的动作或步骤。
本申请实施例还提供了一种分布式系统,包括:工作节点和记录节点;工作节点用于执行上述任一实施例中第一工作节点所执行的动作或步骤。记录节点用于执行上述任一实施例中记录节点所执行的动作或步骤。
本申请实施例还提供了一种装置(如计算机设备或芯片),包括:存储器和处理器;该存储器用于存储计算机程序,该处理器用于调用该计算机程序,以执行上文提供的任一实施例中提及的动作或步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上文提供的任一实施例中提及的动作或步骤。
本申请实施例还提供了一种芯片。该芯片中集成了用于实现上述工作节点90和/或记录节点70的功能的电路和一个或者多个接口。可选的,该芯片支持的功能可以包括基于图7、图10-图11所述的实施例中的处理动作,此处不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述处理单元或处理器可以是中央处理器,通用处理器、特定集成电路(application specific integrated circuit,ASIC)、微处理器(digital signalprocessor,DSP),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
本申请实施例还提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述实施例中的任意一种方法。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriberline,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solidstate disk,SSD))等。
应注意,本申请实施例提供的上述用于存储计算机指令或者计算机程序的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。
在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。
Claims (21)
1.一种容器部署方法,其特征在于,应用于分布式系统中的第一工作节点,所述分布式系统还包括第二工作节点,所述第二工作节点中存储有第一镜像层;所述方法包括:
获取多个镜像层的标识信息;其中,所述多个镜像层是所述第一工作节点部署容器所需要的目标容器镜像的镜像层,所述多个镜像层包括所述第一镜像层;
如果基于所述第一镜像层的标识信息,确定所述第二工作节点中存储有所述第一镜像层,则从所述第二工作节点中获取所述第一镜像层;
将所获取的所述多个镜像层合并为第二镜像层;
基于所述第二镜像层部署所述容器。
2.根据权利要求1所述的方法,其特征在于,所述如果基于所述第一镜像层的标识信息,确定所述第二工作节点中存储有所述第一镜像层,则从所述第二工作节点中获取所述第一镜像层,包括:
如果基于所述第一镜像层的标识信息,确定所述第二工作节点中存储有所述第一镜像层,则将所述第二工作节点中存储的所述第一镜像层挂载在所述第一工作节点中;
访问所述第二工作节点中的所述第一镜像层,以获取所述第一镜像层。
3.根据权利要求1或2所述的方法,其特征在于,所述分布式系统还包括记录节点,所述记录节点中包括工作节点的标识信息与所述工作节点的标识信息所指示的工作节点中存储的所述目标容器镜像的镜像层的标识信息之间的对应关系;所述方法还包括:
向所述记录节点发送请求消息;其中,所述请求消息用于请求查询存储有所述第一镜像层的工作节点,所述请求消息包括所述第一镜像层的标识信息;
接收所述记录节点发送的响应消息;其中,所述响应消息包括所述第二工作节点的标识信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
向所述记录节点发送所述第一工作节点的标识信息、所述第二镜像层的标识信息以及所述多个镜像层中最高层的镜像层的标识信息之间的对应关系。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
向所述分布式系统中的其他工作节点发送所述第一镜像层的标识信息;所述其他工作节点为所述分布式系统中除所述第一工作节点之外的工作节点;所述其他工作节点包括所述第二工作节点;
接收所述第二工作节点发送的指示信息,所述指示信息用于指示所述第二工作节点中存储有所述第一镜像层的标识信息。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述将所获取的所述多个镜像层合并为第二镜像层,包括:
使用联合文件系统将所述多个镜像层合并为第二镜像层。
7.一种容器部署方法,其特征在于,应用于分布式系统中的记录节点;所述分布式系统还包括第一工作节点和第二工作节点;所述方法包括:
接收所述第一工作节点发送的请求消息;所述请求消息用于请求查询存储有第一镜像层的工作节点,所述第一镜像层是所述第一工作节点部署容器所需要的目标容器镜像的多个镜像层中一个镜像层;所述请求消息包括所述第一镜像层的标识信息;
根据多个工作节点的标识信息中每个工作节点的标识信息与所述每个工作节点存储的镜像层的标识信息之间的对应关系,获取所述第一镜像层的标识信息对应的所述第二工作节点的标识信息;
向所述第一工作节点发送响应消息;其中,所述响应消息包括所述第二工作节点的标识信息;所述响应消息用于所述第一工作节点部署所述容器时,访问所述第二工作节点中的所述第一镜像层以合并所述多个镜像层得到第二镜像层。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收所述第二工作节点发送的第一消息;所述第一消息包括所述第二工作节点的标识信息与所述第一镜像层的标识信息之间的对应关系;
存储所述第二工作节点的标识信息与所述第一镜像层的标识信息之间的对应关系。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
接收所述第一工作节点发送的所述第一工作节点的标识信息、所述第二镜像层的标识信息以及所述多个镜像层中最高层的镜像层的标识信息之间的对应关系;
存储所述第一工作节点的标识信息与所述第二镜像层的标识信息之间的对应关系。
10.一种工作节点,其特征在于,应用于分布式系统,所述分布式系统还包括第二工作节点,所述第二工作节点中存储有第一镜像层;所述工作节点包括:
获取单元,用于获取多个镜像层的标识信息;其中,所述多个镜像层是所述工作节点部署容器所需要的目标容器镜像的镜像层,所述多个镜像层包括所述第一镜像层;以及,如果基于所述第一镜像层的标识信息,确定所述第二工作节点中存储有所述第一镜像层,则从所述第二工作节点中获取所述第一镜像层;
合并单元,用于将所获取的所述多个镜像层合并为第二镜像层;
部署单元,用于基于所述第二镜像层部署所述容器。
11.根据权利要求10所述的工作节点,其特征在于,所述获取单元具体用于:
如果基于所述第一镜像层的标识信息,确定所述第二工作节点中存储有所述第一镜像层,则将所述第二工作节点中存储的所述第一镜像层挂载在所述工作节点中;
访问所述第二工作节点中的所述第一镜像层,以获取所述第一镜像层。
12.根据权利要求10或11所述的工作节点,其特征在于,所述分布式系统还包括记录节点,所述记录节点中包括工作节点的标识信息与本工作节点中存储的所述目标容器镜像的镜像层的标识信息之间的对应关系;所述工作节点还包括:
收发单元,用于:向所述记录节点发送请求消息;其中,所述请求消息用于请求查询存储有所述第一镜像层的工作节点,所述请求消息包括所述第一镜像层的标识信息;
接收所述记录节点发送的响应消息;其中,所述响应消息包括所述第二工作节点的标识信息;
所述获取单元,具体用于获取所述响应消息中的所述第二工作节点的标识信息。
13.根据权利要求12所述的工作节点,其特征在于,
所述收发单元,还用于向所述记录节点发送所述工作节点的标识信息、所述第二镜像层的标识信息以及所述多个镜像层中最高层的镜像层的标识信息之间的对应关系。
14.根据权利要求10或11所述的工作节点,其特征在于,所述工作节点还包括:
收发单元,用于向所述分布式系统中的其他工作节点发送所述第一镜像层的标识信息;所述其他工作节点为所述分布式系统中除所述工作节点之外的工作节点;所述其他工作节点包括所述第二工作节点;
接收所述第二工作节点发送的指示信息,所述指示信息用于指示所述第二工作节点中存储有所述第一镜像层的标识信息。
15.根据权利要求10-14任一项所述的工作节点,其特征在于,
所述合并单元具体用于:使用联合文件系统将所述多个镜像层合并为第二镜像层。
16.一种记录节点,其特征在于,应用于分布式系统,所述分布式系统还包括第一工作节点和第二工作节点,所述记录节点包括:
接收单元,用于接收所述第一工作节点发送的请求消息;所述请求消息用于请求查询存储有第一镜像层的工作节点,所述第一镜像层是所述第一工作节点部署容器所需要的目标容器镜像的多个镜像层中一个镜像层;所述请求消息包括所述第一镜像层的标识信息;
获取单元,用于根据多个工作节点的标识信息中每个工作节点的标识信息与所述每个工作节点存储的镜像层的标识信息之间的对应关系,获取所述第一镜像层的标识信息对应的所述第二工作节点的标识信息;
发送单元,用于向所述第一工作节点发送响应消息;其中,所述响应消息包括所述第二工作节点的标识信息;所述响应消息用于所述第一工作节点部署所述容器时,访问所述第二工作节点中的所述第一镜像层以合并所述多个镜像层得到第二镜像层。
17.根据权利要求16所述记录节点,其特征在于,所述接收单元还用于:
接收所述第二工作节点发送的第一消息;所述第一消息包括所述第二工作节点的标识信息与所述第一镜像层的标识信息之间的对应关系;
所述记录节点还包括存储单元,用于存储所述第二工作节点的标识信息与所述第一镜像层的标识信息之间的对应关系。
18.根据权利要求16或17所述记录节点,其特征在于,所述接收单元还用于:
接收所述第一工作节点发送的所述第一工作节点的标识信息、所述第二镜像层的标识信息以及所述多个镜像层中最高层的镜像层的标识信息之间的对应关系;
所述记录节点还包括存储单元,所述存储单元还用于:存储所述第一工作节点的标识信息、所述第二镜像层的标识信息以及所述多个镜像层中最高层的镜像层的标识信息之间的对应关系。
19.一种分布式系统,其特征在于,包括第一工作节点和记录节点,所述第一工作节点用于执行权利要求1-6任一项所述方法中第一工作节点所执行的步骤;所述记录节点用于执行权利要求7-9任一项所述方法中记录节点所执行的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行权利要求1-6任一项所述的方法。
21.一种工作节点,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一项所述方法中第一工作节点所执行的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010177117.2A CN113391875A (zh) | 2020-03-13 | 2020-03-13 | 容器部署方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010177117.2A CN113391875A (zh) | 2020-03-13 | 2020-03-13 | 容器部署方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113391875A true CN113391875A (zh) | 2021-09-14 |
Family
ID=77616404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010177117.2A Pending CN113391875A (zh) | 2020-03-13 | 2020-03-13 | 容器部署方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391875A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961314A (zh) * | 2021-12-16 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种容器应用调度方法、装置、电子设备及存储介质 |
CN115665172A (zh) * | 2022-10-31 | 2023-01-31 | 北京凯思昊鹏软件工程技术有限公司 | 一种嵌入式终端设备的管理系统及管理方法 |
WO2024066904A1 (zh) * | 2022-09-29 | 2024-04-04 | 华为技术有限公司 | 一种容器创建方法、系统及节点 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107426258A (zh) * | 2016-05-23 | 2017-12-01 | 华为技术有限公司 | 一种镜像文件的上传和下载方法及装置 |
CN108628658A (zh) * | 2017-03-17 | 2018-10-09 | 华为技术有限公司 | 一种容器的许可证管理方法及装置 |
-
2020
- 2020-03-13 CN CN202010177117.2A patent/CN113391875A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107426258A (zh) * | 2016-05-23 | 2017-12-01 | 华为技术有限公司 | 一种镜像文件的上传和下载方法及装置 |
CN108628658A (zh) * | 2017-03-17 | 2018-10-09 | 华为技术有限公司 | 一种容器的许可证管理方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961314A (zh) * | 2021-12-16 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种容器应用调度方法、装置、电子设备及存储介质 |
WO2024066904A1 (zh) * | 2022-09-29 | 2024-04-04 | 华为技术有限公司 | 一种容器创建方法、系统及节点 |
CN115665172A (zh) * | 2022-10-31 | 2023-01-31 | 北京凯思昊鹏软件工程技术有限公司 | 一种嵌入式终端设备的管理系统及管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200401437A1 (en) | Methods and apparatus to manage virtual machines | |
US10776104B2 (en) | Systems and methods for tracking configuration file changes | |
US7062516B2 (en) | Methods, systems, and articles of manufacture for implementing a runtime logging service storage infrastructure | |
US6714949B1 (en) | Dynamic file system configurations | |
US8104038B1 (en) | Matching descriptions of resources with workload requirements | |
EP3039575B1 (en) | Scalable distributed storage architecture | |
US8032623B2 (en) | Context-based dynamic policy assignment in a distributed processing environment | |
US5687372A (en) | Customer information control system and method in a loosely coupled parallel processing environment | |
CN109684282B (zh) | 一种构建元数据缓存的方法及装置 | |
CN109391664A (zh) | 用于多集群容器部署的系统和方法 | |
CN113296792B (zh) | 存储方法、装置、设备、存储介质和系统 | |
US8412901B2 (en) | Making automated use of data volume copy service targets | |
CN113391875A (zh) | 容器部署方法与装置 | |
JPH06110808A (ja) | クライアントインターフェースをアプリケーションのオブジェクト指向呼出しに対処するための方法及び装置 | |
JPH0675888A (ja) | 分散不均一環境におけるアプリケーションの動的呼出しの方法及び装置 | |
US11456914B2 (en) | Implementing affinity and anti-affinity with KUBERNETES | |
CN111597148B (zh) | 用于分布式文件系统的分布式元数据管理方法 | |
US20220263772A1 (en) | Metadata driven static determination of controller availability | |
US10203976B2 (en) | Virtual appliance management in a virtualized computing environment based on operational modes associated with virtual appliance | |
US11271895B1 (en) | Implementing advanced networking capabilities using helm charts | |
CN114911518A (zh) | 云函数应用发布管理方法、系统、设备及存储介质 | |
CN114996337A (zh) | 多集群数据库管理系统及方法 | |
US5630133A (en) | Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment | |
EP4173181B1 (en) | Container orchestration system (cos) services discovery across multiple cos clusters based on cos cluster domain name system | |
US11681585B2 (en) | Data migration for a shared database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210914 |
|
RJ01 | Rejection of invention patent application after publication |