本发明是关于云计算领域,特别是关于一种云原生架构中弹性伸缩的方法、装置及存储介质。
背景技术:
1、云原生架构指在云环境下运行的一种软件架构,弹性伸缩指根据业务需求和策略自动调整计算能力。在业务需求增长时,弹性伸缩自动增加指定类型的实例,以保障计算能力;在业务需求下降时,弹性伸缩自动减少指定类型的实例,以节约成本。
2、当kubernetes集群中资源不足时,cluster autoscaler(ca,集群自动缩放器)将监测到因无法调度而挂起的pod,其中资源不足是指集群的计算、网络、存储等资源无法满足pod的请求量及亲和性规则。cluster autoscaler根据每个弹性伸缩组nodegroup的节点模板进行调度判断,根据该节点模板要求创建新的节点,并驱使弹性伸缩组使用新的节点进行扩容。
3、当cluster autoscaler监测到利用率低于设定缩容阈值的节点,判断集群状态是否可以触发缩容。若集群可以触发缩容,判断节点是否满足缩容条件,满足条件则驱逐该节点上的pod后进行关机释放。
4、对于现有自动扩容技术,一个问题在于扩容时准备新节点的耗时较长。当主机资源用尽,服务维度的扩容需要等待主机资源扩容完成后,才能继续扩容。一般来说,主机维度的弹性伸缩会预设一个策略,当资源使用量超过阈值时,进行主机层面的扩容。但是在发生意外的情况下,比如一次需要的资源量超过预留的主机资源,则依然需要等待主机扩容完毕,服务维度的扩容才能完成。此时,若服务维度扩容完成的时间过长,将影响应用的稳定性,若应用架构设计上存在缺陷,则会导致应用的崩溃停服。
5、对于现有自动缩容技术,进行缩容时释放的节点缺乏充分利用,造成浪费。一般情况下,热点应用呈现集中的趋势,伸缩节点的规格会集中在几个热门规格上。若缩容的节点直接进行删除释放,节点将失去再次利用的价值,如能够基于快照以回复节点状态。
6、公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
技术实现思路
1、本发明的目的在于提供一种云原生架构中弹性伸缩的方法、装置及存储介质,其能够加快云原生架构中节点扩容的速度。
2、为实现上述目的,本发明的实施例提供了一种云原生架构中弹性伸缩的方法。
3、在本发明的一个或多个实施方式中,所述方法包括:驱动kubernetes集群中的弹性伸缩组查询备用节点池中的可用扩容节点状态,其中所述备用节点池用于容置开机状态节点和/或关机状态节点;基于所述可用扩容节点状态,对所述kubernetes集群进行扩容。
4、在本发明的一个或多个实施方式中,驱动所述kubernetes集群中的弹性伸缩组查询备用节点池中的可用扩容节点状态,具体包括:驱动所述kubernetes集群中的弹性伸缩组查询所述备用节点池中是否包括可用开机状态节点;若否,驱动所述kubernetes集群中的弹性伸缩组查询所述备用节点池中是否包括可用关机状态节点。
5、在本发明的一个或多个实施方式中,对所述kubernetes集群进行扩容,具体包括:若所述备用节点池中包括可用开机状态节点,驱动所述kubernetes集群中的弹性伸缩组使用所述可用开机状态节点对所述kubernetes集群进行扩容。
6、在本发明的一个或多个实施方式中,对所述kubernetes集群进行扩容,具体包括:若所述备用节点池中包括可用关机状态节点,对所述可用关机状态节点进行开机;驱动所述kubernetes集群中的弹性伸缩组重新查询所述备用节点池中是否包括可用开机状态节点。
7、在本发明的一个或多个实施方式中,所述方法还包括:驱动所述kubernetes集群中的弹性伸缩组查询所述备用节点池中是否包括满足扩容对应pod调度需求的节点;若是,判定所述节点为可用节点。
8、在本发明的一个或多个实施方式中,所述方法还包括:若所述备用节点池中不包括满足扩容对应pod调度需求的节点,驱动所述kubernetes集群中的弹性伸缩组向资源池集群申请创建新的节点,并将所述新的节点添加到所述kubernetes集群中。
9、在本发明的一个或多个实施方式中,所述备用节点池包括用于容置开机状态节点的一级热备池和用于容置关机状态节点二级冷备池,所述方法还包括:驱动所述kubernetes集群中的弹性伸缩组查询所述一级热备池中是否包括可用开机状态节点;若是,驱动所述kubernetes集群中的弹性伸缩组使用所述一级热备池中的可用开机状态节点对所述kubernetes集群进行扩容。
10、在本发明的一个或多个实施方式中,若查询到所述一级热备池中不包括可用开机状态节点,所述方法还包括:驱动所述kubernetes集群中的弹性伸缩组查询所述二级冷备池中是否包括可用关机状态节点;若是,将所述二级冷备池中的可用关机状态节点迁入所述一级热备池并对所述可用关机状态节点进行开机;以及驱动所述kubernetes集群中的弹性伸缩组重新查询所述一级热备池中是否包括可用开机状态节点。
11、在本发明的一个或多个实施方式中,若查询到所述二级冷备池中不包括可用关机状态节点,所述方法还包括:驱动所述kubernetes集群中的弹性伸缩组向资源池集群申请创建新的节点,并将所述新的节点添加到所述kubernetes集群中。
12、另外的,在本发明的一个或多个实施方式中,所述方法包括:确定所述kubernetes集群中缩容节点,并清理所述缩容节点上数据;从所述kubernetes集群中移除所述缩容节点,将所述缩容节点迁入备用节点池中,其中所述备用节点池用于容置开机状态节点和/或关机状态节点。
13、在本发明的一个或多个实施方式中,所述方法还包括:检查所述资源池集群的负载压力是否超过负载压力阈值;若是,选取所述备用节点池中开机状态节点更改为关机状态。
14、在本发明的一个或多个实施方式中,若所述资源池集群的负载压力未超过负载压力阈值,所述方法还包括:检查所述备用节点池中是否包括超过天数阈值未使用的节点;若是,删除所述超过天数阈值未使用的节点。
15、在本发明的一个或多个实施方式中,所述备用节点池包括用于容置开机状态节点的一级热备池,所述方法还包括:确定所述kubernetes集群中缩容节点,并清理所述缩容节点上数据;从所述kubernetes集群中移除所述缩容节点,将所述缩容节点迁入所述一级热备池中。
16、在本发明的一个或多个实施方式中,所述备用节点池还包括用于容置关机状态节点二级冷备池,所述方法还包括:检查所述资源池集群的负载压力是否超过负载压力阈值;若是,逐个更改所述一级热备池中节点为关机状态,并将更改后的节点迁移到所述二级冷备池中。
17、在本发明的一个或多个实施方式中,所述方法还包括:当所述一级热备池中一个节点迁移完成时,检查此时所述资源池集群的负载压力是否超过所述负载压力阈值;若否,停止进行所述一级热备池的节点迁移。
18、在本发明的一个或多个实施方式中,所述方法还包括:若此时所述资源池集群的负载压力超过所述负载压力阈值,继续进行所述一级热备池的节点迁移。
19、在本发明的一个或多个实施方式中,若所述资产池集群的负载压力未超过负载压力阈值,所述方法还包括:检查所述二级冷备池中是否存在超过天数阈值未使用的节点;若是,删除所述超过天数阈值未使用的节点。
20、在本发明的一个或多个实施方式中,所述依次更改所述一级热备池中节点为关机状态,具体包括:基于所述一级热备池中节点加入的顺序,逐个更改所述一级热备池中节点为关机状态。
21、在本发明的一个或多个实施方式中,所述确定所述kubernetes集群中缩容节点,具体包括:查找所述kubernetes集群中资源利用率低于预设缩容阈值的节点,判断所述节点是否满足缩容条件;若是,确定所述节点为缩容节点。
22、在本发明的另一个方面当中,提供了一种云原生架构中弹性伸缩的装置,其包括查询模块和扩容模块。
23、查询模块,用于驱动所述kubernetes集群中的弹性伸缩组查询备用节点池中的可用扩容节点状态,其中所述备用节点池用于容置开机状态节点和/或关机状态节点。
24、扩容模块,用于基于所述可用扩容节点状态,对所述kubernetes集群进行扩容。
25、在本发明的一个或多个实施方式中,所述查询模块还用于:驱动所述kubernetes集群中的弹性伸缩组查询所述备用节点池中是否包括可用开机状态节点;若否,驱动所述kubernetes集群中的弹性伸缩组查询所述备用节点池中是否包括可用关机状态节点。
26、在本发明的一个或多个实施方式中,所述扩容模块还用于:若所述备用节点池中包括可用开机状态节点,驱动所述kubernetes集群中的弹性伸缩组使用所述可用开机状态节点对所述kubernetes集群进行扩容。
27、在本发明的一个或多个实施方式中,所述扩容模块还用于:若所述备用节点池中包括可用关机状态节点,对所述可用关机状态节点进行开机;驱动所述kubernetes集群中的弹性伸缩组重新查询所述备用节点池中是否包括可用开机状态节点。
28、在本发明的一个或多个实施方式中,所述查询模块还用于:驱动所述kubernetes集群中的弹性伸缩组查询所述备用节点池中是否包括满足扩容对应pod调度需求的节点;若是,判定所述节点为可用节点。
29、在本发明的一个或多个实施方式中,所述扩容模块还用于:若所述备用节点池中不包括满足扩容对应pod调度需求的节点,驱动所述kubernetes集群中的弹性伸缩组向资源池集群申请创建新的节点,并将所述新的节点添加到所述kubernetes集群中。
30、在本发明的一个或多个实施方式中,所述查询模块还用于:驱动所述kubernetes集群中的弹性伸缩组查询所述一级热备池中是否包括可用开机状态节点。
31、在本发明的一个或多个实施方式中,所述扩容模块还用于:驱动所述kubernetes集群中的弹性伸缩组使用所述一级热备池中的可用开机状态节点对所述kubernetes集群进行扩容。
32、在本发明的一个或多个实施方式中,所述查询模块还用于:驱动所述kubernetes集群中的弹性伸缩组查询所述二级冷备池中是否包括可用关机状态节点;
33、在本发明的一个或多个实施方式中,所述扩容模块还用于:将所述二级冷备池中的可用关机状态节点迁入所述一级热备池并对所述可用关机状态节点进行开机;驱动所述kubernetes集群中的弹性伸缩组重新查询所述一级热备池中是否包括可用开机状态节点。
34、在本发明的一个或多个实施方式中,所述扩容模块还用于:若查询到所述二级冷备池中不包括可用关机状态节点,驱动所述kubernetes集群中的弹性伸缩组向资源池集群申请创建新的节点,并将所述新的节点添加到所述kubernetes集群中。
35、在本发明的另一个方面当中,还提供了一种云原生架构中弹性伸缩的装置,其包括清理模块和迁移模块。
36、清理模块,用于确定所述kubernetes集群中缩容节点,并清理所述缩容节点上数据。
37、迁移模块,用于从所述kubernetes集群中移除所述缩容节点,将所述缩容节点迁入备用节点池中,其中所述备用节点池用于容置开机状态节点和/或关机状态节点。
38、在本发明的一个或多个实施方式中,所述清理模块还用于:检查所述资源池集群的负载压力是否超过负载压力阈值;若是,选取所述备用节点池中开机状态节点更改为关机状态。
39、在本发明的一个或多个实施方式中,所述清理模块还用于:检查所述备用节点池中是否包括超过天数阈值未使用的节点;若是,删除所述超过天数阈值未使用的节点。
40、在本发明的一个或多个实施方式中,所述清理模块还用于:确定所述kubernetes集群中缩容节点,并清理所述缩容节点上数据。
41、在本发明的一个或多个实施方式中,所述迁移模块还用于:从所述kubernetes集群中移除所述缩容节点,将所述缩容节点迁入所述一级热备池中。
42、在本发明的一个或多个实施方式中,所述迁移模块还用于:检查所述资源池集群的负载压力是否超过负载压力阈值;若是,逐个更改所述一级热备池中节点为关机状态,并将更改后的节点迁移到所述二级冷备池中。
43、在本发明的一个或多个实施方式中,所述迁移模块还用于:当所述一级热备池中一个节点迁移完成时,检查此时所述资源池集群的负载压力是否超过所述负载压力阈值;若否,停止进行所述一级热备池的节点迁移。
44、在本发明的一个或多个实施方式中,所述迁移模块还用于:若此时所述资源池集群的负载压力超过所述负载压力阈值,继续进行所述一级热备池的节点迁移。
45、在本发明的一个或多个实施方式中,所述清理模块还用于:检查所述二级冷备池中是否存在超过天数阈值未使用的节点;若是,删除所述超过天数阈值未使用的节点。
46、在本发明的一个或多个实施方式中,所述清理模块还用于:基于所述一级热备池中节点加入的顺序,逐个更改所述一级热备池中节点为关机状态。
47、在本发明的一个或多个实施方式中,所述清理模块还用于:查找所述kubernetes集群中资源利用率低于预设缩容阈值的节点,判断所述节点是否满足缩容条件;若是,确定所述节点为缩容节点。
48、与现有技术相比,根据本发明实施方式的云原生架构中弹性伸缩的方法、装置及存储介质,能够通过弹性伸缩组从备用节点池中添加扩容节点,实现了云原生架构中集群的快速扩容,解决了现有技术中创建节点耗时较长的问题,从而达到了用户应用在突发的流量洪峰下运行更加稳定的实际应用效果;能够通过将缩容释放的节点迁移到备用节点池中,实现了缩容节点的可重复利用,解决了缩容节点利用不足的问题。