CN114296872A - 用于容器集群管理***的调度方法及装置 - Google Patents
用于容器集群管理***的调度方法及装置 Download PDFInfo
- Publication number
- CN114296872A CN114296872A CN202111589860.XA CN202111589860A CN114296872A CN 114296872 A CN114296872 A CN 114296872A CN 202111589860 A CN202111589860 A CN 202111589860A CN 114296872 A CN114296872 A CN 114296872A
- Authority
- CN
- China
- Prior art keywords
- container
- resource
- scheduling
- prediction
- management system
- 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
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开涉及用于容器集群管理***的调度及装置、计算机可存储介质,涉及计算机技术领域。用于容器集群管理***的调度方法包括:获取所述容器集群管理***中多个容器的资源在历史周期内的历史数据;根据每个容器的资源的历史数据,预测所述每个容器的资源在未来周期内的预测数据;针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度。根据本公开,可以减少故障发生的频率,提高应用性能和资源利用率。
Description
技术领域
本公开涉及计算机技术领域,特别涉及用于容器集群管理***的调度方法及装置、计算机可存储介质。
背景技术
容器集群管理***用于管理云平台中多个主机上的容器化的应用。
相关技术中,在容器的资源不足的情况下,发出告警信息,由维护人员根据告警信息,人工参与决策完成容器的资源调度。
发明内容
相关技术中,采用事后告警的机制,容易导致故障响应不及时、业务访问慢,甚至宕机等问题,从而导致资源利用率较低。
针对上述技术问题,本公开提出了一种解决方案,可以减少故障发生的频率,提高应用性能和资源利用率。
根据本公开的第一方面,提供了一种用于容器集群管理***的调度方法,包括:获取所述容器集群管理***中多个容器的资源在历史周期内的历史数据;根据每个容器的资源的历史数据,预测所述每个容器的资源在未来周期内的预测数据;针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度。
在一些实施例中,根据每个容器的资源的历史数据,预测所述每个容器的资源在未来周期内的预测数据包括:将每个容器的资源的历史数据,分别输入到第一预测模型和第二预测模型中,得到第一数据和第二数据;根据所述第一数据和第二数据,确定与所述每个容器对应的预测数据。
在一些实施例中,根据所述第一数据和第二数据,确定与所述每个容器对应的预测数据包括:确定所述第一预测模型和所述第二预测模型的模型权重;利用所述第一预测模型和所述第二预测模型的模型权重,融合所述第一数据和第二数据,得到与所述每个容器对应的预测数据。
在一些实施例中,确定所述第一预测模型和所述第二预测模型的模型权重包括:根据所述第一预测模型的误差平方和以及所述第二预测模型的误差平方和,确定所述第一预测模型和所述第二预测模型的模型权重。
在一些实施例中,根据所述第一预测模型的误差平方和以及所述第二预测模型的误差平方和,确定所述第一预测模型和所述第二预测模型的模型权重包括:计算所述第一预测模型的误差平方和与所述第二预测模型的误差平方和的总和;确定所述第一预测模型的误差平方和与所述总和的比值为所述第一预测模型的模型权重;确定所述第二预测模型的误差平方和与所述总和的比值为所述第二预测模型的模型权重。
在一些实施例中,利用所述第一预测模型和所述第二预测模型的模型权重,融合所述第一数据和第二数据,得到与所述每个容器对应的预测数据包括:利用所述第一预测模型和所述第二预测模型的模型权重对所述第一数据和所述第二数据进行加权处理,得到与所述每个容器对应的预测数据。
在一些实施例中,所述第一预测模型为差分整合移动平均自回归ARIMA模型,所述第二预测模型为前馈BP神经网络模型。
在一些实施例中,与所述每个容器对应的预测数据包括所述每个容器的每种资源在所述未来周期内的各个时间的预测指标值,针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度包括:确定每个容器的每种资源的上限指标值和下限指标值;针对每个容器的每种资源,在所述各个时间的预测指标值存在超过所述上限指标值的情况下,增加所述每个容器的所述每种资源;针对每个容器的每种资源,在所述各个时间的预测指标值存在或者低于所述下限指标值的情况下,回收所述每个容器的所述每种资源。
在一些实施例中,增加所述每个容器的所述每种资源包括:确定所述每个容器的所述每种资源在所述未来周期内的预测指标值的平均值与对应的上限指标值的差值,为所述每个容器的所述每种资源的资源增加量;根据所述每个容器的所述每种资源的资源增加量,增加所述每个容器的所述每种资源。
在一些实施例中,回收所述每个容器的所述每种资源包括:获取所述每个容器的所述每种资源在所述未来周期内的预期资源量;确定所述每个容器的所述每种资源在所述未来周期内的预期资源量与预测指标值的平均值的差值,为所述每个容器的所述每种资源的资源回收量;根据所述每个容器的所述每种资源的资源回收量,回收所述每个容器的所述每种资源。
在一些实施例中,确定每个容器的每种资源的上限指标值和下限指标值包括:获取每个容器的每种资源在所述未来周期内的申请量和最大申请限额;根据所述最大申请限额和上限资源利用率,确定所述每个容器的每种资源的上限指标值;根据所述申请量和下限资源利用率,确定所述每个容器的每种资源的下限指标值。
在一些实施例中,与所述每个容器对应的预测数据包括所述每个容器的每种资源在所述未来周期内的各个时间的预测指标值,针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度包括:针对每个容器的每种资源,从所述各个时间中,确定预测指标值超过所述上限指标值或者低于所述下限指标值的最早时间,作为所述每个容器的所述每种资源的临界时间;根据所述多个容器的每种资源的临界时间,确定每个容器的每种资源的资源调度优先级,所述资源调度优先级与相应的临界时间成正相关;针对每个容器,根据与其对应的每种资源的资源调度优先级,确定所述每个容器的容器调度优先级;按照容器调度优先级从高到低的顺序,在所述未来周期的开始时间对所述多个容器进行资源调度。
在一些实施例中,每个容器具有多种资源,针对每个容器,根据与其对应的每种资源的资源调度优先级,确定所述每个容器的容器调度优先级包括:针对每个容器,根据与其对应的每种资源的资源调度优先级以及每种资源的资源调度权重,确定所述每个容器的容器调度优先级,其中,所述每个容器的每种资源的资源调度权重与所述每个容器所承载的应用的资源消耗类型相关,每个容器的不同资源的资源调度权重之和为1。
在一些实施例中,所述容器集群管理***包括多个节点,每个节点运行一个或多个pod,每个pod包括一个或多个容器,所述调度方法还包括:
针对每个容器,在所述每个容器所在的节点上的资源无法满足所述每个容器的资源调度需求的情况下,响应于针对所述每个容器所承载的应用的pod资源分配请求,获取所述pod资源分配请求中所述应用针对所述每种资源的资源请求量;利用预选算法,从所述多个节点中,初步筛选出符合初始条件的节点,作为候选节点;在候选节点存在多个的情况下,针对每个候选节点,根据所述每个候选节点针对每种资源的资源总量及其已消耗资源量、所述应用针对所述每种资源的资源请求量,确定所述每个候选节点针对所述每种资源的预期资源利用率,所述预期资源利用率表征在所述应用部署到所述每个候选节点的情况下,所述每个候选节点针对每种资源的预期资源利用率;针对每个候选节点,根据所述每个候选节点针对每种资源的预期资源利用率,确定所述每个候选节点针对不同资源的资源利用情况的均衡性得分,所述均衡性得分表征所述每个候选节点针对不同资源的资源利用的均衡性;根据多个候选节点的均衡性得分,从所述多个候选节点中,确定目标节点;将所述应用调度到所述目标节点上。
在一些实施例中,根据所述每个候选节点针对每种资源的预期资源利用率,确定所述每个候选节点针对不同资源的资源利用情况的均衡性得分包括:针对所述每个候选节点,计算每两种资源的预期资源利用率之间的差值;针对所述每个候选节点的多种资源,计算各个差值的平均值;根据所述各个差值的平均值,确定所述每个候选节点的均衡性得分。
在一些实施例中,根据多个候选节点的均衡性得分,从所述多个候选节点中,确定目标节点包括:在所述每个候选节点的均衡性得分与所述各个差值的平均值成正相关的情况下,选择均衡性得分最低的候选节点,作为目标节点;在所述每个候选节点的均衡性得分与所述各个差值的平均值成负相关的情况下,选择均衡性得分最高的候选节点,作为目标节点。
根据本公开第二方面,提供了一种用于容器集群管理***的调度装置,包括:获取模块,被配置为获取所述容器集群管理***中多个容器的资源在历史周期内的历史数据;预测模块,被配置为根据每个容器的资源的历史数据,预测所述每个容器的资源在未来周期内的预测数据;资源调度模块,被配置为针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度。
根据本公开第三方面,提供了一种用于容器集群管理***的调度装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行上述任一实施例所述的用于容器集群管理***的调度方法。
根据本公开的第四方面,提供了一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上述任一实施例所述的用于容器集群管理***的调度方法。
在上述实施例中,可以减少故障发生的频率,提高应用性能和资源利用率。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是示出根据本公开一些实施例的调度方法的流程图;
图2是示出根据本公开一些实施例的用于容器集群管理***的调度装置的框图;
图3是示出根据本公开另一些实施例的用于容器集群管理***的调度装置的框图;
图4是示出根据本公开一些实施例的用于容器集群管理***的调度***的框图;
图5是示出用于实现本公开一些实施例的计算机***的框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是示出根据本公开一些实施例的调度方法的流程图。
如图1所示,用于容器集群管理***的调度方法包括步骤S11-步骤S13。例如,调度方法由容器集群管理***的控制节点(Master)执行。
在步骤S11中,获取容器集群管理***中多个容器的资源在历史周期内的历史数据。在一些实施例中,利用部署在容器集群管理***中的各个节点上的cAdvisor模块,收集相应节点的pod数据。各个节点的pod数据包括多个容器的资源在历史周期内的历史数据。例如,在收集到pod数据后,可以汇总到第三方存储后端,即监控***。例如,监控***包括但不限于开源的***监控和报警***Prometheus。
在步骤S12中,根据每个容器的资源的历史数据,预测每个容器的资源在未来周期内的预测数据。在一些实施例中,可以在未来周期开始时间之前进行***,也可以在未来周期的开始时间预测。在未来周期的开始时间预测可以获得未来周期的前一历史周期的更全面的历史数据,从而可以提高预测的准确性,进而提高调度的准确性和资源利用率。
在一些实施例中,可以通过如下的步骤1)-步骤2)实现上述步骤S12。
1)将每个容器的资源的历史数据,分别输入到第一预测模型和第二预测模型中,得到第一数据和第二数据。
2)根据第一数据和第二数据,确定与每个容器对应的预测数据。
在上述实施例中,通过两个模型结合预测容器对应的预测数据,提高预测的准确性,提高调度准确性,从而进一步可以减少故障发生的频率,提高应用性能和资源利用率。
在一些实施例中,可以先确定第一预测模型和第二预测模型的模型权重;再利用第一预测模型和第二预测模型的模型权重,融合第一数据和第二数据,得到与每个容器对应的预测数据。通过利用模型的权重融合两个模型的预测结果,可以综合不同预测模型的特性,提高预测的准确性,从而进一步提高调度的准确性,进而进一步可以减少故障发生的频率,提高应用性能和资源利用率。
在一些实施例中,可以根据第一预测模型的误差平方和以及第二预测模型的误差平方和,确定第一预测模型和第二预测模型的模型权重。
在一些实施例中,首先计算第一预测模型的误差平方和与第二预测模型的误差平方和的总和;然后确定第一预测模型的误差平方和与总和的比值为第一预测模型的模型权重;最后确定第二预测模型的误差平方和与总和的比值为第二预测模型的模型权重。
在一些实施例中,利用第一预测模型和第二预测模型的模型权重对第一数据和第二数据进行加权处理,得到与每个容器对应的预测数据。例如,预测模型j预测的某个容器在某个时间的初始指标值表示为则n个模型预测的该容器在该时间的目标指标值目标指标值属于预测数据。在一些实施例中,每个容器的每种资源的第一数据、第二数据和预测数据均可以用时序图表示。
在一些实施例中,第一预测模型为ARIMA(Autoregressive Integrated MovingAverage,差分整合移动平均自回归)模型,第二预测模型为BP(Back Propagation,前馈)神经网络模型。采用这两种预测模型进行组合预测,消除单一ARIMA模型预测的残差,尽可能地消除了时间序列资源模型汇总的非线性和混沌性,提高预测的准确性,进一步提高调度的准确性。
在步骤S13中,针对每个容器,根据相应的预测数据,在未来周期的开始时间对每个容器进行资源调度。
在上述实施例中,通过容器的资源在历史周期内的历史数据,预测未来周期内的预测数据,进而根据预测数据对容器进行相应资源的调度,可以预先为容器调度资源,可以减少故障发生的频率,提高应用性能和资源利用率。
在一些实施例中,与每个容器对应的预测数据包括每个容器的每种资源在未来周期内的各个时间的预测指标值。例如,预测指标值为资源使用量。这种情况下,可以通过如下方式实现上述步骤S13。
首先,确定每个容器的每种资源的上限指标值和下限指标值。在一些实施例中,首先获取每个容器的每种资源在未来周期内的申请量和最大申请限额;然后根据最大申请限额和上限资源利用率,确定每个容器的每种资源的上限指标值;最后根据申请量和下限资源利用率,确定每个容器的每种资源的下限指标值。申请量和最大申请限额分别为资源的申请参数request和limit。例如,以Kubernetes为例,申请容器的时候可以指定资源的请求参数,通常在配置文件中。
在一些实施例中,以每个容器包括CPU资源和存储资源为例,第i个容器的CPU资源的上限指标值和下限指标值分别表示为Ricu和Ricd,第i个容器的存储资源的上限指标值和下限指标值分别表示为RiMu和RiMd。上限资源利用率和下限资源利用率分别表示为σ和γ,由监控中用户给出的阈值,不同资源的上、下限资源利用率可以相同也可以不同。以不同资源的上、下限资源利用率相同为例,Ricu=σ×CPUilimit,CPUilimit为CPU资源的最大申请限额。Ricd=γ×CPUirequest,CPUirequest为CPU资源的申请量。Ricu=σ×Memilimit,Memilimit为存储资源的最大申请限额。Ricu=γ×Memirequest,Memirequest为存储资源的申请量。
然后,针对每个容器的每种资源,在各个时间的预测指标值存在超过上限指标值的情况下,增加每个容器的所述每种资源。在一些实施例中,首先确定每个容器的每种资源在未来周期内的预测指标值的平均值与对应的上限指标值的差值,为每个容器的每种资源的资源增加量;然后根据每个容器的每种资源的资源增加量,增加每个容器的每种资源。
最后,针对每个容器的每种资源,在各个时间的预测指标值存在或者低于下限指标值的情况下,回收每个容器的每种资源。在一些实施例中,首先获取每个容器的每种资源在未来周期内的预期资源量;然后确定每个容器的每种资源在未来周期内的预期资源量与预测指标值的平均值的差值,为每个容器的每种资源的资源回收量;最后根据每个容器的每种资源的资源回收量,回收每个容器的每种资源。
例如,调度周期设置为T,调度周期的开始时间为tnow,针对第i个容器的cpu资源截取(tnow,tnow+T)的各个时间的预测指标值,如果存在某个时间的预测指标值f(ticu)=Ricu,则第i个容器的CPU资源在该未来周期内触碰到了资源上限,则生成调度任务记录(status=第一值,ticu,avg(Ric)),其中,status取值为第一值表示第i个容器的CPU资源的临界状态为超出资源上限,avg(Ric)表示第i个容器的CPU资源在该调度周期内的预测指标值的平均值。在一些实施例中,第一值为1。
类似地,如果存在某个时间的预测指标值f(ticd)=Ricd,则第i个容器的CPU资源在该未来周期内触碰到了资源下限,则生成调度任务记录(status=第二值,ticd,avg(Ric)),其中,status取值为第一值表示第i个容器的CPU资源的临界状态为超出资源上限,avg(Ric)表示第i个容器的CPU资源在该调度周期内的预测指标值的平均值。在一些实施例中,第二值为2。
同理还可以生成针对其他资源的调度任务,此处不再赘述。
如果status=1,需增加资源量,资源增加量为avg(Ri)-Riu,其中,avg(Ri)为资源在相应调度周期内的预测指标值的平均值,Riu为资源上限指标值。
如果status=2,需回收资源量,资源回收量为Riw-avg(Ri),其中,avg(Ri)为资源在相应调度周期内的预测指标值的平均值,Riw为介于资源上限指标值和下限指标值之间的一个值,可设置为期望达到的资源使用量。
在一些实施例中,以与所述每个容器对应的预测数据包括所述每个容器的每种资源在所述未来周期内的各个时间的预测指标值为例,可以通过如下方式实现上述步骤S13。
首先,针对每个容器的每种资源,从各个时间中,确定预测指标值超过上限指标值或者低于下限指标值的最早时间,作为每个容器的每种资源的临界时间。
其次,根据多个容器的每种资源的临界时间,确定每个容器的每种资源的资源调度优先级。资源调度优先级与相应的临界时间成正相关。
然后,针对每个容器,根据与其对应的每种资源的资源调度优先级,确定每个容器的容器调度优先级。在一些实施例中,以每个容器具有多种资源为例,针对每个容器,根据与其对应的每种资源的资源调度优先级以及每种资源的资源调度权重,确定每个容器的容器调度优先级,其中,每个容器的每种资源的资源调度权重与每个容器所承载的应用的资源消耗类型相关。每个容器的不同资源的资源调度权重之和为1针对某个容器,该容器所承载的应用的资源消耗类型决定于该应用针对各个资源的资源利用率中最大的资源利用率所对应的资源。
例如,以容器具有CPU资源和存储资源为例,容器所承载的应用针对CPU资源的资源利用率高于其他资源的资源利用率,表示该容器所承载的应用为CPU消耗型应用,则该容器的CPU资源的资源调度权重最大,存储资源的资源调度权重次之。类似的,容器所承载的应用针对存储资源的资源利用率高于其他资源的资源利用率,表示该容器所承载的应用为内存消耗型应用,则该容器的存储资源的资源调度权重最大,CPU资源的资源调度权重次之。通过根据容器承载的应用的资源消耗类型,赋予每个容器的每种资源相应的资源调度权重,在调度过程中考虑了不同应用的资源消耗类型,提高调度的均衡性和准确性。
以某容器包括CPU资源和存储资源为例,PC表示CPU资源的资源调度优先级,PM表示存储资源的资源调度优先级,α和β分别表示CPU资源和存储资源的资源调度权重,则该容器的容器调度优先级P=α×PC+β×PM。α和β之和为1。可以根据容器承载的应用的资源消耗类型的不同而设置不同的资源调度权重。
最后,按照容器调度优先级从高到低的顺序,在未来周期的开始时间对多个容器进行资源调度。每个容器的每种资源的资源调度量可以参考上述实施例中的资源增加量和资源回收量的计算过程,此处不再赘述。
在上述实施例中,通过获取临界时间,按照临界时间出现的早晚顺序来确定每个容器的每种资源的资源调度优先级,进而综合确定不同容器的容器调度优先级,按照容器调度优先级进行资源调度,可以进一步提高资源利用率,提高调度准确性。
在一些实施例中,容器集群管理***包括多个节点,每个节点运行一个或多个pod,每个pod包括一个或多个容器。
针对每个容器,在每个容器所在的节点上的资源无法满足每个容器的资源调度需求的情况下,可以通过如下方式实现调度。
首先,响应于针对每个容器所承载的应用的pod资源分配请求,获取所述pod资源分配请求中应用针对每种资源的资源请求量(即实际资源请求量)。
其次,利用预选算法,从多个节点中,初步筛选出符合初始条件的节点,作为候选节点。例如,预选算法为predicate调度算法。例如,初始条件包括节点正常、应用所属pod的资源需求能够被节点所满足等。
再次,在候选节点存在多个的情况下,针对每个候选节点,根据每个候选节点针对每种资源的资源总量及其已消耗资源量、应用针对所述每种资源的资源请求量,确定每个候选节点针对所述每种资源的预期资源利用率,预期资源利用率表征在应用部署到每个候选节点的情况下,每个候选节点针对每种资源的预期资源利用率。
以应用当前部署在第i个节点为例,针对第j个候选节点包括CPU资源和存储资源的情况,Sjcused、Sjmused表示候选节点j的CPU资源和存储资源的已消耗资源量,Sjcpu、Sjmem表示候选节点j的CPU资源和存储资源的资源总量。Sicpu、Simem表示针对应用的pod资源分配请求中的应用针对CPU资源和存储资源的资源请求量。那么,候选节点j针对CPU资源的预期资源利用率Wjcpu=(Sjcused+Sicpu)/Sjcpu,候选节点j针对存储资源的预期资源利用率Wjmem=(Sjmused+Simem)/Sjmem。
然后,针对每个候选节点,根据每个候选节点针对每种资源的预期资源利用率,确定每个候选节点针对不同资源的资源利用情况的均衡性得分。
在一些实施例中,首先针对所述每个候选节点,计算每两种资源的预期资源利用率之间的差值;然后针对所述每个候选节点的多种资源,计算各个差值的平均值;最后根据所述各个差值的平均值,确定所述每个候选节点的均衡性得分。每个候选节点的均衡性得分表征该候选节点针对不同资源的资源利用的均衡性。以上述候选节点j为例,候选节点j的均衡性得分可以表示为score=(1-|Wjcpu-Wjmem|)×10。这里的差值为正数,因此采用绝对值表示。
再然后,根据多个候选节点的均衡性得分,从多个候选节点中,确定目标节点。
在一些实施例中,在所述每个候选节点的均衡性得分与所述各个差值的平均值成正相关的情况下,选择均衡性得分最低的候选节点,作为目标节点;在所述每个候选节点的均衡性得分与所述各个差值的平均值成负相关的情况下,选择均衡性得分最高的候选节点,作为目标节点。
在一些实施例中,在候选节点只有一个的情况下,直接将该候选节点作为目标节点。
最后,将应用调度到目标节点上。
在上述实施例中,通过计算各个候选节点针对不同资源的利用率的均衡性得分,来筛选目标节点,考虑了应用的资源消耗类型,可能导致的相同资源消耗类型的应用被调度到同一节点上,造成节点某一资源紧缺,资源不平衡现象,从而引发OOM(Out Of Memory,内存溢出)现象的问题,提高调度的均衡性和资源利用率。OOM现象为在实际运行过程中,Kubernetes等容器集群管理***在资源稀缺时,会开始驱逐Pod,并且QoS(Quality ofService,服务质量)差异会直接影响驱逐Pod的优先级。
图2是示出根据本公开一些实施例的用于容器集群管理***的调度装置的框图。
如图2所示,用于容器集群管理***的调度装置21包括获取模块211、预测模块212和资源调度模块213。
获取模块211被配置为获取容器集群管理***中多个容器的资源在历史周期内的历史数据,例如执行如图1所示的步骤S11。
预测模块212被配置为根据每个容器的资源的历史数据,预测每个容器的资源在未来周期内的预测数据,例如执行如图1所示的步骤S12。
资源调度模块213被配置为针对每个容器,根据相应的预测数据,在未来周期的开始时间对每个容器进行资源调度,例如执行如图1所示的步骤S13。
图3是示出根据本公开另一些实施例的用于容器集群管理***的调度装置的框图。
如图3所示,用于容器集群管理***的调度装置31包括存储器311;以及耦接至该存储器311的处理器312。存储器311用于存储执行用于容器集群管理***的调度方法对应实施例的指令。处理器312被配置为基于存储在存储器311中的指令,执行本公开中任意一些实施例中的用于容器集群管理***的调度方法。
图4是示出根据本公开一些实施例的用于容器集群管理***的调度***的框图。
如图4所示,以Kubernetes***为例,用于容器集群管理***的调度***4包括Master节点41和多个Node节点42。Master节点41包括监控模块411、预测模块412、动态调度模块413、资源申请模块414、负载均衡模块415、schedule组件416、API Server组件417。Node节点42包括cAdvisor组件421和kubelet组件422,其中,cAdvisor组件421对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况等,kubelet组件422维持运行中的Pods以及提供Kubernetes运行时环境。
监控模块411利用Node节点42中的cAdvisor组件421获取容器集群管理***中多个容器的资源在历史周期内的历史数据。
预测模块412根据来自监控模块411的每个容器的资源的历史数据,预测每个容器的资源在未来周期内的预测数据。
动态调度模块413针对每个容器,根据来自预测模块412的相应的预测数据,在未来周期的开始时间对每个容器进行资源调度。
在一些实施例中,动态调度模块413根据来自预测模块412的相应的预测数据,生成调度任务。调度任务例如是为某个容器增加资源或回收资源。
资源申请模块414将生成的调度任务发送给负载均衡模块415。负载均衡模块415判断容器所在的节点上的资源能否满足容器的资源调度需求。如果能够满足,则直接将调度任务发送给schedule组件416。由schedule组件416通过API Server组件417执行调度过程。
如果不能满足,则负载均衡模块415通过从多个节点中预选出符合初始条件的节点作为候选节点,再计算各个候选节点的均衡性得分,从多个候选节点中,确定目标节点,并将确定的目标节点通知schedule组件416。由schedule组件416通过API Server组件417执行调度过程,即将容器承载的应用调度到目标节点上。这里的调度是将容器承载的应用所属的整个pod调度到目标节点上。
在应用资源申请时的节点选择,基本原理是对于新部署应用按照原有调度方法进行选择,对于已有应用,基于应用过往的资源使用情况,判断应用的资源利用率,结合节点本身剩余资源情况,运用算法计算节点得分,该得分综合考虑了应用资源部署后节点的资源利用率的均衡性,得分最高的节点作为待分配节点。在该过程中需要判断首次部署:收到pod部署请求,首先判断该应用是否为首次部署,如果为首次部署应用,按原有负载均衡策略选择节点选择策略,如果非首次部署应用进入本公开的负载均衡策略,即预选候选节点,计算候选节点的均衡性得分,筛选目标节点并调度到目标节点的过程。
图5是示出用于实现本公开一些实施例的计算机***的框图。
如图5所示,计算机***50可以通用计算设备的形式表现。计算机***50包括存储器510、处理器520和连接不同***组件的总线500。
存储器510例如可以包括***存储器、非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序(Boot Loader)以及其他程序等。***存储器可以包括易失性存储介质,例如随机存取存储器(RAM)和/或高速缓存存储器。非易失性存储介质例如存储有执行用于容器集群管理***的调度方法中的至少一种的对应实施例的指令。非易失性存储介质包括但不限于磁盘存储器、光学存储器、闪存等。
处理器520可以用通用处理器、数字信号处理器(DSP)、应用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管等分立硬件组件方式来实现。相应地,诸如判断模块和确定模块的每个模块,可以通过中央处理器(CPU)运行存储器中执行相应步骤的指令来实现,也可以通过执行相应步骤的专用电路来实现。
总线500可以使用多种总线结构中的任意总线结构。例如,总线结构包括但不限于工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、***组件互连(PCI)总线。
计算机***50还可以包括输入输出接口530、网络接口540、存储接口550等。这些接口530、540、550以及存储器510和处理器520之间可以通过总线500连接。输入输出接口530可以为显示器、鼠标、键盘等输入输出设备提供连接接口。网络接口540为各种联网设备提供连接接口。存储接口550为软盘、U盘、SD卡等外部存储设备提供连接接口。
这里,参照根据本公开实施例的方法、装置和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个框以及各框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可提供到通用计算机、专用计算机或其他可编程装置的处理器,以产生一个机器,使得通过处理器执行指令产生实现在流程图和/或框图中一个或多个框中指定的功能的装置。
这些计算机可读程序指令也可存储在计算机可读存储器中,这些指令使得计算机以特定方式工作,从而产生一个制造品,包括实现在流程图和/或框图中一个或多个框中指定的功能的指令。
本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
通过上述实施例中的用于容器集群管理***的调度及装置、计算机可存储介质,可以减少故障发生的频率,提高应用性能和资源利用率。
至此,已经详细描述了根据本公开的用于容器集群管理***的调度及装置、计算机可存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
Claims (19)
1.一种用于容器集群管理***的调度方法,包括:
获取所述容器集群管理***中多个容器的资源在历史周期内的历史数据;
根据每个容器的资源的历史数据,预测所述每个容器的资源在未来周期内的预测数据;
针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度。
2.根据权利要求1所述的用于容器集群管理***的调度方法,其中,根据每个容器的资源的历史数据,预测所述每个容器的资源在未来周期内的预测数据包括:
将每个容器的资源的历史数据,分别输入到第一预测模型和第二预测模型中,得到第一数据和第二数据;
根据所述第一数据和第二数据,确定与所述每个容器对应的预测数据。
3.根据权利要求2所述的用于容器集群管理***的调度方法,其中,根据所述第一数据和第二数据,确定与所述每个容器对应的预测数据包括:
确定所述第一预测模型和所述第二预测模型的模型权重;
利用所述第一预测模型和所述第二预测模型的模型权重,融合所述第一数据和第二数据,得到与所述每个容器对应的预测数据。
4.根据权利要求3所述的用于容器集群管理***的调度方法,其中,确定所述第一预测模型和所述第二预测模型的模型权重包括:
根据所述第一预测模型的误差平方和以及所述第二预测模型的误差平方和,确定所述第一预测模型和所述第二预测模型的模型权重。
5.根据权利要求4所述的用于容器集群管理***的调度方法,其中,根据所述第一预测模型的误差平方和以及所述第二预测模型的误差平方和,确定所述第一预测模型和所述第二预测模型的模型权重包括:
计算所述第一预测模型的误差平方和与所述第二预测模型的误差平方和的总和;
确定所述第一预测模型的误差平方和与所述总和的比值为所述第一预测模型的模型权重;
确定所述第二预测模型的误差平方和与所述总和的比值为所述第二预测模型的模型权重。
6.根据权利要求3-5任一项所述的用于容器集群管理***的调度方法,其中,利用所述第一预测模型和所述第二预测模型的模型权重,融合所述第一数据和第二数据,得到与所述每个容器对应的预测数据包括:
利用所述第一预测模型和所述第二预测模型的模型权重对所述第一数据和所述第二数据进行加权处理,得到与所述每个容器对应的预测数据。
7.根据权利要求2所述的用于容器集群管理***的调度方法,其中,所述第一预测模型为差分整合移动平均自回归ARIMA模型,所述第二预测模型为前馈BP神经网络模型。
8.根据权利要求1所述的用于容器集群管理***的调度方法,其中,与所述每个容器对应的预测数据包括所述每个容器的每种资源在所述未来周期内的各个时间的预测指标值,针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度包括:
确定每个容器的每种资源的上限指标值和下限指标值;
针对每个容器的每种资源,在所述各个时间的预测指标值存在超过所述上限指标值的情况下,增加所述每个容器的所述每种资源;
针对每个容器的每种资源,在所述各个时间的预测指标值存在或者低于所述下限指标值的情况下,回收所述每个容器的所述每种资源。
9.根据权利要求8所述的用于容器集群管理***的调度方法,其中,增加所述每个容器的所述每种资源包括:
确定所述每个容器的所述每种资源在所述未来周期内的预测指标值的平均值与对应的上限指标值的差值,为所述每个容器的所述每种资源的资源增加量;
根据所述每个容器的所述每种资源的资源增加量,增加所述每个容器的所述每种资源。
10.根据权利要求8所述的用于容器集群管理***的调度方法,其中,回收所述每个容器的所述每种资源包括:
获取所述每个容器的所述每种资源在所述未来周期内的预期资源量;
确定所述每个容器的所述每种资源在所述未来周期内的预期资源量与预测指标值的平均值的差值,为所述每个容器的所述每种资源的资源回收量;
根据所述每个容器的所述每种资源的资源回收量,回收所述每个容器的所述每种资源。
11.根据权利要求8所述的用于容器集群管理***的调度方法,其中,确定每个容器的每种资源的上限指标值和下限指标值包括:
获取每个容器的每种资源在所述未来周期内的申请量和最大申请限额;
根据所述最大申请限额和上限资源利用率,确定所述每个容器的每种资源的上限指标值;
根据所述申请量和下限资源利用率,确定所述每个容器的每种资源的下限指标值。
12.根据权利要求1所述的用于容器集群管理***的调度方法,其中,与所述每个容器对应的预测数据包括所述每个容器的每种资源在所述未来周期内的各个时间的预测指标值,针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度包括:
针对每个容器的每种资源,从所述各个时间中,确定预测指标值超过所述上限指标值或者低于所述下限指标值的最早时间,作为所述每个容器的所述每种资源的临界时间;
根据所述多个容器的每种资源的临界时间,确定每个容器的每种资源的资源调度优先级,所述资源调度优先级与相应的临界时间成正相关;
针对每个容器,根据与其对应的每种资源的资源调度优先级,确定所述每个容器的容器调度优先级;
按照容器调度优先级从高到低的顺序,在所述未来周期的开始时间对所述多个容器进行资源调度。
13.根据权利要求12所述的用于容器集群管理***的调度方法,其中,每个容器具有多种资源,针对每个容器,根据与其对应的每种资源的资源调度优先级,确定所述每个容器的容器调度优先级包括:
针对每个容器,根据与其对应的每种资源的资源调度优先级以及每种资源的资源调度权重,确定所述每个容器的容器调度优先级,其中,所述每个容器的每种资源的资源调度权重与所述每个容器所承载的应用的资源消耗类型相关,每个容器的不同资源的资源调度权重之和为1。
14.根据权利要求1所述的用于容器集群管理***的调度方法,其中,所述容器集群管理***包括多个节点,每个节点运行一个或多个pod,每个pod包括一个或多个容器,所述调度方法还包括:
针对每个容器,在所述每个容器所在的节点上的资源无法满足所述每个容器的资源调度需求的情况下,响应于针对所述每个容器所承载的应用的pod资源分配请求,获取所述pod资源分配请求中所述应用针对所述每种资源的资源请求量;
利用预选算法,从所述多个节点中,初步筛选出符合初始条件的节点,作为候选节点;
在候选节点存在多个的情况下,针对每个候选节点,根据所述每个候选节点针对每种资源的资源总量及其已消耗资源量、所述应用针对所述每种资源的资源请求量,确定所述每个候选节点针对所述每种资源的预期资源利用率,所述预期资源利用率表征在所述应用部署到所述每个候选节点的情况下,所述每个候选节点针对每种资源的预期资源利用率;
针对每个候选节点,根据所述每个候选节点针对每种资源的预期资源利用率,确定所述每个候选节点针对不同资源的资源利用情况的均衡性得分,所述均衡性得分表征所述每个候选节点针对不同资源的资源利用的均衡性;
根据多个候选节点的均衡性得分,从所述多个候选节点中,确定目标节点;
将所述应用调度到所述目标节点上。
15.根据权利要求14所述的用于容器集群管理***的调度方法,其中,根据所述每个候选节点针对每种资源的预期资源利用率,确定所述每个候选节点针对不同资源的资源利用情况的均衡性得分包括:
针对所述每个候选节点,计算每两种资源的预期资源利用率之间的差值;
针对所述每个候选节点的多种资源,计算各个差值的平均值;
根据所述各个差值的平均值,确定所述每个候选节点的均衡性得分。
16.根据权利要求15所述的用于容器集群管理***的调度方法,其中,根据多个候选节点的均衡性得分,从所述多个候选节点中,确定目标节点包括:
在所述每个候选节点的均衡性得分与所述各个差值的平均值成正相关的情况下,选择均衡性得分最低的候选节点,作为目标节点;
在所述每个候选节点的均衡性得分与所述各个差值的平均值成负相关的情况下,选择均衡性得分最高的候选节点,作为目标节点。
17.一种用于容器集群管理***的调度装置,包括:
获取模块,被配置为获取所述容器集群管理***中多个容器的资源在历史周期内的历史数据;
预测模块,被配置为根据每个容器的资源的历史数据,预测所述每个容器的资源在未来周期内的预测数据;
资源调度模块,被配置为针对每个容器,根据相应的预测数据,在所述未来周期的开始时间对所述每个容器进行资源调度。
18.一种用于容器集群管理***的调度装置,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行如权利要求1至16任一项所述的用于容器集群管理***的调度方法。
19.一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现如权利要求1至16任一项所述的用于容器集群管理***的调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111589860.XA CN114296872A (zh) | 2021-12-23 | 2021-12-23 | 用于容器集群管理***的调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111589860.XA CN114296872A (zh) | 2021-12-23 | 2021-12-23 | 用于容器集群管理***的调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114296872A true CN114296872A (zh) | 2022-04-08 |
Family
ID=80970349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111589860.XA Pending CN114296872A (zh) | 2021-12-23 | 2021-12-23 | 用于容器集群管理***的调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114296872A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115118602A (zh) * | 2022-06-21 | 2022-09-27 | 中船重工信息科技有限公司 | 一种基于使用量预测的容器资源动态调度方法及*** |
-
2021
- 2021-12-23 CN CN202111589860.XA patent/CN114296872A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115118602A (zh) * | 2022-06-21 | 2022-09-27 | 中船重工信息科技有限公司 | 一种基于使用量预测的容器资源动态调度方法及*** |
CN115118602B (zh) * | 2022-06-21 | 2024-05-07 | 中船重工信息科技有限公司 | 一种基于使用量预测的容器资源动态调度方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558498B2 (en) | Method for scheduling data flow task and apparatus | |
CN110727512B (zh) | 集群资源调度方法、装置、设备及储存介质 | |
CN102667724B (zh) | 用于动态管理加速器资源的方法和*** | |
CN103729248B (zh) | 一种基于缓存感知的确定待迁移任务的方法和装置 | |
JP6241300B2 (ja) | ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム | |
CN105373432B (zh) | 一种基于虚拟资源状态预测的云计算资源调度方法 | |
CN113806018B (zh) | 基于神经网络和分布式缓存的Kubernetes集群资源混合调度方法 | |
CN111966453B (zh) | 一种负载均衡方法、***、设备及存储介质 | |
JP5121936B2 (ja) | リソース割り当て装置及びリソース割り当てプログラム及び記録媒体及びリソース割り当て方法 | |
CN113110914A (zh) | 一种基于微服务架构的物联网平台构建方法 | |
WO2020172852A1 (en) | Computing resource scheduling method, scheduler, internet of things system, and computer readable medium | |
CN112799817A (zh) | 一种微服务资源调度***和方法 | |
US11972301B2 (en) | Allocating computing resources for deferrable virtual machines | |
CN103927231A (zh) | 一种面向数据处理的能耗优化数据集分配方法 | |
CN115576534B (zh) | 原子服务的编排方法、装置、电子设备及存储介质 | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
CN112148468A (zh) | 一种资源调度方法、装置、电子设备及存储介质 | |
CN114296872A (zh) | 用于容器集群管理***的调度方法及装置 | |
CN113378498B (zh) | 一种任务分配方法及装置 | |
WO2020206699A1 (en) | Predicting virtual machine allocation failures on server node clusters | |
CN109992408B (zh) | 一种资源分配方法、装置、电子设备和存储介质 | |
Yang et al. | Design of kubernetes scheduling strategy based on LSTM and grey model | |
CN110728372B (zh) | 一种人工智能模型动态加载的集群设计方法及集群*** | |
Zhang et al. | PRMRAP: A proactive virtual resource management framework in cloud | |
Yang et al. | Trust-based scheduling strategy for cloud workflow applications |
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 |