专利名称:容器资源调度方法、装置、计算机设备和存储介质
专利类型:实用新型专利
专利申请号:CN202111534118.9
专利申请(专利权)人:中国工商银行股份有限公司
权利人地址:北京市西城区复兴门内大街55号
专利发明(设计)人:李华,温丽明,帅翡芍,郑洁锋
专利摘要:本申请涉及一种容器资源调度方法、装置、计算机设备、存储介质和计算机程序产品,用于大数据或其他领域。通过将容器中的多种运行资源形成多个状态节点构建马尔科夫链有向图,根据多个状态节点间的历史状态转移次数获取马尔科夫链有向图对应的转移概率矩阵,根据转移概率矩阵、容器中的运行资源数量以及当前容器中运行资源使用最多的服务使用的主导运行资源,确定容器对应的第二主导运行资源,根据第二主导运行资源对容器中的运行资源进行调度。相较于传统的通过实时监控容器的主导运行资源变化,再进行一系列调度的方式,本方案通过构建马尔科夫链有向图,利用转移概率矩阵对容器中的主导运行资源进行预测,从而可以提高对容器中资源调度的效率。
主权利要求:
1.一种容器资源调度方法,其特征在于,所述方法包括:
获取容器的多种运行资源,根据所述多种运行资源构建马尔科夫链有向图;所述马尔科夫链有向图中包含多个状态节点;
获取所述多个状态节点间对应的历史状态转移次数,根据所述历史状态转移次数获取所述马尔科夫链有向图对应的转移概率矩阵;
根据所述转移概率矩阵、所述容器中的运行资源数量以及第一主导运行资源,确定所述容器对应的第二主导运行资源,并根据所述第二主导运行资源对所述容器中的运行资源进行调度;所述主导运行资源表征所述容器中运行资源使用最多的服务使用的运行资源;
所述第一主导运行资源的调用时间早于所述第二主导运行资源;
所述根据所述转移概率矩阵、所述容器中的运行资源数量以及第一主导运行资源,确定所述容器对应的第二主导运行资源,包括:针对所述容器中运行的每个服务,获取该服务对应的每种运行资源与所述容器中的多种运行资源的资源上限的比值,根据多个所述比值得到该服务对应的运行资源消耗值;获取多个所述服务的运行资源消耗值的最大值,作为所述容器的第一主导运行资源;根据第一时间步对应的第一主导运行资源与所述转移概率矩阵形成贝叶斯条件概率公式,确定第二时间步对应的多个主导运行资源;所述第一时间步早于所述第二时间步;获取所述第二时间步对应的多个主导运行资源中大于或等于所述第一主导运行资源的候选主导运行资源,并将所述候选主导运行资源中的最大值作为所述第二主导运行资源。
2.根据权利要求1所述的方法,其特征在于,所述获取容器的多种运行资源,包括:获取所述容器对应的处理器资源、内存资源、网络输入输出资源以及块输入输出资源,作为所述多种运行资源。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收到容器的启动指令,获取所述容器中已启动的服务在单位时间内的运行资源消耗平均值,得到多个运行资源消耗平均值;
根据所述运行资源消耗平均值中的最大值,确定初始主导服务,将所述初始主导服务对应的运行资源作为初始主导运行资源。
4.根据权利要求1所述的方法,其特征在于,所述根据所述历史状态转移次数获取所述马尔科夫链有向图对应的转移概率矩阵,包括:获取马尔科夫链有向图中从第一状态节点转移至第二状态节点对应的多个历史状态转移次数,并获取所述多个历史状态转移次数的和;
针对每个历史状态转移次数,获取该历史状态转移次数与所述多个历史状态转移次数的和的比值,作为状态转移对应的转移概率;
根据多个所述转移概率,得到所述转移概率矩阵。
5.根据权利要求1所述的方法,其特征在于,所述确定所述容器对应的第二主导运行资源之后,还包括:检测所述容器中剩余运行资源是否大于所述第二主导运行资源预设运行资源数值;
若否,重新确定所述容器的第二主导运行资源,以使所述第二主导运行资源小于所述剩余运行资源预设运行资源数值。
6.一种容器资源调度装置,其特征在于,所述装置包括:
第一获取模块,用于获取容器的多种运行资源,根据所述多种运行资源构建马尔科夫链有向图;所述马尔科夫链有向图中包含多个状态节点;
第二获取模块,用于获取所述多个状态节点间对应的历史状态转移次数,根据所述历史状态转移次数获取所述马尔科夫链有向图对应的转移概率矩阵;
调度模块,用于根据所述转移概率矩阵、所述容器中的运行资源数量以及第一主导运行资源,确定所述容器对应的第二主导运行资源,并根据所述第二主导运行资源对所述容器中的运行资源进行调度;所述主导运行资源表征所述容器中运行资源使用最多的服务使用的运行资源;所述第一主导运行资源的调用时间早于所述第二主导运行资源;具体用于:针对所述容器中运行的每个服务,获取该服务对应的每种运行资源与所述容器中的多种运行资源的资源上限的比值,根据多个所述比值得到该服务对应的运行资源消耗值;获取多个所述服务的运行资源消耗值的最大值,作为所述容器的第一主导运行资源;根据第一时间步对应的第一主导运行资源与所述转移概率矩阵形成贝叶斯条件概率公式,确定第二时间步对应的多个主导运行资源;所述第一时间步早于所述第二时间步;获取所述第二时间步对应的多个主导运行资源中大于或等于所述第一主导运行资源的候选主导运行资源,并将所述候选主导运行资源中的最大值作为所述第二主导运行资源。
7.根据权利要求6所述的装置,其特征在于,所述第一获取模块,具体用于:
获取所述容器对应的处理器资源、内存资源、网络输入输出资源以及块输入输出资源,作为所述多种运行资源。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。 说明书 : 容器资源调度方法、装置、计算机设备和存储介质技术领域[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] 图1为一个实施例中容器资源调度方法的应用环境图;[0035] 图2为一个实施例中容器资源调度方法的流程示意图;[0036] 图3为一个实施例中容器资源调度系统的结构示意图;[0037] 图4为一个实施例中马尔科夫链有向图的结构示意图;[0038] 图5为另一个实施例中容器资源调度方法的流程示意图;[0039] 图6为一个实施例中容器资源调度装置的结构框图;[0040] 图7为一个实施例中计算机设备的内部结构图。具体实施方式[0041] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。[0042] 本申请实施例提供的容器资源调度方法,可以应用于如图1所示的应用环境中。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。服务器104可以基于容器中的多种运行资源构建马尔科夫链有向图,并基于有向图中的多个状态节点的历史状态转移次数,获取对应的转移概率矩阵,从而服务器104基于转移概率矩阵对容器中的主导运行资源进行预测和调度。在一些实施例中,还包括终端102。其中,终端102通过网络与服务器104进行通信。服务器104可以将调度结果发送至终端102中,从而终端102可以对服务器104的调度结果和运行状态进行展示。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。需要说明的是,本公开容器资源调度方法可用于大数据领域,也可以用于除大数据领域之外的任意领域,本公开的容器资源调度方法的应用领域不做限定。[0043] 在一个实施例中,如图2所示,提供了一种容器资源调度方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:[0044] 步骤S202,获取容器的多种运行资源,根据多种运行资源构建马尔科夫链有向图;马尔科夫链有向图中包含多个状态节点。[0045] 其中,容器是云计算的产物,可以理解为典型的虚拟机的下一代产品,因为其具有轻量化、快速部署、开源、弹性伸缩等等优秀特点,目前已经大量在国内互联网领域使用,远程办公模式更加促进了这种技术的发展,比如一些云桌面就用到了容器。Docker是容器的一种,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。容器中可以包括多种运行资源,可以用以维持容器的运行,而容器需要利用各个资源支持不同服务的执行,由于不同服务所需要的运行资源不同,并且容器中运行的服务是会随着时间改变的,因此容器需要将自身资源进行调度以适应目前最繁忙的服务的资源需求,即需要对容器中的资源进行调度。[0046] 服务器104可以首先将容器进行初始化,并为初始化的容器进行初始化的主导运行资源的设置。容器的结构可以如图3所示,图3为一个实施例中容器资源调度系统的结构示意图。服务器104可以将容器服务按照给定的初始化主导运行资源进行放置,此时的容器服务处于暂时的稳态。服务器104可以采用基于cAdvisor+InfluxDB的容器集群性能监控方案。cAdvisor是谷歌公司用来分析运行中的Docker容器的资源占用以及性能特性的工具。cAdvisor是一个运行中的守护进程,用来收集、聚合、处理和导出运行容器相关的信息,每个容器保持独立的参数、历史资源使用情况和完整的资源使用数据;influxdb是处理高写入的influxdb,用于存储大量的时序数据并进行实时分析的数据库。Google开源工具cAdvisor用来采集集群中节点、容器和服务三个维度细化监控指标数据,并在其collector层扩展数据库功能。采用基于分布式时序的InfluxDB作为监控数据存储模块。将集群数据按照时间片进行采集、划分、归档、存储、联动。其中,主导运行资源可以是容器中运行最频繁的服务所使用的资源,影响容器服务的主要资源需求。在云计算中,特定的容器服务,它的主导运行资源的属性也是遵循一定的规律的,例如:一个提供人脸识别的容器服务,某一段时间需要从镜像中心拉取一批计算功能的镜像。镜像安装后,在另外一段时间后被频繁使用,显然在下载镜像和使用人脸识别应用计算,两者主导运行资源的属性已经发生变化,这时就需要调度,尤其是在异构集群环境中。而调度指的是将一个容器换在另外的宿主节点运行,一个节点是可以运行多个容器的,在k8s里,一个容器通常被包含在一个pod里,pod是调度的最小单位。通常在节点中,各容器共享了宿主节点的资源,因为它没有内核,没有资源限制,会根据程序的需求尽可能使用资源。[0047] 当容器中频繁使用的服务发生变化时,服务器104需要对容器进行资源调度。服务器104可以通过预测的方式提前确定需要调度的资源,服务器104可以获取容器的多种运行资源,并根据多种运行资源构建马尔科夫链有向图。其中,是概率论和数理统计汇总描述离散随机过程的概念,在动力系统、排队论、金融领域、信号处理各方面都有用到。在数学中,马尔可夫链的定义就是一条公示,用语言可描述为,在随机变量集合X和状态空间A中,状态t到状态t+1(t理解为时间步)的概率不依赖于之前状态的情况,这种性质叫无后效性或者无记忆性,无后效性是马尔可夫过程的最重要的性质,指的是某个阶段状态的已知,则此后状态的发展变化仅与此过程有关。比如,我今天中午吃不吃饭,只跟我早上吃不吃饭有关,和昨天、前天的情况没关系;上述马尔科夫链有向图中可以包括多个状态节点,而上述各个运行资源可以作为马尔科夫链有向图中的各个状态节点。例如,在一个实施例中,获取容器的多种运行资源,包括:获取容器对应的处理器资源、内存资源、网络输入输出资源以及块输入输出资源,作为多种运行资源。本实施例中,服务器104可以获取容器中的处理器资源、内存资源、网络输入输出资源以及块输入输出资源,作为上述多种运行资源。其中,上述每种资源分别对应容器中的不同的处理设备,处理器资源可以是容器的CPU、内存资源可以是容器中的内存、网络输入输出资源可以是NetI/O、块输入输出资源可以是BlockI/O。[0048] 服务器104可以利用上述各个运行资源构建马尔科夫链有向图。例如,如图4所示,图4为一个实施例中马尔科夫链有向图的结构示意图。服务器104可以根据马尔可夫链的无后效性可以证明容器的初始化放置,即主导运行资源的初始化设置不影响马尔可夫链其他时间步的状态。服务器104首先将容器内存使用率、CPU使用率、NetI/O、BlockI/O作为马尔可夫链的四个离散状态。其中,两个状态点之间是双向的,可以由状态S1继续保持为状态S1。除初始化主导运行资源外,服务器104把容器服务主导运行资源的四个离散状态作为四种链路节点,从而将容器服务主导运行资源对应的集群节点转化为有向图中点对点的问题。其中,马尔可夫链的演变可以按图的结构表示为转移图,图中每条边都可以赋予一个转移概率,转移概率表示由某个状态到某个状态变化的概率。在概率论和数理统计中,马尔可夫链的下一状态的发生概率仅依靠于上一状态。马尔可夫链的一个应用例子是,在一些的机器学习算法中,道路交通中目标物体的移动方向选择问题。例如,一个人在路口A的时候,有可能走向路口B,也有可能走向路口C,或者D。这种选择可以说并不依赖之前走过的路口,因为只要在路口A的时候,就肯定会选择其中一个固定的路口才能到目的地,这种选择就是转移状态。[0049] 步骤S204,获取多个状态节点间对应的历史状态转移次数,根据历史状态转移次数获取马尔科夫链有向图对应的转移概率矩阵。[0050] 其中,服务器104可以基于上述马尔科夫链有向图中,各个节点之间的历史状态转移次数确定马尔科夫链有向图对应的转移概率矩阵。其中,转移概率可以是上述马尔科夫链有向图中状态由一个节点转变成另一个节点的概率。转移概率矩阵的各个元素的值是非负的,且各行元素之和为1,各元素用概率表示,在一定条件下互相转移。[0051] 步骤S206,根据转移概率矩阵、容器中的运行资源数量以及第一主导运行资源,确定容器对应的第二主导运行资源,并根据第二主导运行资源对容器中的运行资源进行调度;主导运行资源表征容器中运行资源使用最多的服务使用的运行资源;第一主导运行资源的调用时间早于第二主导运行资源。[0052] 其中,服务器104获取上述转移概率矩阵后,可以基于转移概率矩阵、容器中运行资源的数量以及容器中第一主导运行资源,确定容器对应的第二主导运行资源,从而服务器104实现对容器中主导运行资源变化的预测,并基于预测得到的第二主导运行资源进行调度。其中,主导运行资源可以是容器中运行资源使用最多的服务所使用的运行资源;第一主导运行资源的调用时间早于第二主导运行资源,例如,第一主导运行资源可以是当前容器中正在调用的运行资源,第二主导运行资源可以是容器准备调用的下一个主导运行资源。[0053] 上述容器资源调度方法中,通过将容器中的多种运行资源形成多个状态节点构建马尔科夫链有向图,根据多个状态节点间的历史状态转移次数获取马尔科夫链有向图对应的转移概率矩阵,根据转移概率矩阵、容器中的运行资源数量以及当前容器中运行资源使用最多的服务使用的主导运行资源,确定容器对应的第二主导运行资源,并根据第二主导运行资源对容器中的运行资源进行调度。相较于传统的通过实时监控容器的主导运行资源变化,再进行一系列调度的方式,本方案通过构建马尔科夫链有向图,利用转移概率矩阵对容器中的主导运行资源进行预测,从而可以提高对容器中资源调度的效率。[0054] 在一个实施例中,还包括:接收到容器的启动指令,获取容器中已启动的服务在单位时间内的运行资源消耗平均值,得到多个运行资源消耗平均值;根据运行资源消耗平均值中的最大值,确定初始主导服务,将初始主导服务对应的运行资源作为初始主导运行资源。[0055] 本实施例中,服务器104可以在容器开始运行时进行初始资源的配置。服务器104在接收到容器的启动指令时,可以获取容器中已启动的服务在单位时间内的运行资源消耗平均值,从而得到多个运行资源消耗平均值。服务器104可以根据运行资源消耗平均值中的最大值,确定初始主导服务,并将初始主导服务对应的运行资源作为初始主导运行资源,即服务器104可以在容器开始启动时,将资源消耗最大的服务所使用的资源作为主导运行资源。具体地,服务器104首先设置容器服务的主导运行资源,并记录到InfluxDB中,cAdvisor定时统计集群各节点、容器、服务在单位时间内的平均资源消耗到数据表中,包括内存、CPU、NetI/O、BlockI/O的资源消耗情况。服务器104可以根据设置的容器服务主导运行资源的情况,将容器或服务负载主导运行资源最多的节点,并调用netstat服务侦听冲突端口,过滤集群节点集。[0056] 通过本实施例,服务器104可以在容器启动时通过检测服务的资源消耗值来确定初始主导运行资源,从而提高了资源调度的效率。[0057] 在一个实施例中,根据历史状态转移次数获取马尔科夫链有向图对应的转移概率矩阵,包括:获取马尔科夫链有向图中从第一状态节点转移至第二状态节点对应的多个历史状态转移次数,并获取多个历史状态转移次数的和;针对每个历史状态转移次数,获取该历史状态转移次数与多个历史状态转移次数的和的比值,作为该次状态转移对应的转移概率;根据多个转移概率,得到转移概率矩阵。[0058] 本实施例中,服务器104可以基于马尔科夫链有向图中的历史状态转移次数,获取对应的转移概率矩阵。例如,服务器104可以获取马尔科夫链有向图中,从第一状态节点转移至第二状态节点对应的多个历史状态转移次数。其中,第一状态节点和第二状态节点可以是有向图中不同或相同的两个节点,服务器104可以对有向图中任意两个节点之间的状态转移进行转移次数的获取。服务器104还可以获取上述多个历史状态转移次数的和;对于每个历史状态转移次数,服务器104可以获取该历史状态转移次数与多个历史状态转移次数的和的比值,作为该次状态转移对应的转移概率,从而服务器104可以根据多个转移概率,得到上述状态转移概率矩阵。[0059] 其中,服务器104可以预先对状态转移概率矩阵的结构进行设定。例如,服务器104可以设容器服务主导运行资源的随机序列{X(t),t=0,1,2...}的离散空间为E,对于任意自然数k和任意的m个正整数t1,t2,...,tm(0≤t1<t2<...<tm)以及任意的i1,i2,...,im,j∈E满足P{X(tm+k)=j|X(t1)=i1,X(t2)=i2,...,X(tm)=im}=P{X(tm+k)=j|X(tm)=im};上式中,tm表示当前时间,t1,t2,...,tm‑1表示过去时间,tm+k表示将来的k时间步。由马尔可夫性,服务器104将马尔可夫链在t时间的k步转移概率记为Pij(t,t+k):则Pij(t,t+k)=P{X(tm+k)=j|X(tm)=im},k>0;容器服务主导运行资源属性是一种齐次马尔可夫链,这种状态只与转移出发状态i、转移步数k及转移到达状态j有关,而与时间t无关。此时,k步转移概率可记为Pij(k),即Pij(k)=Pij(t,t+k)=P{X(t+k)=j|X(t)=i},k>0;其中当k=1时,Pij(1)表示一步转移概率,记为Pij,一步转移矩阵P(1)由所有一步转移概率Pij组成,所有t步转移概率为Pij(t),构成的矩阵P(t)为马尔可夫链的t步转移概率矩阵。[0060] 服务器104还可以基于Chapman‑Kolmogorov(切谱曼‑柯尔莫哥洛夫方程)方程计算得到转移概率矩阵的函数关系。其中,Chapman‑Kolmogorov方程,也叫C‑K方程,在n步转移概率的计算中用到,对于齐次的马尔可夫链来说,n步的转移概率矩阵就是一次转移概率矩阵的n次方。例如,服务器104基于Chapman‑Kolmogorov方程,得到:[0061][0062] 从而服务器104可以得到递推关系:P(t)=P(1)P(t‑1)=P(t‑1)P(1),从而P(t)=tP;进一步地,上述容器服务主导运行资源属性由状态i到状态j的历史状态转移次数统计为Cij,则转移概率矩阵的获取公式可以如下所示:[0063] 而服务器104可以基于上述递推关系,[0064] 得到k步转移概率矩阵为:[0065][0066] 通过本实施例,服务器104可以基于多个历史状态转移次数得到转移概率矩阵,从而服务器104可以基于转移概率矩阵对容器中的主导运行资源转移进行预测,提高容器中资源调度的效率。[0067] 在一个实施例中,根据转移概率矩阵、容器中的运行资源数量以及第一主导运行资源,确定容器对应的第二主导运行资源,包括:针对容器中运行的每个服务,获取该服务对应的每种运行资源与容器中的多种运行资源的资源上限的比值,根据多个比值得到该服务对应的运行资源消耗值;获取多个服务的运行资源消耗值的最大值,作为容器的第一主导运行资源;根据第一时间步对应的第一主导运行资源与转移概率矩阵形成贝叶斯条件概率公式,确定第二时间步对应的多个主导运行资源;第一时间步早于第二时间步;获取第二时间步对应的多个主导运行资源中大于或等于第一主导运行资源的候选主导运行资源,并将候选主导运行资源中的最大值作为第二主导运行资源。[0068] 本实施例中,服务器104可以基于转移概率矩阵,容器中运行资源的数量以及容器中第一主导运行资源,确定容器中第二主导运行资源。例如,对于容器中运行的每个服务,服务器104可以获取该服务所使用的每种运行资源与容器中多种运行资源的资源上限的比值,从而服务器104可以得到多个比值,并基于多个比值得到该服务对应的运行资源消耗值。服务器104可以将上述多个服务的运行资源消耗值中的最大值作为容器的第一主导运行资源,服务器104还可以根据第一时间步对应的第一主导运行资源与转移概率矩阵形成贝叶斯条件概率公式,从而确定第二时间步对应的多个主导运行资源。其中,第一时间步早于第二时间步,第一时间步可以是当前所处的时间步,第二时间步可以是当前时间步对应的下一时间步;时间步长就是载荷步中,载荷子步的时间间隔。在静态分析、(静态)非线性分析等这些rate‑independent分析中,在一个载荷步中,时间步长并不反映“真实”的时间,它累计用来反映载荷子步的先后顺序。时间步的大小可自由定,只是表示计算时的一步占整个计算的多少部份而已。例如:算一个载荷,你可以假定算完后结束时间数值是1,也可以是2或者任意一个数字。然后再根据这个时间数字去分成更小的时间数字,这个更小的时间数字就是所谓的时间步。贝叶斯条件概率表示了两个条件概率(P(A|B)和P(B|A))的关系。比如如果你看到一个人总是干好事,则那个人多半是好人,这就是两个条件概率,通过本质事件发生次数判断属性概率。两个条件概率的比值其实就是P(A)比P(B),也就是好人干好事,和干好事就是好人的关系有据可依,用数学语言表达就是,支持某项属性的事件发生愈多,则该属性成立的可能性愈大。[0069] 具体地,服务器104对容器的第二主导运行资源进行预测时,首先遍历集群各节点的资源。假设容器服务sl(sl∈S)包括n个运行的容器,它们存储于集合 中。在集群节点存在y种资源,由 消耗的资源用集合 表示,则其中每个属性 表示单容器上的一类资源,即[0070] 可得集群各节点中容器服务Sl的资源消耗为:[0071][0072] 在上述集群中,每个工作节点的资源是有限的,单节点的资源上限可以是1 2 y即每个服务的上限,集群总资源上限为L={L,L,...,L},即容器中多种运行资源的资源上限。由于因为L可以由li计算得来,所以下式中Rsl可以由节点总资源的百分比来表示:[0073][0074] 从而服务器104可以基于上述公式,计算节点容器服务主导运行资源函数DOM(sl),其返回该时间步集群阶段容器服务sl的主导运行资源需求类型,其计算公式如下所示:[0075] 上述容器服务主导运行资源属性的k步转移状态,服务器104可以看作首先经过k‑1次状态转移,根据马尔可夫过程的无后效性和贝叶斯条件概率公式,可以得到以下函数: 其中,服务器104在容器服务主导运行资源属性的马尔可夫链中,预测转移步数为1,服务器104可以将容器服务主导运行资源的选择,转化为求X(t)最大元素对应的资源属性作为第二主导运行资源的预测。[0076] 此外,容器服务主导运行资源属性初始状态为单一属性,服务器104在随后的调度中,不仅需要满足前一状态的主导运行资源需求,还需要满足后一状态的主导运行资源需求。在得到容器服务第二主导运行资源后,将容器进行调度,即服务器104调度后的节点资源不仅要满足t‑1时间的主导运行资源 也要满足t时间的主导运行资源属性[0077] 通过本实施例,服务器104可以基于转移概率矩阵以及贝叶斯条件概率对容器中的第二主导运行资源进行预测,提高了容器中资源调度的效率。[0078] 在一个实施例中,确定容器对应的第二主导运行资源之后,还包括:检测容器中剩余运行资源是否大于第二主导运行资源预设运行资源数值;若否,重新确定容器的第二主导运行资源,以使第二主导运行资源小于剩余运行资源预设运行资源数值。[0079] 本实施例中,服务器104还可以对容器中的资源需求进行动态监控反馈。服务器104在确定容器的第二主导运行资源后,在进行调度前,可以检测容器中剩余运行资源是否大于第二主导运行资源预设运行资源数值,即容器中剩余运行资源是否满足第二主导运行资源的需求。若是,则服务器104可以执行调度过程;若否,则服务器104可以重新确定容器中的第二主导运行资源,使得第二主导运行资源小于容器中剩余运行资源预设运行资源数值,即容器中的剩余运行资源需要满足第二主导运行资源的需求。[0080] 具体地,在集群高负载的情况下,容器服务主导资源需求动态变化,集群调度框架基于上述初始化配置运行资源和预测下一主导资源的步骤,服务器104可以监测容器服务调度前后的应用程序性能,保证容器服务的高可用。其中,高可用指的是服务的高可用性,减少停工时间,在容器集群中,理解为一个或多个容器能够持续提供特定的服务。例如,服务器104设置集群节点资源枯竭预警阈值,即上述预设运行资源数值,结合容器服务主导资源属性以及容器节点负载冲突判断,若未到达第二时间步,则将容器再调度,最后终止原容器实例释放集群资源。[0081] 通过本实施例,服务器104可以基于预设的资源预警阈值,对服务器104的资源调度过程进行监控反馈,从而提高了容器中资源调度的安全和效率。[0082] 在一个实施例中,如图5所示,图5为另一个实施例中容器资源调度方法的流程示意图。本实施例中,服务器可以首先进行数据的采集,包括对容器中初始化资源放置以及采集指标数据。服务器104首先设置容器服务的主导资源,并记录到InfluxDB中。cAdvisor定时统计集群各节点、容器、服务在单位时间内的平均资源消耗到数据表中,包括内存、CPU、NetI/O、BlockI/O的资源消耗情况。根据设置的容器服务主导资源的情况,将容器或服务负载主导资源最多的节点,并调用netstat服务侦听冲突端口,过滤集群节点集。其具体地实现算法可以如下所示:[0083] 算法1:初始化放置[0084] 输入:候选节点工作集Wopt,master维护的服务集{MS}[0085] 输出:经过过滤的Wid[0086][0087] 算法1描述了将容器初始化任务并分配给特定节点的过程,首先,每个管理节点维护一个已知的服务集{MS},记录容器的主导资源并存储在各节点的InfluxDB中,例如内存、CPU、网络I/O和块I/O的使用情况,并选择运行中的工作节点作为负载节点候选集。当一个新的任务到达时,算法根据用户指定的过滤器来缩小候选工作集Wopt,然后获取各容器服务的主导资源Tdom并用来筛选集群节点进行初始化放置。[0088] 服务器104还可以基于历史状态转移次数进行转移概率矩阵的获取,其获取算法如下所示:[0089] 算法2:k步转移概率矩阵获取[0090] 输入:历史转移次数矩阵C={Cij}[0091] 输出:1至k步转移概率矩阵[0092][0093] 服务器104还可以对容器服务的下一主导资源属性进行预测和调度。例如,服务器104对容器主导资源的预测结果被映射为队列NQueueSet,上一时间步主导资源为OQueueSet。资源过滤器ResourceFilter根据获取到的第二时间步和第一时间步的主导资源属性,通过驱动组件在特定节点生成容器和关闭特定服务的容器,并在队列集合MQueueSet进行消息队列的同步处理资源枯竭预警。具体地,主导资源属性预测集容器调度实现算法如下所示,[0094] 算法3:主导资源属性预测及容器调度[0095] 输入:1至k步转移概率矩阵[0096] 总资源类型种类数量n[0097] 当前的主导资源类型rk‑1[0098] 输出:具有最多主导资源的Wid[0099][0100] 上述算法3处理预测容器服务的主导资源,并对容器进行调度,本算法中服务器104首先根据计算的1至k步矩阵累加计算,并对一些预设的不可调度的节点进行过滤。其次,判断服务Sid是否为全局服务,若是则根据第一时间步和第一时间步对应的上一时间步的主导资源属性,寻找调度节点。服务器104首先将满足上一主导资源属性的可选节点全部加入候选集中,然后从候选集中筛选最大主导资源属性的节点作为调度节点并进行调度。当Sid不是全局服务时,服务器104通过将其容器放置到不同的工作节点来提高Sid的可靠性,从而可以在节点候选集进行筛选,其他主要步骤与属于全局服务的Sid相同。[0101] 通过上述实施例,服务器104通过构建马尔科夫链有向图,利用转移概率矩阵对容器中的主导运行资源进行预测,从而可以提高对容器中资源调度的效率。并且服务器104基于cAdvisor+InfluxDB实施对容器集群的各项指标监控,通过构建容器主导资源属性的有向图,并基于容器状态历史和依靠转移概率矩阵评估容器下一主导资源属性的转移概率,协同考虑节点情况和当前服务主导资源的情况进行容器的调度,能够保证容器服务的高可用性,提高应用程序的性能,提高资源利用率。[0102] 应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。[0103] 基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的容器资源调度方法的容器资源调度装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个容器资源调度装置实施例中的具体限定可以参见上文中对于容器资源调度方法的限定,在此不再赘述。[0104] 在一个实施例中,如图6所示,提供了一种容器资源调度装置,包括:第一获取模块500、第二获取模块502和调度模块504,其中:[0105] 第一获取模块500,用于获取容器的多种运行资源,根据多种运行资源构建马尔科夫链有向图;马尔科夫链有向图中包含多个状态节点。[0106] 第二获取模块502,用于获取多个状态节点间对应的历史状态转移次数,根据历史状态转移次数获取马尔科夫链有向图对应的转移概率矩阵。[0107] 调度模块504,用于根据转移概率矩阵、容器中的运行资源数量以及第一主导运行资源,确定容器对应的第二主导运行资源,并根据第二主导运行资源对容器中的运行资源进行调度;主导运行资源表征容器中运行资源使用最多的服务使用的运行资源;第一主导运行资源的调用时间早于第二主导运行资源。[0108] 在一个实施例中,上述第一获取模块500,具体用于获取容器对应的处理器资源、内存资源、网络输入输出资源以及块输入输出资源,作为多种运行资源。[0109] 在一个实施例中,上述装置还包括:初始配置模块,用于接收到容器的启动指令,获取容器中已启动的服务在单位时间内的运行资源消耗平均值,得到多个运行资源消耗平均值;根据运行资源消耗平均值中的最大值,确定初始主导服务,将初始主导服务对应的运行资源作为初始主导运行资源。[0110] 在一个实施例中,上述第二获取模块502,具体用于获取马尔科夫链有向图中从第一状态节点转移至第二状态节点对应的多个历史状态转移次数,并获取多个历史状态转移次数的和;针对每个历史状态转移次数,获取该历史状态转移次数与多个历史状态转移次数的和的比值,作为该次状态转移对应的转移概率;根据多个转移概率,得到转移概率矩阵。[0111] 在一个实施例中,上述调度模块504,具体用于针对容器中运行的每个服务,获取该服务对应的每种运行资源与容器中的多种运行资源的资源上限的比值,根据多个比值得到该服务对应的运行资源消耗值;获取多个服务的运行资源消耗值的最大值,作为容器的第一主导运行资源;根据第一时间步对应的第一主导运行资源与转移概率矩阵形成贝叶斯条件概率公式,确定第二时间步对应的多个主导运行资源;第一时间步早于第二时间步;获取第二时间步对应的多个主导运行资源中大于或等于第一主导运行资源的候选主导运行资源,并将候选主导运行资源中的最大值作为第二主导运行资源。[0112] 在一个实施例中,上述装置还包括:监控模块,用于检测容器中剩余运行资源是否大于第二主导运行资源预设运行资源数值;若否,重新确定容器的第二主导运行资源,以使第二主导运行资源小于剩余运行资源预设运行资源数值。[0113] 上述容器资源调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。[0114] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储容器资源和转移概率矩阵等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种容器资源调度方法。[0115] 本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。[0116] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的容器资源调度方法。[0117] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的容器资源调度方法。[0118] 在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的容器资源调度方法。[0119] 需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。[0120] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(MagnetoresistiveRandomAccessMemory,MRAM)、铁电存储器(FerroelectricRandomAccessMemory,FRAM)、相变存储器(PhaseChangeMemory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(RandomAccessMemory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandomAccessMemory,SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。[0121] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。[0122] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
专利地区:北京
专利申请日期:2021-12-15
专利公开日期:2024-07-26
专利公告号:CN114185679B