容器组调度方法及装置与流程

文档序号:32744780发布日期:2022-12-30 21:31阅读:21来源:国知局
容器组调度方法及装置与流程

1.本说明书一个或多个实施例涉及区块链领域,尤其涉及一种容器组调度方法及装置。


背景技术:

2.容器技术是一种内核轻量级的操作系统级别虚拟化技术。目前,常用的容器技术包括docker、kubernetes等。
3.kubernetes是一个开源平台,具有可移植性和可扩展性,用于管理容器化的工作负载和服务,简化了声明式配置和自动化。工作负载是在kubernetes上运行的应用程序。kubernetes集群是一组用于执行工作负载的node(节点)。kubernetes通过将容器放入在node上运行的pod(容器组)中来执行工作负载。node包含运行pod所需的服务,一个node可以是一个虚拟机或者物理机器,取决于所在的kubernetes集群的配置。pod是可以在kubernetes中创建和管理的、最小的可部署的计算单元,一个pod中可以封装一组容器、容器组共享的存储资源和网络ip、管理控制容器运行方式的声明。在kubernetes中,调度指的是确保pod匹配到合适的node,以便该pod在该node上运行。
4.现如今,业务的诉求各异,并且种类繁多,在大规模集群中通常时刻都有pod被创建或者销毁,因此需要调度的pod也越来越多。在这种情况下,保证稳定且高效的pod调度也就成为了大规模集群应当具备的基础能力。


技术实现要素:

5.本说明书一个或多个实施例提供技术方案如下:
6.本说明书提供一种容器组调度方法,所述方法应用于运行在容器管理集群中的master node上的调度器;所述容器管理集群包括用于运行在所述容器管理集群中创建的pod的多个node;所述方法包括:
7.从pod调度队列中获取待调度的多个pod,并对所述多个pod进行等价类划分,得到至少一个pod集合;
8.依次将所述至少一个pod集合中的各个pod集合确定为目标pod集合,并对所述目标pod集合进行调度处理,以将所述目标pod集合中的各个pod绑定到用于运行所述pod的node上;
9.所述调度处理包括:
10.确定与所述目标pod集合对应的目标可调度node集合,并缓存所述目标pod集合与所述目标可调度node集合之间的对应关系;
11.从所述目标可调度node集合中确定出与所述目标pod集合中的各个pod对应的node,并将所述目标pod集合中的各个pod绑定到与所述pod对应的node上;
12.在完成将所述目标pod集合中的各个pod绑定到与所述pod对应的node上之后,删除缓存的所述对应关系。
13.本说明书还提供一种容器组调度装置,所述装置应用于运行在容器管理集群中的master node上的调度器;所述容器管理集群包括用于运行在所述容器管理集群中创建的pod的多个node;所述装置包括:
14.获取模块,从pod调度队列中获取待调度的多个pod,并对所述多个pod进行等价类划分,得到至少一个pod集合;
15.调度模块,依次将所述至少一个pod集合中的各个pod集合确定为目标pod集合,并对所述目标pod集合进行调度处理,以将所述目标pod集合中的各个pod绑定到用于运行所述pod的node上;
16.所述调度处理包括:
17.确定与所述目标pod集合对应的目标可调度node集合,并缓存所述目标pod集合与所述目标可调度node集合之间的对应关系;
18.从所述目标可调度node集合中确定出与所述目标pod集合中的各个pod对应的node,并将所述目标pod集合中的各个pod绑定到与所述pod对应的node上;
19.在完成将所述目标pod集合中的各个pod绑定到与所述pod对应的node上之后,删除缓存的所述对应关系。
20.本说明书还提供一种电子设备,包括:
21.处理器;
22.用于存储处理器可执行指令的存储器;
23.其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
24.本说明书还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
25.在上述技术方案中,可以从pod调度队列中获取待调度的多个pod,并对这多个pod进行等价类划分,得到至少一个pod集合,后续可以依次将这至少一个pod集合中的各个pod集合确定为目标pod集合,并对该目标pod集合进行调度处理,以将该目标pod集合中的各个pod绑定到用于运行这个pod的node上;而在进行调度处理时,具体可以先确定与该目标pod集合对应的目标可调度node集合,并缓存该目标pod集合与该目标可调度node集合之间的对应关系,再从该目标可调度node集合中确定出与该目标pod集合中的各个pod对应的node,并将该目标pod集合中的各个pod绑定到与该pod对应的node上,在完成了将该目标pod集合中的各个pod绑定到与该pod对应的node上之后,即可删除缓存的该目标pod集合与该目标可调度node集合之间的对应关系。
26.采用上述方式,在每次的容器组调度流程中,都会重新确定通过等价类划分得到的pod集合与可调度node集合之间的对应关系,并根据重新确定的对应关系来对这些pod集合中的pod进行调度,而不再是一直根据已经存储的等价类与可调度node之间的对应关系来进行pod调度,因此可以避免出现将pod调度到因为发生变化而不再是该pod的可调度node的node上,从而导致该pod无法正常运行的问题,保证稳定的pod调度。
附图说明
27.图1是本说明书一示例性实施例示出的一种容器组调度方法的流程图。
28.图2是本说明书一示例性实施例示出的一种调度处理流程的示意图。
29.图3是本说明书一示例性实施例示出的一种pod获取阶段的示意图。
30.图4是本说明书一示例性实施例示出的一种等价类划分阶段的示意图。
31.图5是本说明书一示例性实施例示出的一种pod调度阶段的示意图。
32.图6是本说明书一示例性实施例示出的一种设备的硬件结构的示意图。
33.图7是本说明书一示例性实施例示出的一种容器组调度装置的框图。
具体实施方式
34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
35.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
36.对于kubernetes集群而言,其中的node可以分为master node(管理节点)和worker node(工作节点)。master node是kubernetes集群的管理者,其上运行的服务包括kube-apiserver、kube-scheduler、kube-controller-manager、etcd以及与容器网络相关的组件。worker node是kubernetes集群中承担工作负载的node,其上运行的服务包括docker运行时环境、kubelet、kube-proxy以及其他可选的组件。
37.在对pod进行调度时,master node与worker node之间可以进行通信,由master node上的kube-scheduler将pod放置到合适的worker node上,以便该worker node上的kubelet能够运行该pod。
38.kube-scheduler是kubernetes集群中的默认调度器。kubelet是kubernetes集群中的每个node上运行的代理,可以保证所有容器都运行在pod中;kubelet需要向kube-apiserver注册,以基于kube-apiserver提供的一组podspec来工作。一个podspec是一个描述pod的yaml或json对象。kube-apiserver是kubernetes集群中的api(application programming interface,应用程序接口)服务器,可以验证并配置api对象的数据,这些对象包括pods、services、replication controllers等;api服务器为rest操作提供服务,并为集群的共享状态提供前端,所有其他组件都通过该前端进行交互。rest api是kubernetes的基本结构,所有操作和组件之间的通信以及外部用户命令都是调用api服务器处理的rest api,因此kubernetes视一切皆为api对象。
39.对于一个尚未被调度的pod而言,kube-scheduler会选择一个最优的node去运行这个pod。然而,pod内的每个容器对资源都有不同的需求,而且pod本身也有不同的需求。因此,在将pod调度到node上之前,需要根据这些特定的调度需求,对kubernetes集群中的node进行过滤。在kubernetes集群中,满足一个pod的调度需求的所有node都可以称之为这
个pod的可调度节点;如果没有任何一个node能满足这个pod的调度需求,那么这个pod将一直停留在未调度状态,直到kube-scheduler能够为这个pod找到合适的node。
40.进一步地,kube-scheduler会先在kubernetes集群中找到一个pod的所有可调度node,再根据一系列函数对这些可调度node分别进行打分,以选出其中得分最高的node来运行这个pod。后续,kube-scheduler可以将这个pod调度到这个node上的调度决定通知给kube-apiserver,这个过程叫做将pod绑定到node上。结合前述内容,在将这个pod绑定到这个node上之后,这个node上运行的kubelet可以基于kube-apiserver提供的podspec来运行这个pod。
41.然而,如果针对需要调度的每个pod,都先对kubernetes集群中的node进行过滤得到所有可调度node,再对这些可调度node进行打分以选出得分最高的node来运行这个pod,则需要大量的计算,从而导致pod调度效率较低。
42.相关技术中,为了提高pod调度效率,缩短pod调度延时,针对需要调度的每个pod,会先确定该pod所属的等价类,并确定是否存储了该等价类与可调度node之间的对应关系。如果是,则对与该等价类对应的所有可调度node进行打分以选出得分最高的node来运行该pod;如果否,则先对kubernetes集群中的node进行过滤得到所有可调度node,再对这些可调度node进行打分以选出得分最高的node来运行该pod,并存储该等价类与这些可调度node之间的对应关系,便于后续使用该对应关系来进行pod调度。
43.然而,在大规模集群中,node的运行状态、node能够提供的资源等可能会随着时间的推移而发生变化。在这种情况下,如果一直根据已经存储的等价类与可调度node之间的对应关系来进行pod调度,则可能会出现将pod调度到因为发生变化而不再是该pod的可调度node的node上,从而导致该pod无法正常运行的问题,即无法保证稳定的pod调度。
44.因此,为了保证稳定且高效的pod调度,本说明书提出了一种容器组调度的技术方案。在该技术方案中,可以从pod调度队列中获取待调度的多个pod,并对这多个pod进行等价类划分,得到至少一个pod集合,后续可以依次将这至少一个pod集合中的各个pod集合确定为目标pod集合,并对该目标pod集合进行调度处理,以将该目标pod集合中的各个pod绑定到用于运行这个pod的node上;而在进行调度处理时,具体可以先确定与该目标pod集合对应的目标可调度node集合,并缓存该目标pod集合与该目标可调度node集合之间的对应关系,再从该目标可调度node集合中确定出与该目标pod集合中的各个pod对应的node,并将该目标pod集合中的各个pod绑定到与该pod对应的node上,在完成了将该目标pod集合中的各个pod绑定到与该pod对应的node上之后,即可删除缓存的该目标pod集合与该目标可调度node集合之间的对应关系。
45.在具体实现时,对于容器管理集群而言,其中所有待调度的pod都可以按照一定的顺序被存储在pod调度队列中。
46.在进行pod调度时,可以从上述pod调度队列中获取待调度的多个pod,并对这多个pod进行等价类划分,得到至少一个pod集合。而对于从该pod调度队列中获取到的pod而言,后续该pod调度队列中不会再存储该pod。
47.在得到上述至少一个pod集合的情况下,可以依次将这至少一个pod集合中的各个pod集合确定为目标pod集合,并对该目标pod集合进行调度处理,以将该目标pod集合中的各个pod绑定到用于运行这个pod的node上。
48.具体地,可以先确定与上述目标pod集合对应的所有可调度node,这些可调度node可以视为一个可调度node集合(可称为目标可调度node集合)。在这种情况下,可以缓存该目标pod集合与该目标可调度node集合之间的对应关系。
49.在确定了上述目标可调度node集合的情况下,可以从该目标可调度node集合中确定出与上述目标pod集合中的各个pod对应的node(即可以用于运行这个pod的node),并将该目标pod集合中的各个pod绑定到与这个pod对应的node上。
50.在完成了将上述目标pod集合中的各个pod绑定到与这个pod对应的node上之后,即可删除缓存的该目标pod集合与上述目标可调度node集合之间的对应关系,避免后续继续使用该对应关系来进行pod调度。
51.采用上述方式,在每次的容器组调度流程中,都会重新确定通过等价类划分得到的pod集合与可调度node集合之间的对应关系,并根据重新确定的对应关系来对这些pod集合中的pod进行调度,而不再是一直根据已经存储的等价类与可调度node之间的对应关系来进行pod调度,因此可以避免出现将pod调度到因为发生变化而不再是该pod的可调度node的node上,从而导致该pod无法正常运行的问题,保证稳定的pod调度。
52.请参考图1,图1是本说明书一示例性实施例示出的一种容器组调度方法的流程图。
53.上述容器组调度方法可以应用于运行在容器管理集群中的master node上的调度器;该容器管理集群可以包括用于运行在该容器管理集群中创建的pod的多个node。
54.在一些实施例中,上述容器管理集群可以是包括kubernetes集群;或者,上述容器管理集群可以包括基于kubernetes的容器管理集群。在这种情况下,该容器管理集群中的多个node具体可以包括master node和worker node,而上述调度器具体可以是master node上运行的kube-scheduler组件。
55.上述容器组调度方法可以包括以下步骤:
56.步骤102:从pod调度队列中获取待调度的多个pod,并对所述多个pod进行等价类划分,得到至少一个pod集合。
57.在本实施例中,对于上述容器管理集群而言,其中所有待调度的pod都可以按照一定的顺序被存储在pod调度队列中。
58.在实际应用中,上述pod调度队列中的pod的排列顺序可以是pod的创建时刻的顺序,也可以是pod被加入到该pod调度队列中的时刻的顺序;具体可以根据实际需求来设置,本说明书对此不作限制。此外,该pod调度队列中的待调度的pod具体可以以pod调度请求的形式存在,即后续可以基于pod调度请求实现对与该pod调度请求对应的pod的调度。
59.在进行pod调度时,可以从上述pod调度队列中获取待调度的多个pod,并对这多个pod进行等价类划分,得到至少一个pod集合。而对于从该pod调度队列中获取到的pod而言,后续该pod调度队列中不会再存储该pod。
60.需要说明的是,等价类可以用于描述具有相同的调度规则约束和资源规格需求的一类pods,是对能够影响pod的可调度node的一些因素的抽象表示。也即,对于一个等价类而言,属于该等价类的所有pod的可调度node基本相同。
61.在一些实施例中,在从上述pod调度队列中获取待调度的多个pod时,具体可以按照预设的时间周期,从该pod调度队列中获取待调度的多个pod;或者,可以在该pod调度队
列中的pod的数量达到预设的阈值时,从该pod调度队列中获取待调度的多个pod。
62.需要说明的是,上述时间周期的数值可以是技术人员根据实际需求预先设置的一个固定的时间周期,也可以是在每次的容器组调度流程结束时根据此次的容器组调度流程的耗时确定的变化的时间周期,本说明书对此不作限制。
63.步骤104:依次将所述至少一个pod集合中的各个pod集合确定为目标pod集合,并对所述目标pod集合进行调度处理,以将所述目标pod集合中的各个pod绑定到用于运行所述pod的node上。
64.在本实施例中,在得到上述至少一个pod集合的情况下,可以遍历这至少一个pod集合,并对每次获取到的一个pod集合进行调度处理,以将这个pod集合中的各个pod绑定到用于运行这个pod的node上。也即,可以依次将这至少一个pod集合中的各个pod集合确定为目标pod集合,并对该目标pod集合进行调度处理,以将该目标pod集合中的各个pod绑定到用于运行这个pod的node上。
65.举例来说,假设从上述pod调度队列中获取了待调度的5个pod,分别为pod1、pod2、pod3、pod4、pod5,在对这5个pod进行等价类划分之后,得到了2个pod集合,分别为pod集合1(包括pod1、pod3)、pod集合2(包括pod2、pod4、pod5),则通过遍历这2个pod集合,可以先将pod集合1确定为目标pod集合,并对pod集合1进行调度处理,以将pod1绑定到用于运行pod1的node上,将pod3绑定到用于运行pod3的node上,再将pod集合2确定为目标pod集合,并对pod集合2进行调度处理,以将pod2绑定到用于运行pod2的node上,将pod4绑定到用于运行pod4的node上,将pod5绑定到用于运行pod5的node上。
66.具体地,请参考图2,图2是本说明书一示例性实施例示出的一种调度处理流程的示意图。
67.对于上述目标pod集合而言,对其进行的调度处理可以包括以下步骤:
68.步骤1042:确定与所述目标pod集合对应的目标可调度node集合,并缓存所述目标pod集合与所述目标可调度node集合之间的对应关系。
69.在本实施例中,可以先确定与上述目标pod集合对应的所有可调度node,这些可调度node可以作为一个可调度node集合(可称为目标可调度node集合)。在这种情况下,可以缓存该目标pod集合与该目标可调度node集合之间的对应关系。
70.步骤1044:从所述目标可调度node集合中确定出与所述目标pod集合中的各个pod对应的node,并将所述目标pod集合中的各个pod绑定到与所述pod对应的node上。
71.在本实施例中,在确定了上述目标可调度node集合的情况下,可以从该目标可调度node集合中确定出与上述目标pod集合中的各个pod对应的node(即可以用于运行这个pod的node),并将该目标pod集合中的各个pod绑定到与这个pod对应的node上。
72.步骤1046:在完成将所述目标pod集合中的各个pod绑定到与所述pod对应的node上之后,删除缓存的所述对应关系。
73.在本实施例中,在完成了将上述目标pod集合中的各个pod绑定到与这个pod对应的node上之后,即可删除缓存的该目标pod集合与上述目标可调度node集合之间的对应关系,避免后续继续使用该对应关系来进行pod调度。
74.继续以上述pod集合1为例,在对pod集合1进行调度处理时,具体可以先确定与pod集合1对应的可调度node集合1(假设包括nodem、noden、nodex),并缓存pod集合1与可调度
node集合1之间的对应关系。后续,可以从可调度node集合1中确定出与pod1对应的node(假设为noden),并将pod1绑定到noden上,从可调度node集合1中确定出与pod2对应的node(假设为nodex),并将pod2绑定到nodex上。在完成对pod1、pod2的调度之后,即可删除缓存的pod集合1与可调度node集合1之间的对应关系。
75.下面将上述容器组调度方法分为pod获取、等价类划分、pod调度这3个阶段进行详细描述。
76.(1)pod获取
77.在本实施例中,对于上述容器管理集群而言,其中所有待调度的pod都可以按照一定的顺序被存储在pod调度队列中。
78.在进行pod调度时,首先可以从上述pod调度队列中获取待调度的多个pod。而对于从该pod调度队列中获取到的pod而言,后续该pod调度队列中不会再存储该pod。
79.以如图3的流程为例,在pod获取阶段中,可以先获取上述pod调度队列中当前的首个pod,并暂存该pod,再判断该pod调度队列是否为空。如果该pod调度队列不为空,则可以继续获取该pod调度队列中当前的首个pod,并暂存该pod,以此类推;如果该pod调度队列为空,则说明已经获取了该pod调度队列中的所有pod,因此可以进入下一阶段(即等价类划分阶段)。
80.(2)等价类划分
81.在本实施例中,在从上述pod调度队列中获取了待调度的多个pod的情况下,可以对这多个pod进行等价类划分,得到至少一个pod集合。
82.在一些实施例中,可以遍历这多个pod,并对每次获取到的一个pod进行分类处理,以对这多个pod进行等价类划分,得到至少一个pod集合。也即,可以依次将这多个pod中的各个pod确定为目标pod,并对该目标pod进行分类处理,以对这多个pod进行等价类划分,得到至少一个pod集合。
83.对于上述目标pod而言,在对其进行分类处理时,具体可以先获取该目标pod的特征数据,并基于该目标pod的特征数据,计算与该目标pod对应的分类索引,再确定是否存在与该分类索引对应的pod集合。如果存在与该分类索引对应的pod集合,则可以将该目标pod添加到该pod集合中;如果不存在与该分类索引对应的pod集合,则可以创建该pod集合,并将该目标pod添加到该pod集合中。
84.在一些实施例中,上述特征数据可以包括通用属性信息、资源规格信息和调度规则中的至少一个或者多个的组合。其中,通用属性信息可以包括与pod对应的kind、priority、quotaid等字段,例如:与pod对应的pod调度请求中的kind、priority、quotaid等字段;资源规格信息可以包括pod需要的cpu、memory、disk、gpu等资源量;调度规则可以包括nodeselector、tolerations、affinity等用于pod调度的规则。
85.进一步地,在一些实施例中,上述特征数据可以包括所述通用属性信息、资源规格信息和调度规则这三者。在这种情况下,在基于上述目标pod的特征数据,计算与该目标pod对应的分类索引时,具体可以先分别计算该目标pod的通用属性信息、资源规格信息和调度规则的hash值,再对该通用属性信息的hash值、该资源规格信息的hash值和该调度规则的hash值进行拼接,并将拼接后的hash值确定为与该目标pod对应的分类索引。
86.以如图4的流程为例,在等价类划分阶段中,可以遍历暂存的多个pod,并在判断出
遍历完成时,进入下一阶段(即pod调度阶段),而在判断出遍历未完成时,将当前获取到的pod确定为目标pod,先计算与该目标pod对应的分类索引,再判断与该分类索引对应的pod集合是否已经存在,如果已经存在,则可以将该目标pod添加到该pod集合中,如果尚未存在,则可以创建该pod集合,并将该目标pod添加到该pod集合中。
87.(3)pod调度
88.在本实施例中,针对从通过等价类划分得到的至少一个pod集合中确定出的目标pod集合,可以先确定与该目标pod集合对应的所有可调度node,这些可调度node可以视为一个可调度node集合(可称为目标可调度node集合)。在这种情况下,可以缓存该目标pod集合与该目标可调度node集合之间的对应关系。
89.在一些实施例中,在确定与上述目标pod集合对应的目标可调度node集合时,具体可以从该目标pod集合中确定出主pod,以确定与该主pod对应的可调度node集合,并将与该主pod对应的可调度node集合确定为与该目标pod集合对应的目标可调度node集合。
90.在实际应用中,上述主pod可以是第一个被添加到上述目标pod集合中的pod。
91.进一步地,在一些实施例中,在确定与上述主pod对应的可调度node集合时,具体可以从上述容器管理集群包含的node中,过滤掉不可运行该主pod的node,并将剩余node确定为与该主pod对应的可调度node集合中的node。
92.除此之外,在将剩余node确定为与上述主pod对应的可调度node集合中的node时,具体可以先对这些剩余node进行打分,并按照得分的大小顺序对这些剩余node进行排序;例如,可以对剩余node进行针对该主pod的运行评分,并按照运行评分分值的大小顺序对这些剩余node进行排序。后续,可以基于排序结果确定运行评分分值最大的n(n表示预设数量)个node,并将这n个node确定为与该主pod对应的可调度node集合中的node。
93.在本实施例中,在确定了上述目标可调度node集合的情况下,可以从该目标可调度node集合中确定出与上述目标pod集合中的各个pod对应的node(即可以用于运行这个pod的node),并将该目标pod集合中的各个pod绑定到与这个pod对应的node上。
94.在一些实施例中,在从上述目标可调度node集合中确定出与该目标pod集合中的各个pod对应的node,并将该目标pod集合中的各个pod绑定到与该pod对应的node上时,具体可以遍历该目标pod集合中的pod,并对每次获取到的一个pod进行绑定处理,以将这个pod绑定到与这个pod对应的node上。也即,可以依次将该目标pod集合中的各个pod确定为目标pod,并对该目标pod进行绑定处理,以将该目标pod绑定到与该目标pod对应的node上。
95.对于上述目标pod而言,在对其进行绑定处理时,具体可以将上述目标可调度node集合中运行评分分值最大的node,确定为与该目标pod对应的node,并将该目标pod绑定到与该目标pod对应的node上。
96.或者,考虑到属于同一等价类的pod之间存在一定的差异,可能导致最适合运行这些pod的node不同,具体可以将上述目标可调度node集合中满足上述目标pod的资源需求,且运行评分分值最大的node,确定为与该目标pod对应的node,并将该目标pod绑定到与该目标pod对应的node上。
97.由此可见,通过将与从目标pod集合中确定出的主pod对应的可调度node集合,确定为与该目标pod集合对应的目标可调度node集合,并将该目标pod集合中的各个pod,绑定到从该目标可调度node集合中确定出的与该pod对应的node上,可以避免针对该目标pod集
合中的每个pod,都先对容器组管理集群中的node进行过滤得到所有可调度node,再对这些可调度node进行打分以选出得分最高的node来运行这个pod,因此可以减少计算量,提高pod调度效率,缩短pod调度延时。
98.在本实施例中,在完成了将上述目标pod集合中的各个pod绑定到与这个pod对应的node上之后,即可删除缓存的该目标pod集合与上述目标可调度node集合之间的对应关系,避免后续继续使用该对应关系来进行pod调度。
99.以如图5的流程为例,在pod调度阶段中,首先可以遍历通过等价类划分得到的至少一个pod集合,并在判断出遍历完成时,结束本次的容器组调度流程,而在判断出遍历未完成时,将当前获取到的pod集合确定为目标pod集合,并从该目标pod集合中确定出主pod,从而可以先从上述容器管理集群包含的node中,过滤掉不可运行该主pod的node,再对剩余node进行打分,并按照得分的大小顺序对这些剩余node进行排序,后续基于排序结果确定得分最高的n个node,并将这n个node确定为与该目标pod集合对应的目标可调度node集合中的node。
100.然后,可以遍历上述目标pod集合中的pod,并在判断出遍历完成时,继续遍历上述至少一个pod集合,以此类推,而在判断出遍历未完成时,将当前获取到的pod确定为目标pod,从上述目标可调度node集合中确定出与该目标pod对应的node,并将该目标pod绑定到与该目标pod对应的node上。
101.在上述技术方案中,可以从pod调度队列中获取待调度的多个pod,并对这多个pod进行等价类划分,得到至少一个pod集合,后续可以依次将这至少一个pod集合中的各个pod集合确定为目标pod集合,并对该目标pod集合进行调度处理,以将该目标pod集合中的各个pod绑定到用于运行这个pod的node上;而在进行调度处理时,具体可以先确定与该目标pod集合对应的目标可调度node集合,并缓存该目标pod集合与该目标可调度node集合之间的对应关系,再从该目标可调度node集合中确定出与该目标pod集合中的各个pod对应的node,并将该目标pod集合中的各个pod绑定到与该pod对应的node上,在完成了将该目标pod集合中的各个pod绑定到与该pod对应的node上之后,即可删除缓存的该目标pod集合与该目标可调度node集合之间的对应关系。
102.采用上述方式,在每次的容器组调度流程中,都会重新确定通过等价类划分得到的pod集合与可调度node集合之间的对应关系,并根据重新确定的对应关系来对这些pod集合中的pod进行调度,而不再是一直根据已经存储的等价类与可调度node之间的对应关系来进行pod调度,因此可以避免出现将pod调度到因为发生变化而不再是该pod的可调度node的node上,从而导致该pod无法正常运行的问题,保证稳定的pod调度。
103.请参考图6,图6是本说明书一示例性实施例示出的一种设备的硬件结构的示意图。
104.如图6所示,在硬件层面,上述设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或逻辑器件。
105.请参考图7,图7是本说明书一示例性实施例示出的一种容器组调度装置的框图。
106.上述容器组调度装置可以应用于如图6所示的设备上的调度器,以实现本说明书的技术方案;该设备可以作为运行在容器管理集群中的master node;所述容器管理集群包括用于运行在所述容器管理集群中创建的pod的多个node;所述装置包括:
107.获取模块701,从pod调度队列中获取待调度的多个pod,并对所述多个pod进行等价类划分,得到至少一个pod集合;
108.调度模块702,依次将所述至少一个pod集合中的各个pod集合确定为目标pod集合,并对所述目标pod集合进行调度处理,以将所述目标pod集合中的各个pod绑定到用于运行所述pod的node上;
109.所述调度处理包括:
110.确定与所述目标pod集合对应的目标可调度node集合,并缓存所述目标pod集合与所述目标可调度node集合之间的对应关系;
111.从所述目标可调度node集合中确定出与所述目标pod集合中的各个pod对应的node,并将所述目标pod集合中的各个pod绑定到与所述pod对应的node上;
112.在完成将所述目标pod集合中的各个pod绑定到与所述pod对应的node上之后,删除缓存的所述对应关系。
113.在本实施例中,所述获取模块具体用于:
114.按照预设的时间周期,从pod调度队列中获取待调度的多个pod;或者,
115.在pod调度队列中的pod的数量达到预设的阈值时,从所述pod调度队列中获取待调度的多个pod。
116.在本实施例中,所述获取模块具体用于:
117.依次将所述多个pod中的各个pod确定为目标pod,并对所述目标pod进行分类处理,以对所述多个pod进行等价类划分,得到至少一个pod集合;
118.所述分类处理包括:
119.获取所述目标pod的特征数据,并基于所述特征数据,计算与所述目标pod对应的分类索引;
120.确定是否存在与所述分类索引对应的pod集合;
121.如果存在与所述分类索引对应的pod集合,将所述目标pod添加到所述pod集合中;
122.如果不存在与所述分类索引对应的pod集合,创建所述pod集合,并将所述目标pod添加到所述pod集合中。
123.在本实施例中,所述特征数据包括通用属性信息、资源规格信息和调度规则中的至少一个或者多个的组合。
124.在本实施例中,所述特征数据包括所述通用属性信息、资源规格信息和调度规则;
125.所述获取模块具体用于:
126.分别计算所述目标pod的通用属性信息、资源规格信息和调度规则的hash值;
127.对所述通用属性信息的hash值、所述资源规格信息的hash值和所述调度规则的hash值进行拼接,并将拼接后的hash值确定为与所述目标pod对应的分类索引。
128.在本实施例中,所述调度模块具体用于:
129.从所述目标pod集合中确定出主pod;
130.确定与所述主pod对应的可调度node集合,并将所述可调度node集合确定为与所述目标pod集合对应的目标可调度node集合。
131.在本实施例中,所述主pod为第一个被添加到所述目标pod集合中的pod。
132.在本实施例中,所述调度模块具体用于:
133.从所述容器管理集群包含的node中,过滤掉不可运行所述主pod的node,并将剩余node确定为与所述主pod对应的可调度node集合中的node。
134.在本实施例中,所述调度模块具体用于:
135.对剩余node进行针对所述主pod的运行评分,并按照运行评分分值的大小顺序对所述剩余node进行排序;
136.基于排序结果确定所述运行评分分值最大的预设数量的node,并将所述预设数量的node确定为与所述主pod对应的可调度node集合中的node。
137.在本实施例中,所述调度模块具体用于:
138.依次将所述目标pod集合中的各个pod确定为目标pod,并对所述目标pod进行绑定处理,以将所述目标pod绑定到与所述目标pod对应的node上;
139.所述绑定处理包括:
140.将所述目标可调度node集合中所述运行评分分值最大的node,确定为与所述目标pod对应的node,并将所述目标pod绑定到与所述目标pod对应的node上。
141.在本实施例中,所述调度模块具体用于:
142.依次将所述目标pod集合中的各个pod确定为目标pod,并对所述目标pod进行绑定处理,以将所述目标pod绑定到与所述目标pod对应的node上;
143.所述绑定处理包括:
144.将所述目标可调度node集合中满足所述目标pod的资源需求,且所述运行评分分值最大的node,确定为与所述目标pod对应的node,并将所述目标pod绑定到与所述目标pod对应的node上。
145.在本实施例中,所述容器管理集群包括kubernetes集群或者基于kubernetes的容器管理集群。
146.对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。
147.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书的技术方案的目的。
148.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
149.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
150.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
151.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
152.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
153.上述对本说明书特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
154.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
155.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
156.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1