分布式任务预调度方法及装置与流程

文档序号:17397385发布日期:2019-04-13 00:55阅读:211来源:国知局
分布式任务预调度方法及装置与流程

本申请涉及任务调度技术领域,具体而言,涉及一种分布式任务预调度方法及装置。



背景技术:

分布式任务可以由多个相互独立或者相互依赖的子任务组成,分布式任务的完成状态完全依赖于分布式任务中子任务的完成状态,只有在分布式任务的所有子任务完成时,分布式任务才算完成。

分布式任务的每个子任务可以采用pod运行。其中,pod是容器环境下的“逻辑主机”。在容器管理系统(kubernetes)集群中,pod是所有业务类型的基础,一个pod可以由多个相关且共享磁盘的容器组成,在pod中所有容器都被统一安排和调度。

分布式任务中的子任务可以通过pod方式被调度到kubernetes集群的node上去处理。若分布式任务中存在子任务对应的pod不能被调度到kubernetes集群的node上进行处理,那么该子任务将无法完成,最终也会导致整个分布式任务无法完成。



技术实现要素:

有鉴于此,本申请提供一种分布式任务预调度方法及装置,用于将分布式任务中各子任务进行预调度,以确保各子任务均有节点处理,保证整个分布式任务能被完成。

第一方面,本申请提供一种分布式任务预调度方法,所述方法用于将分布式任务预调度给容器管理系统kubernetes集群,所述kubernetes集群包括多个节点,所述分布式任务包括多个子任务,所述方法包括:

获取kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求;

根据所述kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果;

根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述kubernetes集群;

在判断所述分布式任务中各个子任务不能被调度给所述kubernetes集群时,则不向所述kubernetes集群调度所述分布式任务。

上述方法中,根据kubernetes集群中各个节点的硬件资源与分布式任务中各个子任务的资源需求,将分布式任务的各子任务进行预调度,并在kubernetes集群中各个节点的硬件资源满足分布式任务中各个子任务的资源需求时,将分布式任务中各个子任务调度给对应的kubernetes集群中各个节点;在kubernetes集群中各个节点的硬件资源不满足分布式任务中各个子任务的资源需求时,避免分布式任务被调度到kubernetes集群后分布式任务无法被完成,和分布式任务的部分子任务被调度到kubernetes集群的节点上占用kubernetes集群资源的技术问题,提高分布式任务调度效率。

可选地,在本申请中,所述根据所述kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:

根据kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;

根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;

针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;

所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述kubernetes集群,包括:

若每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述kubernetes集群;

反之,则判定所述分布式任务不能被调度给所述kubernetes集群。

可选地,在本申请中,所述根据所述kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:

根据所述kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;

针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;

所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述kubernetes集群,包括:

若每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述kubernetes集群;

若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述kubernetes集群。

可选地,在本申请中,所述根据所述kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果,包括:

根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;

针对各个子任务按照排列顺序依次在各个节点中,查找满足资源需求的节点;

所述根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述kubernetes集群,包括:

若排序后的每个子任务均查找到满足资源需求的节点,则判定所述分布式任务中各个子任务能被调度给所述kubernetes集群;

若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述kubernetes集群。

可选地,在本申请中,所述根据所述kubernetes集群中各个节点的硬件资源对所述各个节点进行排序,包括:

计算各个节点的硬件资源值;

根据各节点的硬件资源值对所述各个节点进行排序;

其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。

可选地,在本申请中,所述根据所述kubernetes集群中各个节点的硬件资源对所述各个节点进行排序,包括:

计算各个子任务的硬件资源值;

根据各子任务的硬件资源值对所述各个子任务进行排序;

其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。

第二方面,本申请还提供一种分布式任务预调度装置,所述装置用于将分布式任务预调度给容器管理系统kubernetes集群,所述kubernetes集群包括多个节点,所述分布式任务包括多个子任务,所述装置包括:

获取模块,用于获取kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求;

预调度运算模块,用于根据所述kubernetes集群中各个节点的硬件资源以及所述分布式任务中各个子任务的资源需求,对所述分布式任务中各个子任务进行预调度运算,得到预调度运算结果;

判断模块,用于根据所述预调度运算结果,判断所述分布式任务中各个子任务能否被调度给所述kubernetes集群;

预调度模块,用于在判断所述分布式任务中各个子任务不能被调度给所述kubernetes集群时,则不向所述kubernetes集群调度所述分布式任务。

可选地,在本申请中,所述预调度运算模块,包括:

排序子模块,用于根据kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;

所述排序子模块,还用于根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;

查找子模块,用于针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;

所述判断模块,还用于:

在每个子任务均查找到满足资源需求的节点时,判定所述分布式任务中各个子任务能被调度给所述kubernetes集群;

若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述kubernetes集群。

可选地,在本申请中,所述预调度运算模块,包括:

排序子模块,用于根据所述kubernetes集群中各个节点的硬件资源对所述各个节点进行排序;

查找子模块,用于针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;

所述判断模块,还用于:在每个子任务均查找到满足资源需求的节点时,则判定所述分布式任务中各个子任务能被调度给所述kubernetes集群;

若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述kubernetes集群。

可选地,在本申请中,所述预调度模块,包括:

排序子模块,用于根据所述分布式任务中各个子任务的资源需求对所述各个子任务进行排序;

查找子模块,用于针对各个子任务按照排列顺序依次在各个节点中,查找满足资源需求的节点;

所述判断模块,还用于:

在排序后的每个子任务均查找到满足资源需求的节点时,则判定所述分布式任务中各个子任务能被调度给所述kubernetes集群;

若存在子任务查找不到满足资源需求的节点,则判定所述分布式任务中各个子任务不能被调度给所述kubernetes集群。

可选地,在本申请中,所述排序子模块具体用于:

计算各个节点的硬件资源值;

根据各节点的硬件资源值对所述各个节点进行排序;

其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。

可选地,在本申请中,所述排序子模块具体用于:

计算各个子任务的硬件资源值;

根据各子任务的硬件资源值对所述各个子任务进行排序;

其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。

第三方面,本申请还提供一种电子设备,所述电子设备包括处理器及存储有若干计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述电子设备执行第一方面所述的分布式任务预调度方法。

第四方面,本申请还提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在电子设备执行第一方面所述的分布式任务预调度方法。

相对于现有技术而言,本申请具有以下有益效果:

本申请提供的分布式任务预调度方法及装置,在所述方法中,首先,获取kubernetes集群中各个节点的硬件资源和分布式任务中各个子任务的资源需求;接着,根据各个节点的硬件资源与各个子任务的资源需求,对各个子任务进行预调度,判断分布式任务中各个子任务能否被调度给kubernetes集群。通过上述预调度为后续将分布式任务调度给kubernetes集群提供参考。在kubernetes集群的节点的硬件资源不满足分布式任务的子任务的资源需求时,避免分布式任务的各子任务被调度到kubernetes集群的节点后分布式任务无法被完成,及分布式任务的部分子任务被调度到kubernetes集群的节点上占用kubernetes集群资源的技术问题,提高分布式任务的调度效率。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为现有技术提供的分布式任务在kubernetes集群调度的示意图;

图2为本申请实施例提供的电子设备的结构框图;

图3为本申请实施例提供的分布式任务预调度方法的流程示意图;

图4为本申请实施例提供的分布式任务预调度装置的一种功能模块框图;

图5为本申请实施例提供的分布式任务预调度装置的另一种功能模块框图。

图标:100-电子设备;110-分布式任务预调度装置;1101-获取模块;1102-预调度运算模块;1103-判断模块;1104-预调度模块;11021-排序子模块;12022-查找子模块;111-存储器;112-处理器;113-通信单元。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请实施例的描述中,术语"第一"、"第二"等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本申请实施例的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请实施例中的具体含义。

现有技术,不考虑kubernetes集群中各个node的资源和运行分布式任务中各个子任务的pod的资源需求之间的资源约束关系,直接将分布式任务调度到kubernetes集群中。如果pod的资源需求无法得到满足,则该pod将无法调度到合适的node上。

请参照图1,假设分布式任务包括5个子任务,5个子任务分别由5个pod运行,5个pod分别为pod1、pod2、pod3、pod4及pod5。kubernetes集群包括有2个node,分别为node1和node2。在现有技术中,不会考虑pod的资源需求与node的资源之间的资源约束关系,直接将运行各子任务的pod调度到kubernetes集群的node上,比如,如图1中所示,pod4和pod5被调度到node1中,pod2和pod3被调度到node2中,pod1因没有能满足其资源需求的node,而无法调度到合适的node中。

由于不考虑node的资源与pod的资源需求之间的资源约束关系,直接将运行各子任务的pod调度到kubernetes集群的node上。如果在一个分布式任务中,部分运行子任务的pod的资源需求无法得到满足,那么该部分运行子任务的pod将无法调度到kubernetes集群的node上;而其他部分的pod可以调度到kubernetes集群的node上。由于分布式任务的完成状态完全依赖于分布式任务中子任务对应pod的完成状态。因此,在这种情况下,分布式任务是无法被完成的,影响分布式任务的调度效率。同时,部分被调度的pod在node上执行,还会占用kubernetes集群的node资源,影响kubernetes集群的调度效率。

为了解决上述技术问题,本申请的申请人经过研究提出以下解决方案。

请参照图2,图2为本申请实施例提供的一种用于对分布式任务进行预调度的电子设备100的结构示意图。所述电子设备100包括分布式任务预调度装置110、存储器111、处理器112及通信单元113。

所述存储器111、处理器112及通信单元113的各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。

其中,所述存储器111可以是,但不限于,随机存取存储器(英文:randomaccessmemory,简称:ram),只读存储器(英文:readonlymemory,简称:rom),可编程只读存储器(英文:programmableread-onlymemory,简称:prom),可擦除只读存储器(英文:erasableprogrammableread-onlymemory,简称:eprom),电可擦除只读存储器(英文:electricerasableprogrammableread-onlymemory,简称:eeprom)等。其中,存储器111用于存储程序,所述处理器112在接收到执行指令后,执行所述程序。所述通信单元113用于通过网络建立所述电子设备100与其它设备(比如kubernetes集群中各个节点)之间的通信连接,并用于通过网络进行数据的接收(比如,接收各个节点的硬件资源信息)和发送(比如,发送为各个节点预调度子任务的信息)。

分布式任务预调度装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述电子设备100的操作系统(英文:operatingsystem,简称:os)中的软件功能模块。所述处理器112用于执行所述存储器111中存储的可执行模块,例如分布式任务预调度装置110所包括的软件功能模块及计算机程序等。

应当理解的是,图2所示的结构仅为示意,所述电子设备100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。

请参照图3,图3为本申请实施例提供的分布式任务预调度方法的流程图,下面对所述方法包括的各个步骤进行详尽的阐述。

步骤s310,获取kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求。

具体地,kubernetes集群节点node往往是异质的,即不同node的资源大小是不一致的,甚至node节点类型也可以不一致,比如,node节点类型可以是物理机也可以是虚拟机。运行分布式任务的子任务的pod也可以是异质的,有不同资源需求偏好类型,比如,pod可以是gpu(graphicsprocessingunit)和cpu资源需求的计算类型pod,也可以是cpu和存储器资源需求的实时存储类型pod,而且分布式任务对不同类型pod数量要求也是不一致。

在需要将分布式任务调度到kubernetes集群中时,先将运行分布式任务中各个子任务的pod的资源需求、及kubernetes集群中各个node的硬件资源发送给电子设备100。其中,pod的资源需求包括pod所需的处理器资源(比如,cpu资源和gpu资源)和所需的存储器资源。node的硬件资源包括node的处理器资源和存储器资源。

步骤s320,根据kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求,对分布式任务中各个子任务进行预调度运算,得到预调度运算结果。

具体地,在本发明实施例中,通过对各个节点的硬件资源、各个子任务的资源需求分别进行排序,得到各个子任务的预调度运算结果。

可以理解的是,具体的排序规则在下述实施例中详细说明。

步骤s330,根据预调度运算结果,判断分布式任务中各个子任务能否被调度给kubernetes集群。

具体地,获取步骤s320中得到的预调度运算结果,通过将预调度运算结果与资源约束条件进行比对,进而判断各个子任务能否被调度给kubernetes集群。

步骤s340,在判断分布式任务中各个子任务不能被调度给kubernetes集群时,则不向kubernetes集群调度所述分布式任务。

具体地,根据步骤s340的描述,当预调度运算结果不满足资源约束条件时,则确定子任务不能被调度给kubernetes集群,此时,不向kubernetes集群调度分布式任务中的子任务。

在确定子任务不能被调度给kubernetes集群时,可以通过减小分布式任务的子任务的资源需求,或增加kubernetes集群的节点资源后再重新预调度分布式任务的各子任务。

本申请实施例提供的分布式任务预调度方法,根据各个节点的硬件资源与各个子任务的资源需求,对各个子任务进行预调度,判断分布式任务能否被调度给kubernetes集群,为将分布式任务调度给kubernetes集群提供参考。在kubernetes集群的节点的硬件资源不满足分布式任务的子任务的资源需求时,以避免分布式任务的各子任务被调度到kubernetes集群的节点后分布式任务无法被完成,及分布式任务的部分子任务被调度到kubernetes集群的节点上占用kubernetes集群资源的技术问题,提高分布式任务的调度效率。

在本申请实施例中,根据kubernetes集群的各个node的资源以及分布式任务中各个子任务的资源需求,对分布式任务中各个子任务进行预调度运算的方式有多种。

可选地,在本申请实施例的第一种实施方式中,步骤s320通过以下方式实现:

根据各个pod的资源需求对各个pod进行排序,并根据kubernetes集群的各个node的资源对各个node进行排序。

具体地,计算各个node的硬件资源值,根据各node的硬件资源值对各个node进行排序;其中,各node的硬件资源值分别为各node的处理器资源与存储器资源的乘积。

同理地,计算各个子任务的硬件资源值,根据各子任务的硬件资源值对各个子任务进行排序。

针对各个子任务按照排列顺序依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点。

可选地,在本申请实施例的第二种实施方式中,步骤s320通过以下方式实现:

根据kubernetes集群的各个node的资源对各个node进行排序。

node排序方式和第一实施方式相同,在此就不再赘述。

针对各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点。

与第一种实施方式相比,本实施方式只对kubernetes集群的各个node进行排序,不对分布式任务中各子任务进行排序。

可选地,在本申请实施例的第三种实施方式中,步骤s320通过以下方式实现:

根据各个pod的资源需求对各个pod进行排序。

pod排序方式和第一实施方式相同,在此就不再赘述。

针对各个子任务按照排列顺序依次在各个节点中查找满足资源需求的节点。

与第一种实施方式相比,本实施方式只对分布式任务的各个pod进行排序,不对kubernetes集群的各个node进行排序。

在本申请实施例的第四种实施方式中,步骤s320也可以不进行pod与node的排序,直接判断各个node的资源是否满足各个pod所需的资源。

在上述实施方式中,各个子任务的硬件资源值可以是运行各个子任务的pod的硬件资源值,各个子任务的资源需求可以是运行各个子任务的pod的资源需求。

可选地,在本申请实施例中,完成对分布式任务中各个子任务的预调度运算之后,步骤s330通过以下方式实现:

若排序后的每个子任务均查找到满足资源需求的节点,则判定分布式任务中各个子任务能被调度给kubernetes集群,反之,则判定分布式任务中各个子任务不能被调度给kubernetes集群。

下面以第一种实施方式为例,介绍实现第一实施方式的具体算法步骤。

step1,获得分布式任务中各个子任务的资源需求及kubernetes集群的node的资源。

分布式任务的资源需求可以通过运行各个子任务的pod的资源需求表示,具体地,可以表示为:p={p’1,p'2,...p'n},其中,n表示pod的数量,表示第i个pod的cpu资源需求,表示第i个pod的存储器资源需求,表示第i个pod的gpu资源需求;

kubernetes集群的资源可以表示为:n={n’1,n'2,...,n'm},其中,m表示node的数量,表示第j个node的cpu资源,表示第j个node的存储器资源,表示第j个node的gpu资源。

step2,根据各个pod的资源需求对各个pod进行排序,并根据kubernetes集群的各个node的资源对各个node进行排序。

计算p’i的硬件资源值并将从大到小排序,获得有序pnew={p1,p2,…,pn},其中,

计算n'j的硬件资源值并将从大到小排序,获得有序nnew={n1,n2,…,nm},其中,

step3,将pnew={p1,p2,…,pn}中的pod预调度到nnew={n1,n2,...,nm}中的node中,具体地:可以根据以下资源约束条件判定pod是否可以调度到node中。

在本申请实施例中,资源约束条件可以如下:

表示nj的cpu资源满足运行在nj上的pod的cpu资源需求;

表示nj的存储器资源满足运行在nj上的pod的存储器资源需求;

表示nj的gpu资源满足运行在nj上的pod所需的gpu资源需求;

即在上述资源约束条件中,pod能在node上运行,则node应该能为pod至少提供pod所需的资源。

在上述资源约束条件中,xij=0或1,xij表示pi是否运行在nj上,其中,0表示pi未运行在nj上,1表示pi运行在nj上。

step4,计算xij值,当xij=1时,i=i+1,执行step3,直到i=n;当xij=0时,j=j+1,执行step3,直到j=m。

当j=m时,若表明pi无法调度到nj,即不存在可进行预调度的方案。

当i=n时,若表明存在可进行预调度的方案。

相应地,本申请实施例还提供一种分布式任务预调度装置110,与上面实施例不同的是,本分布式任务预调度装置110是从虚拟装置的角度描述本申请方案的。请参照图4,分布式任务预调度装置110可以包括以下模块。

获取模块1101,用于获取kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求。

在需要将分布式任务调度到kubernetes集群中时,获取模块1101获取运行分布式任务中各个子任务的pod的资源需求,及kubernetes集群中各个node节点硬件资源。其中,pod所需资源包括pod所需的处理器资源(比如,cpu资源和gpu资源)和所需的存储器资源。node的硬件资源包括node的处理器资源和存储器资源。

预调度运算模块1102,用于根据kubernetes集群中各个节点的硬件资源以及分布式任务中各个子任务的资源需求,对分布式任务中各个子任务进行预调度运算,得到预调度运算结果。

具体地,在本发明实施例中,预调度运算模块1102可以通过对各个节点的硬件资源、各个子任务的资源需求分别进行排序,得到各个子任务的预调度运算结果。

可以理解的是,具体的排序规则在下述实施例中详细说明。

判断模块1103,用于根据所述预调度运算结果,判断分布式任务中各个子任务能否被调度给kubernetes集群。

具体地,预调度运算模块1102得到的预调度运算结果后,判断模块1103可以通过将预调度运算结果与资源约束条件进行比对,进而判断各个子任务能否被调度给kubernetes集群。

预调度模块1104,用于判断分布式任务中各个子任务不能被调度给kubernetes集群时,则不向kubernetes集群调度分布式任务。

具体地,预调度模块1104在预调度运算结果不满足资源约束条件时,则确定子任务不能被调度给kubernetes集群,此时,不向kubernetes集群调度分布式任务中的子任务。

请参照图5,预调度运算模块1102可以包括排序子模块11021、查找子模块11022。可选地,在本申请实施例的第一种实施方式中:

排序子模块11021,用于根据kubernetes集群中各个节点的硬件资源对各个节点进行排序;

排序子模块11021,还用于根据分布式任务中各个子任务的资源需求对各个子任务进行排序;

查找子模块11022,用于针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;

判断模块1103用于:在每个子任务均查找到满足资源需求的节点时,判定分布式任务能被调度给kubernetes集群,反之,则判定分布式任务不能被调度给kubernetes集群。

在本申请实施例的第二种实施方式中:

排序子模块11021,用于根据所述kubernetes集群中各个节点的硬件资源对各个节点进行排序;

具体地,计算各个节点的硬件资源值,根据各节点的硬件资源值对各个节点进行排序;其中,各节点的硬件资源值分别为各节点的处理器资源与存储器资源的乘积。

查找子模块11022,用于针对排序后的各个子任务依次在排序后的各个节点中,查找满足各个子任务的资源需求的节点;

判断模块1103用于:在每个子任务均查找到满足资源需求的节点时,则判定分布式任务中各个子任务能被调度给kubernetes集群,反之,则判定分布式任务中各个子任务不能被调度给kubernetes集群。

在本申请实施例的第三种实施方式中:

排序子模块11021,用于根据分布式任务中各个子任务的资源需求对各个子任务进行排序;

具体地,排序子模块11021具体用于:

计算各个子任务的硬件资源值,根据各子任务的硬件资源值对各个子任务进行排序,其中,各个子任务的硬件资源值分别为各个子任务的所需的处理器资源与存储器资源的乘积。

查找子模块11022,用于针对排序后的各个子任务依次在各个节点中,查找满足各个子任务的资源需求的节点;

判断模块1103用于:在排序后的每个子任务均查找到满足资源需求的节点时,则判定分布式任务中各个子任务能被调度给kubernetes集群,反之,则判定分布式任务中各个子任务不能被调度给所述kubernetes集群。

如果上述功能以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备100执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

综上所述,本申请提供的分布式任务预调度方法及装置,在所述方法中,首先,获取kubernetes集群中各个节点的硬件资源和分布式任务中各个子任务的资源需求;接着,根据各个节点的硬件资源与各个子任务的资源需求,对各个子任务进行预调度,判断分布式任务能否被调度给kubernetes集群,为将分布式任务调度给kubernetes集群提供参考。在kubernetes集群中各个节点的硬件资源不满足分布式任务中各个子任务的资源需求时,避免无法完成的分布式任务被调度到kubernetes集群,导致分布式任务无法被完成,和分布式任务的部分子任务被调度到kubernetes集群的节点上占用kubernetes集群资源的技术问题,提高分布式任务调度效率和kubernetes集群调度效率。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1