掌桥专利:专业的专利平台
掌桥专利
首页

容器启动方法、容器启动装置和电子设备

文献发布时间:2023-06-19 11:52:33


容器启动方法、容器启动装置和电子设备

技术领域

本申请涉及数据处理技术领域中的容器技术,尤其涉及一种容器启动方法、容器启动装置和电子设备。

背景技术

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

传统的容器使用控制组群(control groups,简称cgroups)实现资源隔离,所有容器共用同一个内核。当业务容器混合部署到同一个主机上时,攻击者可以利用容器攻击主机或者此主机上其他容器,威胁其他用户隐私安全。针对这一安全性威胁,开发了基于轻量虚拟机的容器方案。基于虚拟机的容器运行在不同的虚拟机上,比传统容器提供了更好的隔离性和安全性。

目前,基于虚拟机的业务容器在启动上耗时较长,启动速度慢。

发明内容

本申请实施例提供一种容器启动方法、容器启动装置和电子设备,以解决现有基于虚拟机的业务容器启动速度慢的问题。

为解决上述技术问题,本申请是这样实现的:

本申请第一方面提供一种容器启动方法,包括:

从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;

在所述第一Pod中创建业务容器,并启动所述业务容器。

进一步的,所述第一Pod包括用于监控所述网络资源的占位容器。

进一步的,所述N个Pod的获取过程包括:

创建所述N个Pod;

启动所述N个Pod,并初始化所述N个Pod中各Pod的网络资源,所述N个Pod中的各Pod运行在不同的虚拟机上。

进一步的,在所述第一Pod中创建业务容器,并启动所述业务容器之后,还包括:

若所述N个Pod中空闲的Pod的个数少于预设阈值,则创建新的Pod,所述空闲的Pod为未创建业务容器的Pod;

启动所述新的Pod,并初始化所述新的Pod的网络资源。

进一步的,在所述第一Pod中创建业务容器,并启动所述业务容器之后,还包括:

若所述业务容器使用完成,则销毁所述第一Pod。

本申请第二方面提供一种容器启动装置,包括:

获取模块,用于从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;

第一启动模块,用于在所述第一Pod中创建业务容器,并启动所述业务容器。

进一步的,所述第一Pod包括用于监控所述网络资源的占位容器。

进一步的,所述N个Pod的获取过程包括:

创建所述N个Pod;

启动所述N个Pod,并初始化所述N个Pod中各Pod的网络资源,所述N个Pod中的各Pod运行在不同的虚拟机上。

进一步的,所述装置还包括:

创建模块,用于若所述N个Pod中空闲的Pod的个数少于预设阈值,则创建新的Pod,所述空闲的Pod为未创建业务容器的Pod;

第二启动模块,用于启动所述新的Pod,并初始化所述新的Pod的网络资源。

进一步的,所述装置还包括:

销毁模块,用于若所述业务容器使用完成,则销毁所述第一Pod。

本申请第三方面提供一种电子设备,其特征在于,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面所述的方法。

本申请第四方面提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行第一方面所述的方法。

上述申请中的一个实施例具有如下优点或有益效果:从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;在所述第一Pod中创建业务容器,并启动所述业务容器。这样,从N个Pod中获取网络资源已经初始化完成的第一Pod,然后在第一Pod中创建并启动业务容器,可以提高业务容器的启动速度,从而提升了基于虚拟机的容器的启动性能。

第一Pod包括用于监控所述网络资源的占位容器,为后续在第一Pod中创建并启动业务容器做准备,以提高业务容器的启动速度。

预先创建并启动N个Pod,并初始化N个Pod中各Pod的网络资源,可为后续创建业务容器做准备,提高业务容器的启动速度。

若N个Pod中空闲的Pod的个数少于预设阈值,则创建新的Pod,并启动新的Pod。新的Pod运行在一个虚拟机上,在启动新的Pod过程中会启动虚拟机,并初始化新的Pod的网络资源。将新的Pod添加到Pod资源池中,以供挑选,并在挑选中的Pod中创建并启动业务容器,提高业务容器的启动速度,从而提升基于虚拟机的容器的启动性能。

业务容器使用完成后,销毁第一Pod,以释放第一Pod占用的资源。

上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是是本申请实施例提供的容器启动方法的流程图之一;

图2是本申请请实施例提供的容器启动方法的流程图之二;

图3本申请请实施例提供的容器启动装置的结构图;

图4是用来实现本申请实施例的容器启动方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

参见图1,图1是本申请实施例提供的容器启动方法的流程图之一,如图1所示,本实施例提供一种容器启动方法,应用于电子设备,包括以下步骤:

步骤101、从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数。

具体的,Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。Kubernetes提供了应用部署,规划,更新,维护的一种机制。在Kubenetes中,所有的容器均在Pod中运行,一个Pod可以承载一个或者多个容器,Pod是Kubernetes中最小资源管理单元。

N个Pod为预先获取,每个Pod运行在一个虚拟机上。所述N个Pod中的各个Pod的网络资源均已被初始化。第一Pod不包括业务容器,即第一Pod中未创建业务容器。网络资源初始化主要是为第一Pod分配网卡,并初始化网卡。N个Pod中的Pod在启动时,未指定业务容器,即Pod中未创建并启动业务容器。

步骤102、在所述第一Pod中创建业务容器,并启动所述业务容器。

由于第一Pod已经处于运行状态,且网络资源已经初始化完成,此种情况下,在第一Pod中创建并启动业务容器,即可使得基于虚拟机的Pod处于就绪状态,提高了基于虚拟机的业务容器的启动速度。

本实施例中,从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;在所述第一Pod中创建业务容器,并启动所述业务容器。这样,从N个Pod中获取网络资源已经初始化完成的第一Pod,然后在第一Pod中创建并启动业务容器,可以提高业务容器的启动速度,从而提升了基于虚拟机的容器的启动性能。

参见图2,图2是本申请实施例提供的容器启动方法的流程图之二,如图2所示,本实施例提供一种容器启动方法,应用于电子设备,包括以下步骤:

步骤201、从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数。

具体的,N个Pod为预先获取,每个Pod运行在一个虚拟机上。所述N个Pod中的各个Pod的网络资源均已被初始化。第一Pod不包括业务容器,即第一Pod中未创建业务容器。网络资源初始化主要是为第一Pod分配网卡,并初始化网卡。N个Pod中的Pod在启动时,未指定业务容器,即Pod中未创建并启动业务容器。

所述N个Pod中的各Pod均包括占位容器,占位容器用于对占位容器所在的Pod的资源进行监控,例如对网络资源进行监控。第一Pod包括用于监控所述网络资源的占位容器,为后续在第一Pod中创建并启动业务容器做准备,以提高业务容器的启动速度。

在本申请一个实施例中,所述N个Pod的获取过程包括:

创建所述N个Pod;

启动所述N个Pod,并初始化所述N个Pod中各Pod的网络资源,所述N个Pod中的各Pod运行在不同的虚拟机上。

具体的,N个Pod的获取过程可由电子设备预先获取,以预备后续使用,提高业务容器的启动速度。N个Pod的获取过程即初始化Pod资源池的过程,首先创建N个Pod,这N个Pod均包括占位容器,在启动Pod的过程中,会启动虚拟机,并初始化所述N个Pod中各Pod的网络资源。N个Pod中的Pod在启动时,未指定业务容器,即Pod中未创建并启动业务容器。由于N个Pod中各Pod中不包括业务容器,所以Pod并不处于就绪状态(即Ready状态),这N个已经启动的且包括占位容器的Pod组成Pod资源池。预先创建并启动N个Pod,并初始化N个Pod中各Pod的网络资源,可为后续创建业务容器做准备,提高业务容器的启动速度。

步骤202、在所述第一Pod中创建业务容器,并启动所述业务容器。

由于第一Pod已经处于运行状态,且网络资源已经初始化完成,此种情况下,在第一Pod中创建并启动业务容器,即可使得基于虚拟机的Pod处于就绪状态,提高基于虚拟机的业务容器的启动速度。

步骤203、若所述业务容器使用完成,则销毁所述第一Pod。

业务容器使用完成后,销毁第一Pod,第一Pod占用的资源会被释放,第一Pod占用的资源可为内存、CPU以及网络资源等等。

本实施例中,从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;在所述第一Pod中创建业务容器,并启动所述业务容器;若所述业务容器使用完成,则销毁所述第一Pod。这样,从N个Pod中获取网络资源已经初始化完成的第一Pod,然后在第一Pod中创建并启动业务容器,可以提高业务容器的启动速度,从而提升了基于虚拟机的容器的启动性能,业务容器使用完成后,销毁第一Pod,使得第一Pod占用的资源被释放。

在本申请一个实施例中,在所述第一Pod中创建业务容器,并启动所述业务容器之后,还包括:

若所述N个Pod中空闲的Pod的个数少于预设阈值,则创建新的Pod,所述空闲的Pod为未创建业务容器的Pod;

启动所述新的Pod,并初始化所述新的Pod的网络资源。

具体的,预设阈值可根据实际情况进行设置,例如10,在此不做限定。空闲的Pod为N个Pod中未创建业务容器的Pod,即N个Pod中不包括业务容器的Pod。若N个Pod中空闲的Pod的个数少于预设阈值,则创建新的Pod,并启动新的Pod。新的Pod运行在一个虚拟机上,在启动新的Pod过程中会启动虚拟机,并初始化新的Pod的网络资源。N个Pod更新为N+1个Pod,即将新的Pod添加到N个Pod中,这可以理解为,将新的Pod添加到Pod资源池中,以供挑选,并在挑选中的Pod中创建并启动业务容器,提高业务容器的启动速度,从而提升基于虚拟机的容器的启动性能。

参见图3,图3是本申请实施例提供的容器启动装置的结构图,如图3所示,本实施例提供一种容器启动装置300,包括:

获取模块,用于从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;

第一启动模块,用于在所述第一Pod中创建业务容器,并启动所述业务容器。

进一步的,所述第一Pod包括用于监控所述网络资源的占位容器。

进一步的,所述N个Pod的获取过程包括:

创建所述N个Pod;

启动所述N个Pod,并初始化所述N个Pod中各Pod的网络资源,所述N个Pod中的各Pod运行在不同的虚拟机上。

进一步的,容器启动装置300还包括:

创建模块,用于若所述N个Pod中空闲的Pod的个数少于预设阈值,则创建新的Pod,所述空闲的Pod为未创建业务容器的Pod;

第二启动模块,用于启动所述新的Pod,并初始化所述新的Pod的网络资源。

进一步的,容器启动装置300还包括:

销毁模块,用于若所述业务容器使用完成,则销毁所述第一Pod。

容器启动装置300能够实现图1-图2所示的方法实施例中电子设备实现的各个过程,为避免重复,这里不再赘述。

本申请实施例的容器启动装置300,从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;在所述第一Pod中创建业务容器,并启动所述业务容器。这样,从N个Pod中获取网络资源已经初始化完成的第一Pod,然后在第一Pod中创建并启动业务容器,可以提高业务容器的启动速度,从而提升了基于虚拟机的容器的启动性能。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图4所示,是根据本申请实施例的容器启动方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图4所示,该电子设备包括:一个或多个处理器401、存储器402,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图4中以一个处理器401为例。

存储器402即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的容器启动方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的容器启动方法。

存储器402作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的容器启动方法对应的程序指令/模块(例如,附图3所示的获取模块301和第一启动模块302)。处理器401通过运行存储在存储器402中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的容器启动方法。

存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据实现容器启动方法的电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至实现容器启动方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

实现容器启动方法的电子设备还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图4中以通过总线连接为例。

输入装置403可接收输入的数字或字符信息,以及产生与实现容器启动方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置404可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的容器启动装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

根据本申请实施例的技术方案,从预获取的N个Pod中获取第一Pod,所述第一Pod运行在第一虚拟机上,所述第一Pod的网络资源已初始化,N为正整数;在所述第一Pod中创建业务容器,并启动所述业务容器。这样,从N个Pod中获取网络资源已经初始化完成的第一Pod,然后在第一Pod中创建并启动业务容器,可以提高业务容器的启动速度,从而提升了基于虚拟机的容器的启动性能。

第一Pod包括用于监控所述网络资源的占位容器,为后续在第一Pod中创建并启动业务容器做准备,以提高业务容器的启动速度。

预先创建并启动N个Pod,并初始化N个Pod中各Pod的网络资源,可为后续创建业务容器做准备,提高业务容器的启动速度。

若N个Pod中空闲的Pod的个数少于预设阈值,则创建新的Pod,并启动新的Pod。新的Pod运行在一个虚拟机上,在启动新的Pod过程中会启动虚拟机,并初始化新的Pod的网络资源。将新的Pod添加到Pod资源池中,以供挑选,并在挑选中的Pod中创建并启动业务容器,提高业务容器的启动速度,从而提升基于虚拟机的容器的启动性能。

业务容器使用完成后,销毁第一Pod,释放第一Pod占用的资源。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

相关技术
  • 容器启动方法、容器启动装置和电子设备
  • 一种基于铝壳电容器冰箱压缩机启动装置
技术分类

06120113084366