容器部署方法、装置、电子设备和计算机可读存储介质与流程

文档序号:30705632发布日期:2022-07-09 22:51阅读:100来源:国知局
容器部署方法、装置、电子设备和计算机可读存储介质与流程

1.本发明涉及云计算技术领域,尤其涉及一种容器部署方法、装置、电子设备和计算机可读存储介质。


背景技术:

2.容器是位于应用程序/组件和服务器平台之间的接口集合,使得应用程序/组件可以方便部署到服务器上运行。容器屏蔽了服务器平台的复杂性,使得应用程序/组件在它的基础上可以方便快捷地部署。
3.相关技术中,容器部署的方式通常如下:首先,基于过滤规则过滤掉不符合容器部署要求的节点,例如,基于容器资源需求,过滤掉可用资源比容器需求资源少的节点;其次,从上一阶段过滤后的节点中选择用于部署容器的节点,并执行容器的部署操作。
4.然而,由于现有过滤机制有限,当某个节点符合容器的部署要求,而由于节点内部存在某些问题,可能导致容器部署失败。


技术实现要素:

5.本发明实施例提供一种容器部署方法、装置、电子设备和计算机可读存储介质,以解决容器部署中存在的上述问题。
6.第一方面,本发明实施例提供了一种容器部署方法,包括:
7.根据第一容器的部署需求,对节点进行过滤,筛选出符合所述部署需求的n个节点,所述n为大于1的整数;
8.从所述n个节点中选择第一节点,并执行所述第一容器的第一部署操作;所述第一部署操作用于将所述第一容器部署于所述第一节点;
9.在执行所述第一部署操作的过程中,响应于检测到所述第一部署操作暂停,对所述第一部署操作进行回滚;
10.选择第二节点,并执行所述第一容器的第二部署操作;所述第二部署操作用于将所述第一容器部署于所述第二节点,所述第二节点为所述n个节点中除所述第一节点之外的一节点。
11.第二方面,本发明实施例还提供一种容器部署装置,包括:
12.过滤模块,用于根据第一容器的部署需求,对节点进行过滤,筛选出符合所述部署需求的n个节点,所述n为大于1的整数;
13.第一执行模块,用于从所述n个节点中选择第一节点,并执行所述第一容器的第一部署操作;所述第一部署操作用于将所述第一容器部署于所述第一节点;
14.回滚模块,用于在执行所述第一部署操作的过程中,响应于检测到所述第一部署操作暂停,对所述第一部署操作进行回滚;
15.第二执行模块,用于选择第二节点,并执行所述第一容器的第二部署操作;所述第二部署操作用于将所述第一容器部署于所述第二节点,所述第二节点为所述n个节点中除
所述第一节点之外的一节点。
16.第三方面,本发明实施例还提供一种电子设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,所述处理器,用于读取存储器中的程序实现如上所述的容器部署方法中的步骤。
17.第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的容器部署方法中的步骤。
18.本发明实施例中,在容器部署过程中,通过检测部署操作是否成功,从而能够在容器部署过程中及时发现问题并重新为容器选择部署节点,以确保容器部署成功。这样,能够避免容器无法部署成功的情况,弥补了现有过滤机制存在的潜在缺陷,使系统的稳定性和可用性得到增强。
附图说明
19.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1是本发明实施例提供的容器部署方法的流程图;
21.图2至图4是本发明实施例提供的容器部署过程的示例图;
22.图5是本发明实施例提供的容器部署装置的结构图;
23.图6是本发明实施例提供的电子设备的结构图。
具体实施方式
24.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
25.相关技术中,在对容器(pod)进行部署时,客户端可通过应用程序编程接口(application programming interface,api)服务器(server)的表述性状态传递风格的应用程序编程接口(representational state transfer api,rest api)或者北向接口(kubernetes api)工具创建容器资源,api server收到用户请求后,存储相关数据到分布式的键值数据库系统(例如etcd数据库)中,调度器监听api server查看容器的节点(node)列表,循环遍历地为每个容器尝试分配节点,这个分配过程可以包括以下两个阶段:
26.其一,预选阶段(predicates)。该阶段中,调度器可基于预设的规则过滤掉不符合容器要求的节点,比如容器设置了资源的请求,那么可用资源比容器需要的资源少的节点会被过滤掉。
27.其二,优选阶段(priorities),对上一阶段过滤出来的节点进行打分,调度器会考虑一些整体的优化策略,比如把deployment控制的多个容器副本分布到不同的节点上,使用最低负载的节点等策略。
28.经过上面的阶段后,选择打分最高的节点和容器进行绑定,然后将结果存储到etcd数据库中。最后被选择的节点对应的节点代理(kubelet)去执行容器部署的相关操作。
29.然而,由于现有过滤机制有限,不可能考虑到所有的过滤条件,当被选择的节点符合容器的部署要求,而由于节点内部存在某些问题,例如cpu model、kernel版本或者其他兼容性问题等,可能造成容器处于pending/error状态,导致容器部署失败,造成系统故障,影响系统的稳定性和可用性。
30.鉴于此,本发明实施例提供一种容器部署方法、装置、电子设备和计算机可读存储介质,以解决容器部署中存在的上述问题。
31.参见图1,图1是本发明实施例提供的容器部署方法的流程图,如图1所示,包括以下步骤:
32.步骤101:根据第一容器的部署需求,对节点进行过滤,筛选出符合所述部署需求的n个节点,所述n为大于1的整数。
33.上述节点可以是主机或服务器。
34.该步骤中,响应于接收到对第一容器进行部署的请求,可以根据第一容器的部署需求,对节点进行过滤,筛选出符合第一容器的部署需求的节点。
35.本发明实施例可以基于相关技术中的过滤规则对节点进行过滤,也可以基于其他的过滤规则对节点进行过滤。
36.作为举例,过滤规则可以包括但不限于以下的算法:
37.podfitsresources:节点上剩余的资源是否大于容器请求的资源;
38.podfitshos:如果容器指定了节点名称(nodename),检查节点名称是否和nodename匹配;
39.podfitshostports:节点上已经使用的端口(port)是否和容器申请的端口冲突;
40.podselectormatches:过滤掉和容器指定的标签不匹配的节点;
41.nodiskconflict:已经挂载(mount)的存储卷(volume)和容器指定的存储卷不冲突,除非它们都是只读的;
42.checknodediskpressure:检查节点的磁盘空间是否符合要求;
43.checknodememorypressure:检查节点的内存是否够用。
44.步骤102:从所述n个节点中选择第一节点,并执行所述第一容器的第一部署操作;所述第一部署操作用于将所述第一容器部署于所述第一节点。
45.该步骤中,可以从筛选出的n个节点中选择第一节点,并执行第一容器的第一部署操作,即,将第一容器部署于第一节点的操作。
46.本发明实施例可以基于相关技术中的优选规则从n个节点中选择得分最高的节点作为第一节点,也可以基于其他规则从n个节点中选择第一节点。
47.例如,可以基于优先级规则选择第一节点,节点的优先级(priorities)可通过如下的键值对表示,键是该优先级的名称,值是它的权重值:
48.leastrequestedpriority:通过计算cpu和内存的使用率来决定权重,使用率越低权重越高;
49.selectorspreadpriority:为了更好的高可用,对同属于一个控制器(deployment)或者副本控制器(replication controller,rc)下面的多个容器副本,尽量
调度到多个不同的节点上,当一个容器被调度的时候,会先去查找该容器对应的控制器(controller),然后查看该控制器下已存在的容器,运行容器越少的节点权重越高;
50.imagelocalitypriority:如果在某个节点上已经有要使用的镜像节点了,镜像总大小值越大,权重就越高;
51.nodeaffinitypriority:根据节点的亲和性来计算一个权重值。
52.步骤103:在执行所述第一部署操作的过程中,响应于检测到所述第一部署操作暂停,对所述第一部署操作进行回滚。
53.在执行第一部署操作的过程中,可能由于第一节点内部存在某些问题,而导致第一部署操作暂停(pending)。
54.该步骤中,在执行第一部署操作的过程中,响应于检测到第一部署操作暂停,对第一部署操作进行回滚。具体的,在执行第一部署操作的过程中,如果第一部署操作暂停,可主动通知kubernetes api进行回滚流程。
55.步骤104:选择第二节点,并执行所述第一容器的第二部署操作;所述第二部署操作用于将所述第一容器部署于所述第二节点,所述第二节点为所述n个节点中除所述第一节点之外的一节点。
56.该步骤中,可以重新为第一容器选择部署节点,具体的,可以将第一节点排除掉,并从剩下的节点中选择第二节点,并执行第一容器的第二部署操作,即,将第一容器部署于第二节点的操作。
57.需要说明的是,在执行第二部署操作的过程中,也可以监测第二部署操作是否成功,在第二部署操作暂停的情况下,也可以对第二部署操作进行回滚,并重新为第一容器选择部署节点,依此类推,直至第一容器部署成功。为避免重复,对此不作赘述。
58.本发明实施例中,在容器部署过程中,通过检测部署操作是否成功,从而能够在容器部署过程中及时发现问题并重新为容器选择部署节点,以确保容器部署成功。这样,能够避免容器无法部署成功的情况,弥补了现有过滤机制存在的潜在缺陷,使系统的稳定性和可用性得到增强。
59.可选的,所述在执行所述第一容器的第一部署操作的过程中,响应于检测到所述第一部署操作暂停,对所述第一部署操作进行回滚,包括:
60.在执行所述第一容器的第一部署操作的过程中,对所述第一部署操作进行计时;
61.响应于所述第一部署操作的时间达到第一阈值,且检测到所述第一部署操作暂停,对所述第一部署操作进行回滚。
62.该实施方式中,在部署容器时,可以引入retryfilter过滤器。通过引入retryfilter过滤器,可以为容器部署操作加入计时器功能,在可配置的一定时间周期内,例如可配置10秒或者其他,如果容器部署操作暂停,可主动通知kubernetes api进行回滚流程,对容器部署操作进行回滚。
63.该实施方式中,通过为容器部署操作引入计时器功能,能够及时地发现容器部署过程中存在的问题,从而能够更好地监测容器部署过程。
64.可选的,所述选择第二节点,并执行所述第一容器的第二部署操作,包括:
65.响应于对所述第一部署操作进行回滚的次数达到第二阈值,选择第二节点,并执行所述第一容器的第二部署操作。
66.该实施方式中,在部署容器时,可以引入retryfilter过滤器。通过引入retryfilter过滤器,可以为容器部署操作加入计数器功能,在对第一部署操作进行回滚后,可以再次执行第一部署操作,每增加一次回滚操作,retryfilter过滤器会将回滚的次数增加1,直至回滚的次数达到第二阈值,例如3次。
67.该实施方式中,通过为容器部署操作引入计数器功能,能够避免因偶然事件而导致容器部署失败的情况,从而避免不必要的后续重选节点以及重新部署等过程。
68.可选的,所述方法还包括:
69.响应于对所述第一部署操作进行回滚的次数达到第二阈值,将所述第一节点标记为所述第一容器的不可用节点。
70.该实施方式中,在第一部署操作进行回滚的次数达到第二阈值时,将第一节点标记为第一容器的不可用节点,例如,将第一节点设置为“污点”节点,具体的,可将第一节点置于第一容器的不可用节点列表中。
71.该实施方式中,将第一节点标记为第一容器的不可用节点,当再次需要对第一容器进行调度时,将不会调度到第一节点,从而避免了第一容器再次调度失败的情况发生。
72.在将第一节点标记为第一容器的不可用节点之后,还可以通知管理员对第一节点进行修复。
73.可选的,在所述将所述第一节点标记为所述第一容器的不可用节点之后,所述方法还包括:
74.响应于所述第一节点修复,将所述第一节点标记为所述第一容器的可用节点。
75.该实施方式中,在第一节点得到修复之后,还可以将第一节点标记为第一容器的可用节点。具体的,在第一容器的不可用节点列表中删除第一节点的标识。当再次需要对第一容器进行调度时,可以重新调度到第一节点,这样,扩大了第一容器可调度的节点数量,为第一容器的调度提供了更多的选择。
76.可选的,所述选择第二节点,包括:
77.根据节点的优先级,选择第二节点。
78.该实施方式中,为了使选择的部署节点更好地满足第一容器的部署需求,可以根据节点的优先级,为第一容器选择第二节点。
79.该实施方式中,可以将应用细分为不同的优先级,将资源优先提供给高优先级的应用。
80.例如,定义priorityclass,不同priorityclass的值不同,如果retryfilter记录了上次调度失败的节点,可在下一次调度时剔除出过滤列表。将容器的priorityclassname字段设置为期待的priorityclass,并选择retryfilter记录的节点。
81.该实施方式中,通过节点的优先级来选择第二节点,能够提高资源可用率,同时保障了高优先级的服务质量。
82.为了更好地理解本发明实施例,以下结合图2至图4对容器部署的过程进行举例说明。
83.如图1所示,假设有节点1至节点6共六个节点。首先,在预选阶段,基于过滤规则从这六个节点中过滤到不符合第一容器部署要求的节点,假设,节点2和节点5不符合第一容器部署要求,则筛选出的符合第一容器部署要求的n个节点为节点1、节点3、节点4和节点6。
其次,在优选阶段,对节点1、节点3、节点4和节点6这四个节点进行优先级打分,按打分从高到低的顺序为节点3、节点1、节点6和节点4。随后,选择节点3作为第一节点。
84.如图2所示,在将第一容器部署于节点3的过程中,由于节点3某些兼容性问题,造成第一容器处在pending或error状态,第一容器无法完成部署。
85.如图3所示,对上述部署操作进行回滚,将节点3标记为第一容器的不可用节点,并从节点1、节点6和节点4中重新选择第一容器的部署节点。图3中,可进一步根据节点的优先级,将优先级最高的节点(即节点1)作为第二节点,并将第一容器部署于节点1,此时,第一容器部署成功。
86.需要说明的是,本发明实施例中的多种可选的实施方式,彼此可以相互结合实现,也可以单独实现,对此本技术不作限定。
87.本发明实施例中,在容器部署过程中,通过检测部署操作是否成功,从而能够在容器部署过程中及时发现问题并重新为容器选择部署节点,以确保容器部署成功。这样,能够避免容器无法部署成功的情况,弥补了现有过滤机制存在的潜在缺陷,使系统的稳定性和可用性得到增强。
88.本发明实施例还提供了一种容器部署装置。参见图5,图5是本发明实施例提供的容器部署装置的结构图。由于容器部署装置解决问题的原理与本发明实施例中容器部署方法相似,因此该容器部署装置的实施可以参见方法的实施,重复之处不再赘述。
89.如图5所示,容器部署装置500包括:
90.过滤模块501,用于根据第一容器的部署需求,对节点进行过滤,筛选出符合所述部署需求的n个节点,所述n为大于1的整数;
91.第一执行模块502,用于从所述n个节点中选择第一节点,并执行所述第一容器的第一部署操作;所述第一部署操作用于将所述第一容器部署于所述第一节点;
92.回滚模块503,用于在执行所述第一部署操作的过程中,响应于检测到所述第一部署操作暂停,对所述第一部署操作进行回滚;
93.第二执行模块504,用于选择第二节点,并执行所述第一容器的第二部署操作;所述第二部署操作用于将所述第一容器部署于所述第二节点,所述第二节点为所述n个节点中除所述第一节点之外的一节点。
94.可选的,回滚模块503包括:
95.计时单元,用于在执行所述第一容器的第一部署操作的过程中,对所述第一部署操作进行计时;
96.回滚单元,用于响应于所述第一部署操作的时间达到第一阈值,且检测到所述第一部署操作暂停,对所述第一部署操作进行回滚。
97.可选的,第二执行模块504具体用于:
98.响应于对所述第一部署操作进行回滚的次数达到第二阈值,选择第二节点,并执行所述第一容器的第二部署操作。
99.可选的,容器部署装置500还包括:
100.第一标记模块,用于响应于对所述第一部署操作进行回滚的次数达到第二阈值,将所述第一节点标记为所述第一容器的不可用节点。
101.可选的,容器部署装置500还包括:
102.第二标记模块,用于响应于所述第一节点修复,将所述第一节点标记为所述第一容器的可用节点。
103.可选的,第二执行模块504具体用于:
104.根据节点的优先级,选择第二节点,并执行所述第一容器的第二部署操作。
105.本发明实施例提供的容器部署装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
106.本发明实施例还提供了一种电子设备。由于电子设备解决问题的原理与本发明实施例中电子设备方法相似,因此该电子设备的实施可以参见方法的实施,重复之处不再赘述。
107.如图6所示,本发明实施例的电子设备,包括:
108.处理器600,用于读取存储器620中的程序,执行下列过程:
109.根据第一容器的部署需求,对节点进行过滤,筛选出符合所述部署需求的n个节点,所述n为大于1的整数;
110.从所述n个节点中选择第一节点,并执行所述第一容器的第一部署操作;所述第一部署操作用于将所述第一容器部署于所述第一节点;
111.在执行所述第一部署操作的过程中,响应于检测到所述第一部署操作暂停,对所述第一部署操作进行回滚;
112.选择第二节点,并执行所述第一容器的第二部署操作;所述第二部署操作用于将所述第一容器部署于所述第二节点,所述第二节点为所述n个节点中除所述第一节点之外的一节点。
113.其中,在图6中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器600代表的一个或多个处理器和存储器620代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机610可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器600负责管理总线架构和通常的处理,存储器620可以存储处理器600在执行操作时所使用的数据。
114.可选的,处理器600还用于读取存储器620中的程序,执行如下步骤:
115.在执行所述第一容器的第一部署操作的过程中,对所述第一部署操作进行计时;
116.响应于所述第一部署操作的时间达到第一阈值,且检测到所述第一部署操作暂停,对所述第一部署操作进行回滚。
117.可选的,处理器600还用于读取存储器620中的程序,执行如下步骤:
118.响应于对所述第一部署操作进行回滚的次数达到第二阈值,选择第二节点,并执行所述第一容器的第二部署操作。
119.可选的,处理器600还用于读取存储器620中的程序,执行如下步骤:
120.响应于对所述第一部署操作进行回滚的次数达到第二阈值,将所述第一节点标记为所述第一容器的不可用节点。
121.可选的,处理器600还用于读取存储器620中的程序,执行如下步骤:
122.响应于所述第一节点修复,将所述第一节点标记为所述第一容器的可用节点。
123.可选的,处理器600还用于读取存储器620中的程序,执行如下步骤:
124.根据节点的优先级,选择第二节点。
125.本发明实施例提供的电子设备,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
126.此外,本发明实施例的计算机可读存储介质,用于存储计算机程序,所述计算机程序可被处理器执行实现以下步骤:
127.根据第一容器的部署需求,对节点进行过滤,筛选出符合所述部署需求的n个节点,所述n为大于1的整数;
128.从所述n个节点中选择第一节点,并执行所述第一容器的第一部署操作;所述第一部署操作用于将所述第一容器部署于所述第一节点;
129.在执行所述第一部署操作的过程中,响应于检测到所述第一部署操作暂停,对所述第一部署操作进行回滚;
130.选择第二节点,并执行所述第一容器的第二部署操作;所述第二部署操作用于将所述第一容器部署于所述第二节点,所述第二节点为所述n个节点中除所述第一节点之外的一节点。
131.可选的,所述计算机程序还可被处理器执行实现以下步骤:
132.在执行所述第一容器的第一部署操作的过程中,对所述第一部署操作进行计时;
133.响应于所述第一部署操作的时间达到第一阈值,且检测到所述第一部署操作暂停,对所述第一部署操作进行回滚。
134.可选的,所述计算机程序还可被处理器执行实现以下步骤:
135.响应于对所述第一部署操作进行回滚的次数达到第二阈值,选择第二节点,并执行所述第一容器的第二部署操作。
136.可选的,所述计算机程序还可被处理器执行实现以下步骤:
137.响应于对所述第一部署操作进行回滚的次数达到第二阈值,将所述第一节点标记为所述第一容器的不可用节点。
138.可选的,所述计算机程序还可被处理器执行实现以下步骤:
139.响应于所述第一节点修复,将所述第一节点标记为所述第一容器的可用节点。
140.可选的,所述计算机程序还可被处理器执行实现以下步骤:
141.根据节点的优先级,选择第二节点。
142.在本技术所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
143.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
144.上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存
储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
145.以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1