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

容器的部署方法、装置、设备及存储介质

文献发布时间:2023-06-19 09:38:30


容器的部署方法、装置、设备及存储介质

技术领域

本申请涉及云计算领域,特别涉及一种容器的部署方法、装置、设备及存储介质。

背景技术

容器化技术是提供轻量化打包应用的物理机资源共享方式,能够快速对应用进行标准化部署;容器编排则是指对自动化容器进行部署、管理、扩展和联网。

传统的容器编排是采用贪心算法对容器进行打分的方式来实现容器在物理机上的混合部署,比如,64核(core)、256GB内存、1000M(即1000Mb/s)带宽的一台物理机在混合部署了很多服务之后,剩余了4core、6G的资源,对于一个4core、6G的容器和两个2core、3G的容器,按照贪心算法则会将4core、6G的容器部署在该物理机上。

但是,线上的容器数目能达到百万级别,每次做资源混合部署都以打分方式,使得机器的计算量很大。

发明内容

本申请实施例提供了一种容器的部署方法、装置、设备及存储介质,能够提高对容器的部署效率,减小容器部署时的机器计算量。所述技术方案如下:

根据本申请的一个方面,提供了一种容器的部署方法,该方法包括:

获取n类容器中每一类容器的容器占用容量和容器数量,n为正整数;

获取m台物理机中每一台物理机的机器资源容量,m为正整数;

基于容器占用容量、机器资源容量,以每一类容器在每一台物理机上的部署容器数量为自变量、m台物理机被n类容器占用后的总剩余资源容量为因变量构建线性函数;

以容器数量、机器资源容量为约束,基于线性函数计算总剩余资源容量最小时每一台物理机上部署每一类容器的部署容器数量;

按照每一台物理机上部署每一类容器的部署容器数量进行容器部署。

根据本申请的另一个方面,提供了一种容器的部署装置,该装置包括:

获取模块,用于获取n类容器中每一类容器的容器占用容量和容器数量,n为正整数;获取m台物理机中每一台物理机的机器资源容量,m为正整数;

构建模块,用于基于容器占用容量、机器资源容量,以每一类容器在每一台物理机上的部署容器数量为自变量、m台物理机被n类容器占用后的总剩余资源容量为因变量构建线性函数;

计算模块,用于以容器数量、机器资源容量为约束,基于线性函数计算总剩余资源容量最小时每一台物理机上部署每一类容器的部署容器数量;

部署模块,用于按照每一台物理机上部署每一类容器的部署容器数量进行容器部署。

根据本申请的另一方面,提供了一种计算机设备,上述计算机设备包括:处理器和存储器,上述存储器存储有计算机程序,上述计算机程序由上述处理器加载并执行以实现如上所述的容器的部署方法。

根据本申请的另一方面,提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序由处理器加载并执行以实现如上所述的容器的部署方法。

根据本申请的另一个方面,提供了一种计算机程序产品,上述计算机程序产品包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上所述的容器的部署方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

本申请提供的容器的部署方法,基于应用所需部署容器占用的资源容量、物理机提供的资源容量构建物理机上部署应用之后剩余资源容量的线性函数,在剩余资源容量最小的情况下,直接确定出在各个物理机上应用的部署容器数量,并按照上述确定出的各个物理机上应用的部署容器数量对应用进行部署,无需对应用的每个容器进行在每个物理机上部署的打分操作,大大减小了机器计算量,降低了计算成本,提高了机器的计算效率,也提高了容器的部署效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请一个示例性实施例提供的虚拟化系统的结构示意图;

图2示出了本申请一个示例性实施例提供的容器的部署方法的流程图;

图3示出了本申请另一个示例性实施例提供的容器的部署方法的流程图;

图4示出了本申请另一个示例性实施例提供的容器的部署方法的流程图;

图5示出了本申请一个示例性实施例提供的容器的部署装置的框图;

图6示出了本申请一个示例性实施例提供的计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先对本申请涉及的几个名词进行介绍:

虚拟化技术,是在操作系统上多加了一个虚拟化层(Hypervisor),可以将物理机的(Central Processing Unit,CPU)、内存、硬盘等资源进行虚拟化,在通过虚拟化出来的空间上安装操作系统,这就是我们通常说的虚拟机。比如,我们可以将一台32核CPU、64G内存、500G磁盘的物理机进行虚拟化,可以创建8台4核CPU、8G内存的虚拟机;其中,1G等于1024兆(M)。虚拟化技术仍存在应用扩展问题与环境迁移问题,在云计算的时代,通常通过自动化脚本的方式去解决这两个问题,但是环境差异导致脚本维护要投入额外的人力;或者使用虚拟化镜像,但是镜像大且启动慢;因此,提出了容器化技术。

容器化技术,是一种内核轻量级的操作系统层虚拟化技术。它以集装箱的方式封装应用以及应用的运行环境,将应用和运行环境打包成一个轻量化、可移植、自包容的容器。容器化技术包括如下优势:其一,容器化技术相比于虚拟化技术,不需要额外的Hypervisor层,会有更高的性能和效率;单台高配物理机可以跑上千个docker容器,其中,docker是一个开源的应用容器引擎。其二,容器启动时间非常快,能够达到秒级、甚至毫秒级,这是由于其直接运行于宿主机内核,不用启动操作系统。其三,容器的镜像封装应用和应用依赖的环境,确保了应用运行环境的一致性,避免了开发环境、测试环境、生产环境不一致的问题。其四,容器在一次创建和配置之后,可以在任意地方运行,测试人员可以将容器与持续集成系统结合,自动化的完成集成测试,同时运维人员可以通过持续部署系统对应用自动完成部署。其五,容器更易于迁移,可以轻松的迁移到物理机、虚拟机、公有云、私有云中,不需要担心运行环境变化导致应用无法运行的问题。

资源池:虚拟化时代把硬件资源看做一个池子,即是资源池。这个池子中的资源是可以做共享的,会有一个Hypervisor[又称虚拟机监视器(Virtual Machine Monitor,VMM)]对物理机的所有资源进行统计,在需要进行新的虚拟机安装时由Hypervisor进行指定资源的分配,同时也对各个虚拟主机进行管理。

虚拟化技术可针对具体应用目的创建特定目的的虚拟环境,安全、效率高,快照、克隆、备份、迁移等方便。系统虚拟化是将一台物理计算机虚拟成一台或多台虚拟计算机系统,每个都有自己的虚拟硬件,其上的操作系统任认为自己运行在一台独立的主机上,计算机软件在一个虚拟的平台上而不是真实的硬件平台上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。其中CPU的虚拟化可以单CPU模拟多CPU并行运行,允许一个平台同时运行多个操作系统,并且应用程序可以在相互独立的空间内运行而互不影响。虚拟化技术在降低硬件成本的同时,还可以显著提高系统的工作效率和安全性。

提供有计算机系统,该计算机系统包括物理机,物理机是相对于虚拟机而言的实体计算机设备;示例性的,该计算机设备可以是终端或者服务器。该计算机系统上提供有虚拟化系统,请参考图1,示出了本申请一个示例性实施例提供的虚拟化系统的结构示意图,该虚拟化系统中由物理机10提供硬件环境,从硬件中抽象出一个硬件抽象层13,由硬件抽象层13来提供虚拟化环境。该虚拟化系统的实现通常是在硬件11和操作系统14之间加入一个Hypervisor 12。由Hypervisor 12主要负责各个操作系统14之间的硬件资源协调。Hypervisor 12是一种特殊操作系统,直接在裸机上运行(针对完全虚拟化技术)。Hypervisor 12创建一个底层硬件平台抽象,即硬件抽象层13,再虚拟硬件抽象层13,虚拟出一个或多个虚拟机(Virtual Machine,VM),由一个或者多个VM共享这个底层硬件平台。VM上运行有操作系统14及应用程序16,每一个操作系统14上的多个应用程序16由容器15进行隔离,使得每一个应用程序16都可以在相互独立的容器15内运行而互不影响。示例性的,本申请提供的容器的部署方法,应用于上述Hypervisor 12中,以实现容器15在物理机10抽象出的虚拟机上的混合部署。

上述计算机系统中服务器可以包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。本领域技术人员可以知晓,上述计算机系统中终端的数量可以更多或更少。比如,上述计算机系统中终端可以仅为一个,或者为几十个或几百个,或者更多数量,本申请实施例对计算机系统中终端的数量和设备类型不加以限定。

图2示出了本申请一个示例性实施例提供的容器的部署方法的流程图,该方法应用于计算机系统的计算机设备中,计算机设备可以是终端或者服务器,该方法包括:

步骤101,获取n类容器中每一类容器的容器占用容量和容器数量。

在应用部署的过程中,计算机设备确定出应用所需容器的容器类型和容器数量,上述容器类型是由容器规格划分得到的,计算机设备得到所需部署的n类容器中每一类容器的容器数量、以及容器规格所指示的容器占用容量,n为正整数。

可选地,应用运行所需的资源包括CPU、内存与带宽中的至少一项。示例性的,应用A所需容器的容器规格是2核(core)、8G、10M,所需容器的容器数量是30;应用B所需容器的容器规格是4core、8G,所需容器的容器数量是10;应用C所需容器的容器规格是1core、1G、10M,所需容器的容器数量是50;则计算机设备确定所需部署的3类容器中第一类容器的容器数目为30,容器占用容量为CPU 2core、内存8G、带宽10M;第二类容器的容器数目为10,容器占用容量为CPU 4core、内存8G;第三类容器的容器数目为50,容器占用容量为CPU1core、内存1G、带宽10M。

上述容器占用容量用于指示容器运行应用程序所需占用物理机的资源容量,比如,容器占用容量为CPU 1core、内存1G、带宽10M,表示一个该容器所需占用物理机的CPU 1核、内存1G、带宽10M。

在一些实施例中,近期发布的应用程序可能存在程序问题,需要进行程序维护等操作,因此,这样的应用不能够进行混合部署,计算机设备获取候选容器中运行的应用程序的程序发布时长;响应于上述程序发布时长大于或者等于时长阈值,将该候选容器确定为容器,即将该候选容器确定为可混合部署的容器。其中,上述时长阈值是在计算机设备上预先设置的。

在一些实施例中,一些容器存在资源利用抖动的问题,即容器对资源利用的容量会不断的变换,时高时低,因此,这样的容器不能够进行混合部署,计算机设备获取候选容器在指定时间段内使用资源容量的变化率,变化率表示候选容器使用资源容量变化的速率,即表示资源利用抖动的起伏情况;响应于上述变化率小于变化率阈值,将该候选容器确定为容器,即将该候选容器确定为可混合部署的容器。其中,上述变化率阈值是在计算机设备上预先设置的。上述资源利用抖动情况可以从应用运行的监控日志中获取得到。

步骤102,获取m台物理机中每一台物理机的机器资源容量。

示例性的,计算机设备确定出满足应用部署需求的m台物理机,上述应用部署需求是指应用对物理机的资源容量的需求,m为正整数。比如,若应用D的部署需要CPU 32core、内存16G、带宽64M,则计算机设备确定出的用于部署应用D的物理机,在没有部署其他应用的前提下,其CPU core需要大于或者等于32核、内存容量需要大于或者等于16G、带宽需要大于或者等于64G。

上述机器资源容量用于指示物理机能够为容器提供的的资源容量,比如,机器资源容量为CPU 64core、内存32G、带宽200M,表示一个该物理机所提供的资源容量为CPU64core、内存32G、带宽200M。

步骤103,基于容器占用容量、机器资源容量,以每一类容器在每一台物理机上的部署容器数量为自变量、m台物理机被n类容器占用后的总剩余资源容量为因变量构建线性函数。

示例性的,对于一台物理机,计算机设备计算每一类容器的容器占用容量与在该物理机上的部署容器数量的乘积,继而计算n类容器对应的上述乘积的和,将该物理机的机器资源容量减去上述和即得到一台物理机被n类容器占用后的剩余资源容量;将m台物理机被n类容器占用后的m个剩余资源容量相加,得到以每一类容器在每一台物理机上的部署容器数量为自变量、m台物理机被n类容器占用后的总剩余资源容量为因变量构建线性函数。

示例性的,假设应用A所需容器的容器规格是2core、8G、10M,所需容器的容器数量是30;应用E所需容器的容器规格是4core、8G、20M,所需容器的容器数量是10;应用C所需容器的容器规格是1core、1G、10M,所需容器的容器数量是50。计算机设备需要将上述3类容器部署至3台物理机上,第一台物理机Cup1的CPU core数量为Core

假设Cup1上部署a1个应用A的容器、e1个应用E的容器、以及c1个应用C的容器;Cup2上部署a2个应用A的容器、e2个应用E的容器、以及c2个应用C的容器;Cup3上部署a3个应用A的容器、e3个应用E的容器、以及c3个应用C的容器;构建每一台物理机上每一类资源的剩余资源的线性表示:

LeftCore1=Core

LeftCore2=Core

LeftCore3=Core

LeftMem1=Mem

LeftMem2=Mem

LeftMem3=Mem

LeftBendth1=Bendth

LeftBendth2=Bendth

LeftBendth3=Bendth

其中,LeftCore1、LeftCore、LeftCore分别是Cup1、Cup2、Cup3上CPU的剩余资源,LeftMem1、LeftMem2、LeftMem3分别是Cup1、Cup2、Cup3上内存的剩余资源,LeftBendth1、LeftBendth 2、LeftBendth 3分别是Cup1、Cup2、Cup3上宽带的剩余资源;则3台物理机的总剩余资源容量的线性函数可以表示为:

Left=(LeftCore1+LeftCore2+LeftCore3)+(LeftMem1+LeftMem2+LeftMem3)+(LeftBendth1+LeftBendth2+LeftBendth3);

其中,Left表示3台物理机的3类资源的总剩余资源容量。

步骤104,以容器数量、机器资源容量为约束,基于线性函数计算总剩余资源容量最小时每一台物理机上部署的每一类容器的部署容器数量。

计算机设备以容器数量、机器资源容量为约束,基于步骤103中构建m台物理机的总剩余资源容量的线性函数计算剩余资源容量最小时每一台物理机上部署的每一类容器的部署容器数量。上述约束即为,每一台物理机上部署的容器所需占用资源总量小于或者等于该物理机的机器资源容量,且每一类容器在m台上部署的容器数量和小于上述容量数量。

示例性的,计算机设备确定出上述线性函数中自变量的取值约束,在取值约束下基于线性函数计算m台物理机的n类资源的剩余资源容量最小时,每一台物理机部署的每一类容器的部署容器数量。

示例性的,以步骤103中的线性函数的求解为例,列出变量的取值约束如下:

(2×a1+4×e1+1×c1)≤Core

(2×a2+4×e2+1×c2)≤Core

(2×a3+4×e3+1×c3)≤Core

(8×a1+8×e1+1×c1)≤Mem

(8×a2+8×e2+1×c2)≤Mem

(8×a3+8×e3+1×c3)≤Mem

(10×a1+20×e1+10×c1)≤Bendth

(10×a2+20×e2+10×c2)≤Bendth

(10×a3+20×e3+10×c3)≤Bendth

0≤a1+a2+a3≤30;

0≤e1+e2+e3≤10;

0≤c1+c2+c3≤50;

计算机设备按照上述取值约束的范围内求解Left最小时a1、a2、a3、e1、e2、e3、c1、c2、c3的取值,得到每一台物理机部署的每一类容器的部署容器数量。

步骤105,按照每一台物理机上部署的每一类容器的部署容器数量进行容器部署。

计算机设备按照求解得到的每一台物理机部署的每一类容器的部署容器数量进行容器的部署,比如,按照求解得到的a1、a2、a3、e1、e2、e3、c1、c2、c3的取值在Cup1、Cup2、Cup3上部署应用A、应用E、以及应用C。

综上所述,本实施例提供的容器的部署方法,基于应用所需部署容器占用的资源容量、物理机提供的资源容量构建物理机上部署应用之后剩余资源容量的线性函数,在剩余资源容量最小的情况下,直接确定出在各个物理机上应用的部署容器数量,并按照上述确定出的各个物理机上应用的部署容器数量对应用进行部署,无需对应用的每个容器进行在每个物理机上部署的打分操作,大大减小了机器计算量,降低了计算成本,提高了机器的计算效率,也提高了容器的部署效率。

在一些实施例中,将应用的容器同时部署到至少两个物理机上,考虑到需要每个物理机上资源的合理利用,还为不同物理机设置不同的机器权重,即计算机设备中存储有按照机器的部署顺序设置的机器权重,第i个部署的物理机对应第i个机器权重,i为小于或者等于m的正整数。

相应地,如图3,对于上述线性函数的构建,可以将图2中步骤103分为如下步骤实现:

步骤1031,基于容器占用容量、每一类容器在第i个部署的物理机上的部署容器数量、以及第i个部署的物理机的机器资源容量构建第i个部署的物理机的剩余资源容量的线性表示。

示例性的,计算机设备将每一类容器的容器占用容量与其在第i个部署的物理机上的部署容器数量相乘,将第i个部署的物理机的机器资源容量减去上述相乘得到的乘积,即得到第i个部署的物理机的剩余资源容量的线性表示。

如步骤103中的示例,构建了物理机Cup1上3类资源的每一类的剩余资源的线性表示LeftCore1、LeftMem1、LeftBendth1,物理机Cup2上3类资源的每一类的剩余资源的线性表示LeftCore2、LeftMem2、LeftBendth2,物理机Cup3上3类资源的每一类的剩余资源的线性表示LeftCore3、LeftMem3、LeftBendth3,则Cup1的剩余资源容量的线性表示为LeftCore1+LeftMem1+LeftBendth1,Cup2的剩余资源容量的线性表示为LeftCore2+LeftMem2+LeftBendth2,Cup3的剩余资源容量的线性表示为LeftCore3+LeftMem3+LeftBendth3。

在一些实施例中,在存在资源剩余的前提下,为了避免出现某资源的剩余为零的情况,设置有剩余资源权重,以尽量保证剩余资源还能够分配利用,即每一台物理机均存在至少两类资源,计算机设备中存在第j类资源与第j个剩余资源权重对应存储,j为正整数;对于每一台物理机的剩余资源容量的线性表示,计算机设备根据容器占用容量、每一类容器在第i个部署的物理机上的部署容器数量构建n类容器占用第i个部署的物理机的第j类资源容量的第一线性表示;将第i个部署的物理机的第j类资源容量减去第一线性表示,得到第i个部署的物理机的第j类资源的剩余容量的第二线性表示;将第二线性表示与第j个剩余资源权重相乘,得到第i个部署的物理机的第j类资源的剩余容量的加权后第二线性表示;将至少两类资源的剩余容量的加权后第二线性表示相加,得到第i个部署的物理机的剩余资源容量的线性表示。

如步骤103中的示例,3类容器占用Cup1的CPU资源容量的第一线性表示为(2×a1+4×e1+1×c1),占用Cup1的内存资源容量的第一线性表示为(8×a1+8×e1+1×c1),占用Cup1的带宽资源容量的第一线性表示为(10×a1+20×e1+10×c1);3类容器占用Cup2的CPU资源容量的第一线性表示为(2×a2+4×e2+1×c2),占用Cup2的内存资源容量的第一线性表示为(8×a2+8×e2+1×c2),占用Cup2的带宽资源容量的第一线性表示为(10×a2+20×e2+10×c2);3类容器占用Cup3的CPU资源容量的第一线性表示为(2×a3+4×e3+1×c3),占用Cup3的内存资源容量的第一线性表示为(8×a3+8×e3+1×c3),占用Cup3的带宽资源容量的第一线性表示为(10×a3+20×e3+10×c3);

之后确定Cup1的CPU资源剩余容量的第二线性表示为LeftCore1,Cup1的内存资源剩余容量的第二线性表示为LeftMem1,Cup1的带宽资源剩余容量的第二线性表示为LeftBendth1;确定Cup2的CPU资源剩余容量的第二线性表示为LeftCore2,Cup2的内存资源剩余容量的第二线性表示为LeftMem2,Cup2的带宽资源剩余容量的第二线性表示为LeftBendth2;确定Cup3的CPU资源剩余容量的第二线性表示为LeftCore3,Cup3的内存资源剩余容量的第二线性表示为LeftMem3,Cup3的带宽资源剩余容量的第二线性表示为LeftBendth3;

若CPU资源的剩余资源权重为W1,内存资源的剩余资源权重为W2,带宽资源的剩余资源权重为W3;则确定Cup1的CPU资源的加权后的第二线性表示为(W1×LeftCore1),Cup1的内存资源的加权后的第二线性表示为(W2×LeftMem1),Cup1的带宽资源的加权后的第二线性表示为(W3×LeftBendth1);Cup2的CPU资源的加权后的第二线性表示为(W1×LeftCore2),Cup2的内存资源的加权后的第二线性表示为(W2×LeftMem2),Cup2的带宽资源的加权后的第二线性表示为(W3×LeftBendth2);Cup3的CPU资源的加权后的第二线性表示为(W1×LeftCore3),Cup3的内存资源的加权后的第二线性表示为(W2×LeftMem3),Cup3的带宽资源的加权后的第二线性表示为(W3×LeftBendth3);

最终得到Cup1的剩余资源容量的线性表示为[(W1×LeftCore1)+(W2×LeftMem1)+(W3×LeftBendth1)],Cup2的剩余资源容量的线性表示为[(W1×LeftCore2)+(W2×LeftMem2)+(W3×LeftBendth2)],Cup3的剩余资源容量的线性表示为[(W1×LeftCore3)+(W2×LeftMem3)+(W3×LeftBendth3)]。

步骤1032,将第i个部署的物理机的剩余资源容量的线性表示与第i个机器权重相乘,得到第i个部署的物理机的剩余资源容量的加权线性表示。

计算机设备中预先设置有m台物理机对应的m个机器权重,计算机设备确定出第i个部署的物理机对应的第i个机器权重,将第i个部署的物理机的剩余资源容量的线性表示与第i个机器权重相乘,得到第i个部署的物理机对应的加权线性表示。

可选地,计算机设备中设置m台物理机的机器权重相加为1,且m个机器权重为等差数列。可选地,机器权重与物理机的部署顺序呈负相关,物理机的排序越靠后,机器权重越小。

示例性的,若步骤1031中物理机的部署顺序依次为Cup1、Cup2、Cup3,对应的机器权重分别为We1、We2、We3,其中,We1、We2、We3的和为1,计算机设备得到Cup1的加权线性表示为We1×(LeftCore1+LeftMem1+LeftBendth1),Cup2的加权线性表示为We2×(LeftCore2+LeftMem2+LeftBendth2),Cup3的加权线性表示为We3×(LeftCore3+LeftMem3+LeftBendth3)。

在一些实施例中,计算机设备得到的Cup1的加权线性表示还可以为We1×[(W1×LeftCore1)+(W2×LeftMem1)+(W3×LeftBendth1)],Cup2的加权线性表示还可以为We2×[(W1×LeftCore2)+(W2×LeftMem2)+(W3×LeftBendth2)],Cup3的加权线性表示还可以为We3×[(W1×LeftCore3)+(W2×LeftMem3)+(W3×LeftBendth3)]。

步骤1033,将m台物理机的剩余资源容量的m个加权线性表示相加,得到以每一类容器在每一台物理机上的部署容器数量为自变量、m台物理机的总剩余资源容量为因变量线性函数。

示例性的,将上述3台物理机对应的3个加权线性表示相加,得到线性函数:Left=We1×(LeftCore1+LeftMem1+LeftBendth1)+We2×(LeftCore2+LeftMem2+LeftBendth2)+We3×(LeftCore3+LeftMem3+LeftBendth3)。

在一些实施例中,将上述3台物理机对应的3个加权线性表示相加,得到线性函数:Left=We1×[(W1×LeftCore1)+(W2×LeftMem1)+(W3×LeftBendth1)]+We2×[(W1×LeftCore2)+(W2×LeftMem2)+(W3×LeftBendth2)]+We3×[(W1×LeftCore3)+(W2×LeftMem3)+(W3×LeftBendth3)];相应地,求解函数Left

综上所述,本实施例提供的容器的部署方法,提供的容器规划方法同时对每个物理机上容器部署进行规划,考虑了所要部署的所有物理机的资源利用,为每一个物理机的资源使用设置了权重,以能够达到全局最优的效果;该方法为了保证每一个物理机若存在剩余资源,其还能够分配利用,还设置了剩余资源权重,从而达到每一个物理机上的资源能够充分的利用,最大限度的不浪费物理机资源的效果。

上述实施例可以是在未部署容器的物理机上进行容器混合部署的方法,也可以是在已部署容器的物理机上剩余资源容量较多的物理机上进行容器混合部署的方法;若是在已部署容器的物理机(即已部署物理机)上进行容器混合部署,则上述物理机的机器资源容量则是剩余资源容量。还存在一种情况,已部署物理机的剩余资源容量小于最小可调度资源,即已部署物理机存在剩余资源容量,但是无法部署任何一个容器,此时,为了能够将这一剩余资源容量利用起来,计算机设备可以调度已部署物理机上的容器,重新进行容器部署,示例性的,如图4,示出了本申请的另一个示例性实施例提供的容器的部署方法,该方法包括:

步骤201,响应于已部署物理机的剩余资源容量小于最小可调度资源,对已部署物理机中的至少两个已部署容器按照占用资源容量由小到大排序,得到至少两个已部署容器排序后的序列。

计算机设备检测到已部署物理机的剩余资源容量小于最小可调度资源,响应这一检测信息,计算机设备获取已部署物理机上每一个已部署容器的占用资源容量,按照各自的占用资源容量对至少两个已部署容器按照由小到大的顺序排列,得到至少两个已部署容器排序后的序列。

可选地,已部署物理机上存在至少两类资源,每一类资源对应设置有优先级,计算机设备在基于占用资源容量对已部署容器进行排序的过程中,按照每一类资源的优先级依次进行比较,比如,依照CPU、内存和带宽来排序,首先比较CPU的占用容量,其次比较内存的占用容量,最后比较带宽的占用容量。

步骤202,响应于序列中前k个已部署容器与已部署物理机的剩余资源容量的和大于或者等于最小可调度资源,将前k个已部署容器驱逐出已部署物理机,并放置到待部署容器池中。

其中,k为正整数。示例性的,计算机设备将第一个已部署容器放置到待驱逐容器列表,更新序列;之后继续判断待驱逐列表中已部署容器的资源占用容量与剩余资源容量的和是否大于或者小于最小可调度资源,若是,则将待驱逐列表中的已部署容器驱逐出已部署物理机,若不是,则将更新后序列中的第一个已部署容器放置到待驱逐容器列表,直至待驱逐列表中已部署容器的资源占用容量与剩余资源容量的和大于或者等于最小可调度资源,被驱逐出的容器放置到待部署容器池中,等待重新部署。需要说明的是,需要每一类资源的剩余资源容量的和均大于该类资源的最小可调度资源,才停止对已部署容器的筛选、驱逐。

综上所述,本实施例提供的容器的部署方法,能够将已部署物理机上的碎片资源拼接上,重新利用起来,从而达到对已部署物理机的资源的充分利用,避免物理机资源的浪费。

图5示出了本申请一个示例性实施例提供的容器的部署装置的框图,该装置可以通过软件、硬件、或者二者结合实现成为服务器或者终端的部分或者全部,该装置包括:

获取模块301,用于获取n类容器中每一类容器的容器占用容量和容器数量,n为正整数;获取m台物理机中每一台物理机的机器资源容量,m为正整数;

构建模块302,用于基于容器占用容量、机器资源容量,以每一类容器在每一台物理机上的部署容器数量为自变量、m台物理机被n类容器占用后的总剩余资源容量为因变量构建线性函数;

计算模块303,用于以容器数量、机器资源容量为约束,基于线性函数计算总剩余资源容量最小时每一台物理机上部署每一类容器的部署容器数量;

部署模块304,用于按照每一台物理机上部署每一类容器的部署容器数量进行容器部署。

在一些实施例中,该装置中存储有按照机器的部署顺序设置的机器权重,第i个部署的物理机对应第i个机器权重,i为小于或者等于m的正整数;

构建模块302,用于基于容器占用容量、每一类容器在第i个部署的物理机上的部署容器数量、以及第i个部署的物理机的机器资源容量构建第i个部署的物理机的剩余资源容量的线性表示;

构建模块302,用于将第i个部署的物理机的剩余资源容量的线性表示与第i个机器权重相乘,得到第i个部署的物理机的剩余资源容量的加权线性表示;

构建模块302,用于将m台物理机的剩余资源容量的m个加权线性表示相加,得到以每一类容器在每一台物理机上的部署容器数量为自变量、m台物理机后的总剩余资源容量为因变量的线性函数。

在一些实施例中,每一台物理机均存在至少两类资源,装置中存在第j类资源与第j个剩余资源权重对应存储,j为正整数;

构建模块302,用于根据容器占用容量、每一类容器在第i个部署的物理机上的部署容器数量构建n类容器占用第i个部署的物理机的第j类资源容量的第一线性表示;将第i个部署的物理机的第j类资源容量减去第一线性表示,得到第i个部署的物理机的第j类资源的剩余容量的第二线性表示;

构建模块302,用于将第二线性表示与第j个剩余资源权重相乘,得到第i个部署的物理机的第j类资源的剩余容量的加权后第二线性表示;将至少两类资源的剩余容量的加权后第二线性表示相加,得到第i个部署的物理机的剩余资源容量的线性表示。

在一些实施例中,获取模块301,用于获取候选容器中运行的应用程序的程序发布时长;响应于程序发布时长大于时长阈值,将候选容器确定为容器。

在一些实施例中,获取模块301,用于获取候选容器在指定时间段内使用资源容量的变化率;响应于变化率小于变化率阈值,将候选容器确定为容器。

在一些实施例中,该装置还包括:

排序模块305,用于响应于已部署物理机的剩余资源容量小于最小可调度资源,对已部署物理机中的至少两个已部署容器按照占用资源容量由小到大排序,得到至少两个已部署容器排序后的序列;

调度模块306,用于响应于序列中前k个已部署容器与已部署物理机的剩余资源容量的和大于最小可调度资源,将前k个已部署容器驱逐出已部署物理机,并放置到待部署容器池中,k为正整数。

综上所述,本实施例提供的容器的部署装置,基于应用所需部署容器占用的资源容量、物理机提供的资源容量构建物理机上部署应用之后剩余资源容量的线性函数,在剩余资源容量最小的情况下,直接确定出在各个物理机上应用的部署容器数量,并按照上述确定出的各个物理机上应用的部署容器数量对应用进行部署,无需对应用的每个容器进行在每个物理机上部署的打分操作,大大减小了机器计算量,降低了计算成本,提高了机器的计算效率,也提高了容器的部署效率。

图6示出了本申请一个示例性实施例提供的计算机设备的结构示意图。该计算机设备可以是执行如本申请提供的容器的部署方法的设备,该计算机设备可以是终端或者服务器。具体来讲:

计算机设备400包括中央处理单元(CPU,Central Processing Unit)401、包括随机存取存储器(RAM,Random Access Memory)402和只读存储器(ROM,Read Only Memory)403的系统存储器404,以及连接系统存储器404和中央处理单元401的系统总线405。计算机设备400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统,Input Output System)406,和用于存储操作系统413、应用程序414和其他程序模块415的大容量存储设备407。

基本输入/输出系统406包括有用于显示信息的显示器408和用于用户输入信息的诸如鼠标、键盘之类的输入设备409。其中显示器408和输入设备409都通过连接到系统总线405的输入输出控制器410连接到中央处理单元401。基本输入/输出系统406还可以包括输入输出控制器410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器410还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备407通过连接到系统总线405的大容量存储控制器(未示出)连接到中央处理单元401。大容量存储设备407及其相关联的计算机可读介质为计算机设备400提供非易失性存储。也就是说,大容量存储设备407可以包括诸如硬盘或者紧凑型光盘只读存储器(CD-ROM,Compact Disc Read Only Memory)驱动器之类的计算机可读介质(未示出)。

计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(DVD,Digital Versatile Disc)或固态硬盘(SSD,Solid State Drives)、其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器404和大容量存储设备407可以统称为存储器。

根据本申请的各种实施例,计算机设备400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备400可以通过连接在系统总线405上的网络接口单元411连接到网络412,或者说,也可以使用网络接口单元411来连接到其他类型的网络或远程计算机系统(未示出)。

上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。

在一个可选的实施例中,提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的容器的部署方法。

在一个可选的实施例中,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的容器的部署方法。

可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

本申请还提供一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的容器的部署方法。

本申请还提供了一种计算机程序产品,上述计算机程序产品包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上所述的容器的部署方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 容器部署方法、装置、设备、存储介质及容器部署系统
  • 容器组pod的部署配置方法、装置、设备及存储介质
技术分类

06120112246026