一种容器创建方法及装置转让专利

申请号 : CN202011532711.5

文献号 : CN112596855B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 崔亚博

申请人 : 新华三大数据技术有限公司

摘要 :

本说明书提供一种容器创建方法及装置,涉及通信技术领域。该方法,应用于云平台的服务器,包括:接收计算引擎的功能程序,并将功能程序存储至服务器的预设路径下;基于计算引擎的源程序创建计算引擎的驱动容器组,其中,服务器的预设路径被挂载到驱动容器组中的存储路径;调用驱动容器组,创建计算引擎的执行容器组,并基于从服务器的预设路径中获取的功能程序在执行容器组中创建实现功能程序的容器。通过映射驱动容器组的存储路径到服务器的预设路径,无需将计算引擎的功能程序制作到镜像中,提高了服务器创建容器组和容器的效率。

权利要求 :

1.一种容器创建方法,其特征在于,应用于云平台的服务器,包括:接收计算引擎的功能程序,并将所述功能程序存储至所述服务器的预设路径下;

基于所述计算引擎的源程序创建所述计算引擎的驱动容器组,其中,所述服务器的预设路径被挂载到所述驱动容器组中的存储路径;

调用所述驱动容器组,创建所述计算引擎的执行容器组,并基于从所述服务器的预设路径中获取的功能程序在所述执行容器组中创建实现所述功能程序的容器。

2.根据权利要求1所述的方法,其特征在于,还包括:对所述服务器的预设路径中的功能程序进行监测,以确定所述服务器的预设路径中的功能程序是否被修改。

3.根据权利要求2所述的方法,其特征在于,在所述基于从所述服务器的预设路径中获取的功能程序在所述执行容器组中创建实现所述功能程序的容器之后,还包括:若确定所述预设路径中的功能程序被修改,则清除所述执行容器组和所述驱动容器组;

再次基于所述源程序创建所述计算引擎的驱动容器组,调用所述驱动容器组创建执行容器组,并根据修改后的功能程序在所述执行容器组中创建实现所述功能程序的容器。

4.根据权利要求3所述的方法,其特征在于,所述清除所述执行容器组和所述驱动容器组,包括:

判断所述服务器的系统时间是否到达预设时间段;

若到达预设时间段,则清除所述执行容器组和所述驱动容器组。

5.根据权利要求3所述的方法,其特征在于,所述清除所述执行容器组和所述驱动容器组,包括:

判断所述执行容器组的内存占用率是否到达预设值;

若未到达预设值,则清除所述执行容器组和所述驱动容器组。

6.一种容器创建装置,其特征在于,应用于云平台的服务器,包括:存储单元,用于接收计算引擎的功能程序,并将所述功能程序存储至所述服务器的预设路径下;

创建单元,用于基于所述计算引擎的源程序创建所述计算引擎的驱动容器组,其中,所述服务器的预设路径被挂载到所述驱动容器组中的存储路径;调用所述驱动容器组,创建所述计算引擎的执行容器组,并基于从所述服务器的预设路径中获取的功能程序在所述执行容器组中创建实现所述功能程序的容器。

7.根据权利要求6所述的装置,其特征在于,还包括:监测单元,用于对所述服务器的预设路径中的功能程序进行监测,以确定所述服务器的预设路径中的功能程序是否被修改。

8.根据权利要求7所述的装置,其特征在于,还包括清除单元;

若所述监测单元确定所述预设路径中的功能程序被修改,则所述清除单元清除所述执行容器组和所述驱动容器组;

所述创建单元,还用于再次基于所述源程序创建所述计算引擎的驱动容器组,调用所述驱动容器组创建执行容器组,并根据修改后的功能程序在所述执行容器组中创建实现所述功能程序的容器。

9.根据权利要求8所述的装置,其特征在于,所述清除单元,包括:计时模块,用于判断所述服务器的系统时间是否到达预设时间段;

清除模块,用于若所述计时模块确定到达预设时间段,则清除所述执行容器组和所述驱动容器组。

10.根据权利要求8所述的装置,其特征在于,所述清除单元,包括:判断模块,用于判断所述执行容器组的内存占用率是否到达预设值;

清除模块,用于若所述判断模块确定未到达预设值,则清除所述执行容器组和所述驱动容器组。

说明书 :

一种容器创建方法及装置

技术领域

[0001] 本说明书涉及通信技术领域,尤其涉及一种容器创建方法及装置。

背景技术

[0002] 大数据技术和云计算技术是当前信息技术发展的两个重要方向。通过大数据技术,可以对数据进行集中和分析,以挖掘数据的价值;通过云计算技术可以对资源进行更加
合理的分配和运用,提升资源的利用率。因此,通过二者协同配合,可以实现高效地数据采
集和分析。
[0003] 在大数据计算引擎中,可以通过功能程序来实现数据集中和数据分析。结合云计算中的容器化技术,可以利用较少的物理资源实现这些功能程序,这是由于通过云计算技
术,可以将一台物理主机中创建多个容器组,一个容器组被分配有预设的物理资源,例如,
处理器、内存和存储空间等。在一个容器组中,可以包含多个容器,这些容器共享为容器组
分配的物理资源,从而实现更高效地资源运用。
[0004] 在创建容器组时,用户需要向云平台提交功能程序,云平台基于计算引擎的源程序和用户提交的功能程序制作镜像,将镜像推送到容器引擎。最终云平台从容器引擎获取
镜像,并基于镜像创建容器组和其中的容器。这一过程中,如果用户向云平台提交大量的功
能程序,则需要花费较多的时间制作镜像,并且也需要占用较长的时间推送到容器引擎,从
而降低了云平台创建功能程序的效率。

发明内容

[0005] 为克服相关技术中存在的问题,本说明书提供了一种容器创建方法及装置。
[0006] 根据本说明书实施方式的第一方面,提供了一种容器创建方法,应用于云平台的服务器,包括:
[0007] 接收计算引擎的功能程序,并将功能程序存储至服务器的预设路径下;
[0008] 基于计算引擎的源程序创建计算引擎的驱动容器组,其中,服务器的预设路径被挂载到驱动容器组中的存储路径;
[0009] 调用驱动容器组,创建计算引擎的执行容器组,并基于从服务器的预设路径中获取的功能程序在执行容器组中创建实现功能程序的容器。
[0010] 可选的,该方法,还包括:
[0011] 对服务器的预设路径中的功能程序进行监测,以确定服务器的预设路径中的功能程序是否被修改。
[0012] 进一步的,在基于从服务器的预设路径中获取的功能程序在执行容器组中创建实现功能程序的容器之后,还包括:
[0013] 若确定预设路径中的功能程序被修改,则清除执行容器组和驱动容器组;
[0014] 再次基于源程序创建计算引擎的驱动容器组,调用驱动容器组创建执行容器组,并根据修改后的功能程序在执行容器组中创建实现功能程序的容器。
[0015] 可选的,清除执行容器组和驱动容器组,包括:
[0016] 判断服务器的系统时间是否到达预设时间段;
[0017] 若到达预设时间段,则清除执行容器组和驱动容器组。
[0018] 可选的,清除执行容器组和驱动容器组,包括:
[0019] 判断执行容器组的内存占用率是否到达预设值;
[0020] 若未到达预设值,则清除执行容器组和驱动容器组。
[0021] 根据本说明书实施方式的第二方面,提供了一种容器创建装置,应用于云平台的服务器,包括:
[0022] 存储单元,用于接收计算引擎的功能程序,并将功能程序存储至服务器的预设路径下;
[0023] 创建单元,用于基于计算引擎的源程序创建计算引擎的驱动容器组,其中,服务器的预设路径被挂载到驱动容器组中的存储路径;调用驱动容器组,创建计算引擎的执行容
器组,并基于从服务器的预设路径中获取的功能程序在执行容器组中创建实现功能程序的
容器。
[0024] 进一步的,该装置,还包括:
[0025] 监测单元,用于对服务器的预设路径中的功能程序进行监测,以确定服务器的预设路径中的功能程序是否被修改。
[0026] 进一步的,该装置,还包括:
[0027] 若监测单元确定预设路径中的功能程序被修改,则清除单元清除执行容器组和驱动容器组;
[0028] 创建单元,还用于再次基于源程序创建计算引擎的驱动容器组,调用驱动容器组创建执行容器组,并根据修改后的功能程序在执行容器组中创建实现功能程序的容器。
[0029] 可选的,清除单元,包括:
[0030] 计时模块,用于判断服务器的系统时间是否到达预设时间段;
[0031] 清除模块,用于若计时模块确定到达预设时间段,则清除执行容器组和驱动容器组。
[0032] 可选的,清除单元,包括:
[0033] 判断模块,用于判断执行容器组的内存占用率是否到达预设值;
[0034] 清除模块,用于若判断模块确定未到达预设值,则清除执行容器组和驱动容器组。
[0035] 本说明书的实施方式提供的技术方案可以包括以下有益效果:
[0036] 本说明书实施方式中,通过将驱动容器组的存储路径挂载到服务器的预设路径,驱动容器组可以从挂载的预设路径获取存储到该预设路径中的功能程序,这样一来,服务
器在创建驱动容器组和执行容器组时,无需将计算引擎的源程序和功能程序制作成一个镜
像,并将一个较大的镜像推送到容器引擎中,从而减少了服务器中创建容器所需要的时间,
提升了服务器创建容器的效率。
[0037] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。

附图说明

[0038] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施方式,并与说明书一起用于解释本说明书的原理。
[0039] 图1是本申请所涉及的一种容器创建方法的流程图;
[0040] 图2是本申请所涉及的创建有容器组的云平台的结构示意图;
[0041] 图3是本申请所涉及的一种容器创建装置的结构示意图。

具体实施方式

[0042] 这里将详细地对示例性实施方式进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施
方式中所描述的实施方式并不代表与本说明书相一致的所有实施方式。
[0043] 本申请提供了一种容器创建方法,如图1所示,应用于云平台的服务器,包括:
[0044] S100、接收计算引擎的功能程序,并将功能程序存储至服务器的预设路径下。
[0045] 云平台可以通过一台作为物理主机的服务器搭建,或通过多台物理主机以集群的形式搭建器,该物理主机可以是个人电脑和服务器等。为了实现数据的集中和分析,云平台
中部署有计算引擎。在云平台的服务器或服务器集群中,通过容器引擎对服务器的物理资
源(比如,处理器、内存和存储空间等)进行虚拟化,形成一个或若干容器组(Pod)。在一个容
器组中可以创建多个容器,这些容器可以共享为一个容器组所分配的物理资源。
[0046] 为了通过容器实现计算引擎的功能,用户需要将计算引擎的功能程序发送到云平台中。云平台在接收到该功能程序后,会将其存储到服务器的预设路径中,该预设路径为存
储服务器中的数据和文件等内容的存储路径。由于在一台服务器中可能创建多个容器组,
每一个容器组所占用的资源之间相互隔离。但是服务器中会预留部分存储空间,在该存储
空间中的数据和文件可以被多个容器组所访问,该存储空间的路径即为预设路径,预设路
径可以通过后续的指令中进行指定,例如启动指令(Spark‑submit指令)。该计算引擎可以
为Spark、Hadoop和Flink等等,对此不做限制。
[0047] 另外,需要说明的是,当云平台中包含一个服务器时,本申请所描述的方法由该服务器执行,当云平台中包含服务器集群时,本申请所描述的方法由服务器集群中的主节点
执行。
[0048] 此后,服务器仍需要制作包含计算引擎的源程序的镜像,但不同的是,该镜像中并不会包含功能程序。源程序指用以搭建计算引擎的环境的程序,功能程序指用户编写的、用
于实现特定功能的程序,比如,可以通过功能程序实现DNS(域名系统,Domain Name 
System)等。
[0049] 在镜像制作完成后,该镜像会被推送到容器引擎(例如,Docker)中进行管理。
[0050] S101、基于计算引擎的源程序创建计算引擎的驱动容器组。
[0051] 通过用户输入的启动指令(例如,Spark‑submit指令),服务器开始创建容器组和容器。在服务器接收到该启动指令后,会调用云平台的底层接口获取被推送到容器引擎中
的计算引擎的源程序,并通过所获取的源程序创建驱动容器组,以及该驱动容器组中的驱
动容器。
[0052] 其中,服务器的预设路径被挂载到驱动容器组中的存储路径。也就是说,在所创建的驱动容器组中设置有一个存储路径,驱动容器组可以访问该存储路径下所存储的数据或
文件。
[0053] S102、调用驱动容器组,创建计算引擎的执行容器组,并基于从服务器的预设路径中获取的功能程序在执行容器组中创建实现功能程序的容器。
[0054] 在创建了驱动容器组后,在服务器中就搭建出了计算引擎的环境,此后,服务器调用驱动容器组按照预设的数量创建执行容器组(executor pod),也就是说,执行容器组和
驱动容器组分属于不同的容器组,二者之间的物理资源时相互隔离的。具体而言,驱动容器
组可以调用云平台所提供的API(应用程序接口,Application Programming Interface)来
创建执行容器组。
[0055] 在创建驱动容器组的过程中,其存储路径被映射到了服务器的预设路径,这样一来,在服务器调用驱动容器组时,该驱动容器组可以从服务器的预设路径中获取到预存在
其中的功能程序,从而将该功能程序加载到驱动容器组所创建的执行容器组中,以生成实
现对应功能的容器。
[0056] 最终,在如图2所示的云平台中,服务器1中可以创建出驱动容器组(例如,Spark drive pod)以及执行容器组(例如,executor pod1和executor pod2)。其中,可以看出
Spark drive pod中的存储路径被映射到了服务器1的预设路径。并且,executor pod1与
Spark drive pod处于同一个服务器,即服务器1,而executor pod2处于另一个服务器,即
服务器2。
[0057] 因此,在服务器创建容器组以及该容器组中的容器的过程中,无需将计算引擎的功能程序和源程序一起制作到镜像中,减少了制作镜像所需要的时间,并且推送到容器引
擎中的镜像的容量也变小了,也减少了向容器引擎推送镜像的时间,提升了创建云平台创
建容器组以及该容器组中所包含的镜像的效率。
[0058] 进一步地,在服务器中,可以启动一个进程对服务器的预设路径进行监测,以确定该服务器的预设路径里所存储的功能程序是否被修改。
[0059] 该功能程序以文件的形式被存储到预设路径,并且,在文件的内容不同时,则每一个文件会具有一个唯一的校验码,该校验码可以根据预设算法获得。该预设算法可以为MD
(信息摘要算法,Message‑Digest  Algorithm)、SHA(安全散列算法,Secure  Hash 
Algorithm)和CRC(循环冗余校验,Cyclic Redundancy Check)等。
[0060] 该监测可以是周期性进行,即在服务器中,或者,在驱动容器组中创建一个用于实现监测的进程,并为该进程设置一个运行的周期。当达到该周期时,通过该进程对预设路径
中所存储的文件进行校验,获取到各文件的校验值,将该校验值和文件的对应关系存储在
该驱动容器组可访问的路径下,应与预设路径隔离,当再次达到周期时,通过再次获取的校
验值,并与已存储的校验值进行比对。当两次的校验值不同时,则可以确定该文件中的内容
已经被修改,即,功能程序被修改。
[0061] 可选的,在步骤S102之后,该方法还包括:
[0062] S103、若确定预设路径中的功能程序被修改,则清除执行容器组和驱动容器组。
[0063] S104、再次基于源程序创建所述计算引擎的驱动容器组,调用驱动容器组创建执行容器组,并根据修改后的功能程序在执行容器组中创建实现功能程序的容器。
[0064] 在服务器确定了功能程序被修改后,可以确定在执行容器组中当前运行的功能程序需要被停止,并更新为被修改后的功能程序。
[0065] 此时,服务器需要先终止各容器组中当前所运行的容器,并清除各容器组,具体而言,服务器中可以仅执行一个清除指令,即清除指定的驱动容器组,驱动容器组在执行清除
指令时,主动地清除由该驱动容器组所创建的执行容器组和其中的执行容器。此后,基于用
户的提交指令,服务器重新创建驱动容器组和该驱动容器组中的驱动容器,并从服务器的
预设路径中获取到修改后的功能程序,以重新创建执行容器组以及在执行容器组中生成对
应修改后的功能程序的容器。
[0066] 这样一来,在用户对云平台中所运行的功能程序进行修改时,由于计算引擎的源程序并未修改,因此,无需重新制作镜像,仅需要将新的功能程序存储到服务器的预设路
径,并执行提交命令,即可以重新创建驱动容器组和执行容器组,并在对应的容器组中实现
修改后的功能程序,从而提高了对计算引擎的功能程序进行更新的效率。
[0067] 进一步的,在执行步骤S103的过程中,由于执行容器组和驱动容器组中可能正在进行数据处理,直接进行清除可能导致当前正在处理的数据丢失或损坏。为了降低清除执
行容器组和驱动容器组所带来的影响。步骤S103包括:
[0068] S103A、判断服务器的系统时间是否到达预设时间段;
[0069] S103B、若到达预设时间段,则清除执行容器组和驱动容器组。
[0070] 在服务器中设置有一个时钟,该时钟所指示的时间为系统时间。一般的,服务器在日间的数据处理压力较大,此时关闭执行容器组和驱动容器组所带来的影响较大。因此,可
以增加一个预设时间段,例如可以设定为凌晨2时至凌晨4时。
[0071] 当服务器中所运行的进程监测到功能程序被修改时,获取当前的系统时间。当确定系统时间未处于预设时间段时,则服务器暂时不对执行容器组和驱动容器组进行清除,
直至系统时间运行至预设时间段,再进行执行容器组和驱动容器组的清除,并在清除后根
据修改后的功能程序重新创建驱动容器组和执行容器组。
[0072] 另外,步骤S103还可以通过另一种方式实现,即步骤S103包括:
[0073] S103C、判断执行容器组的内存占用率是否到达预设值;
[0074] S103D、若未到达预设值,则清除执行容器组和驱动容器组。
[0075] 在容器组被创建之后,云平台中的服务器可以对其创建的容器组进行监测,监测的对象可以包括为执行容器组所分配的物理资源的占用情况,特别是针对内存资源的占
用。在创建执行容器组时,会为其分配设置的内存资源。此处,所设置的内存占用率可以是
以分配的内存资源的百分比,比如所设置的内存占用率为服务器为该执行容器组分配的内
存资源的80%。
[0076] 当内存占用率超出预设值时,则可以认为当前执行容器组所处理的数据较多,如果直接关闭执行容器组则可能造成较多的数据丢失和损坏。此时,暂时不进行清除执行容
器组和驱动容器组的操作。
[0077] 而当执行容器组的内存占用率小于预设值时,则可以认为执行容器组当前的数据处理较少,关闭执行容器组和驱动容器组所带来的损失较少。此时,云平台可以进行清除的
操作,并在清除后重新根据修改后的功能程序创建新的驱动容器组和执行容器组。
[0078] 相对应的,本申请还提供了一种容器创建装置,如图3所示,应用于云平台的服务器,包括:
[0079] 存储单元,用于接收计算引擎的功能程序,并将功能程序存储至服务器的预设路径下;
[0080] 创建单元,用于基于计算引擎的源程序创建计算引擎的驱动容器组,其中,服务器的预设路径被挂载到驱动容器组中的存储路径;调用驱动容器组,创建计算引擎的执行容
器组,并基于从服务器的预设路径中获取的功能程序在执行容器组中创建实现功能程序的
容器。
[0081] 进一步的,该装置,还包括:
[0082] 监测单元,用于对服务器的预设路径中的功能程序进行监测,以确定服务器的预设路径中的功能程序是否被修改。
[0083] 进一步的,该装置,还包括:
[0084] 若监测单元确定预设路径中的功能程序被修改,则清除单元清除执行容器组和驱动容器组;
[0085] 创建单元,还用于再次基于源程序创建计算引擎的驱动容器组,调用驱动容器组创建执行容器组,并根据修改后的功能程序在执行容器组中创建实现功能程序的容器。
[0086] 可选的,清除单元,包括:
[0087] 计时模块,用于判断服务器的系统时间是否到达预设时间段;
[0088] 清除模块,用于若计时模块确定到达预设时间段,则清除执行容器组和驱动容器组。
[0089] 可选的,清除单元,包括:
[0090] 判断模块,用于判断执行容器组的内存占用率是否到达预设值;
[0091] 清除模块,用于若判断模块确定未到达预设值,则清除执行容器组和驱动容器组。
[0092] 应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。
[0093] 以上所述仅为本说明书的较佳实施方式而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的
范围之内。