CN112291288B - 一种容器集群伸缩方法、装置、电子设备及可读存储介质 - Google Patents
一种容器集群伸缩方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN112291288B CN112291288B CN201910673036.9A CN201910673036A CN112291288B CN 112291288 B CN112291288 B CN 112291288B CN 201910673036 A CN201910673036 A CN 201910673036A CN 112291288 B CN112291288 B CN 112291288B
- Authority
- CN
- China
- Prior art keywords
- cluster
- container
- node
- preset
- cluster node
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种容器集群伸缩方法、装置、电子设备及可读存储介质,可以应用于容器集群,容器集群包括多个集群节点,每个集群节点中运行有至少一个容器组,每个容器组中运行有至少一个容器,方法包括:获取容器集群中每个集群节点的运行状态数据,基于运行状态数据,判断容器集群是否满足预设条件,如果满足预设条件,则发送节点创建请求,在检测到容器集群中存在处于预定状态的容器组时,将处于预定状态的容器组添加至新创建的集群节点。基于上述处理,能够降低容器集群伸缩的时延。
Description
技术领域
本申请涉及计算机网络技术领域,特别是涉及一种容器集群伸缩方法、装置、电子设备及可读存储介质。
背景技术
Kubernetes集群作为基于容器技术的分布式架构方案,不仅可以节省开发成本,且由于其提供了强大的自动化机制,使得系统后期的运维难度和成本也会大幅降低。Node(可以称为集群节点)是Kubernetes集群操作的单元,用来承载被分配的Pod(可以称为容器组)的运行,是容器组运行的宿主机。容器组是Kurbernetes进行创建、调度和管理的最小单位,一个容器组可以由多个相关且共享磁盘的容器组成,在容器组中所有容器都被统一安排和调度,因此,Kubernetes集群可以称为容器集群。
相关技术中,可以根据预设集群伸缩策略,扩充容器集群中的容器组,以保证正常的业务处理。例如,当检测到容器集群中某一集群节点中的容器组的负载过高时,容器集群可以生成新的容器组,并将新生成的容器组添加至集群节点中,以提供服务,进而,能够分担容器集群中已有容器组的负载。
然而,在容器集群生成新的容器组后,容器集群中当前的集群节点中可能无法运行更多的容器组,则容器集群需要创建新的集群节点。在新的集群节点创建成功后,才可以将新生成的容器组添加至新创建的集群节点中,在容器集群中创建新的集群节点需要一定的时长,进而,会导致容器集群伸缩的时延较长。
发明内容
本申请实施例的目的在于提供一种容器集群伸缩方法、装置、电子设备及可读存储介质,可以降低容器集群伸缩的时延。具体技术方案如下:
第一方面,为了达到上述目的,本申请实施例公开了一种容器集群伸缩方法,所述方法应用于容器集群,所述容器集群包括多个集群节点,每个所述集群节点中运行有至少一个容器组,每个所述容器组中运行有至少一个容器,所述方法包括:
获取所述容器集群中每个集群节点的运行状态数据;其中,所述运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
基于所述运行状态数据,判断所述容器集群是否满足预设条件;
如果满足所述预设条件,则发送节点创建请求;其中,所述节点创建请求用于创建新的集群节点;
在检测到所述容器集群中存在处于预定状态的容器组时,将所述处于预定状态的容器组添加至新创建的所述集群节点。
可选的,所述运行状态数据包括集群节点的负载,所述集群节点的负载包括集群节点中每个中央处理器CPU单核的平均负载;
所述基于所述运行状态数据,判断所述容器集群是否满足预设条件,包括:
当所述容器集群中存在,在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,确定所述容器集群满足所述预设条件。
可选的,所述预设历史时间段包括距离当前时刻最近的多个历史时间段。
可选的,所述运行状态数据包括集群节点的存储资源的利用率;
所述基于所述运行状态数据,判断所述容器集群是否满足预设条件,包括:
当所述容器集群中存在,存储资源的利用率大于预设利用率阈值的集群节点时,确定所述容器集群满足所述预设条件。
可选的,所述运行状态数据包括集群节点的心跳监测数据;
所述基于所述运行状态数据,判断所述容器集群是否满足预设条件,包括:
针对所述容器集群中的每一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,确定所述容器集群满足所述预设条件,该集群节点作为故障集群节点。
可选的,新创建的所述集群节点的数目与所述故障集群节点的数目相同;
所述方法还包括:
将所述故障集群节点中的容器迁移至新创建的所述集群节点中的容器组中。
第二方面,为了达到上述目的,本申请实施例还公开了一种容器集群伸缩装置,所述装置应用于容器集群,所述容器集群包括多个集群节点,每个所述集群节点中运行有至少一个容器组,每个所述容器组中运行有至少一个容器,所述装置包括:
获取模块,用于获取所述容器集群中每个集群节点的运行状态数据;其中,所述运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
判断模块,用于基于所述运行状态数据,判断所述容器集群是否满足预设条件;
发送模块,用于如果满足所述预设条件,则发送节点创建请求;其中,所述节点创建请求用于创建新的集群节点;
添加模块,用于在检测到所述容器集群中存在处于预定状态的容器组时,将所述处于预定状态的容器组添加至新创建的所述集群节点。
可选的,所述运行状态数据包括集群节点的负载,所述集群节点的负载包括集群节点中每个中央处理器CPU单核的平均负载;
所述判断模块,具体用于当所述容器集群中存在,在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,确定所述容器集群满足所述预设条件。
可选的,所述预设历史时间段包括距离当前时刻最近的多个历史时间段。
可选的,所述运行状态数据包括集群节点的存储资源的利用率;
所述判断模块,具体用于当所述容器集群中存在,存储资源的利用率大于预设利用率阈值的集群节点时,确定所述容器集群满足所述预设条件。
可选的,所述运行状态数据包括集群节点的心跳监测数据;
所述判断模块,具体用于针对所述容器集群中的每一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,确定所述容器集群满足所述预设条件,该集群节点作为故障集群节点。
可选的,新创建的所述集群节点的数目与所述故障集群节点的数目相同;
所述装置还包括:
迁移模块,用于将所述故障集群节点中的容器迁移至新创建的所述集群节点中的容器组中。
另一方面,为了达到上述目的,本申请实施例还公开了一种电子设备,所述电子设备包括存储器和处理器;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如上述第一方面所述的容器集群伸缩方法步骤。
另一方面,为了达到上述目的,本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现如上述第一方面所述的容器集群伸缩方法步骤。
另一方面,为了达到上述目的,本申请实施例还公开了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的容器集群伸缩方法步骤。
本申请实施例提供了一种容器集群伸缩方法,可以应用于集群,该集群包括多个集群节点,每个集群节点中运行有至少一个容器组,每个容器组中运行有至少一个容器,可以获取容器集群中每个集群节点的运行状态数据,基于运行状态数据,判断容器集群是否满足预设条件,如果满足预设条件,则发送节点创建请求,在检测到容器集群中存在处于预定状态的容器组时,将处于预定状态的容器组添加至新创建的集群节点。
基于上述处理,可以根据集群节点的运行状态数据创建新的集群节点,进而,当检测到处于预定状态的容器组时,可以将预定状态的容器组直接添加至已创建的新的集群节点中,与现有技术中检测到存在预定状态的容器组时开始创建新的集群节点相比,不需要等待在集群中添加集群节点的过程,进而,能够降低容器集群伸缩的时延。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种容器集群伸缩的示意图;
图2为本申请实施例提供的一种容器集群伸缩方法的流程图;
图3为本申请实施例提供的一种容器集群伸缩方法示例的流程图;
图4为本申请实施例提供的一种容器集群伸缩方法示例的流程图;
图5为本申请实施例提供的一种容器集群伸缩方法示例的流程图;
图6为本申请实施例提供的一种容器集群伸缩装置的结构图;
图7为本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术中,参见图1,容器集群中当前包括集群节点node1和集群节点node2,集群节点node1和集群节点node2中均部署有多个容器组pod。
当检测到集群节点1或集群节点2中部署的任一容器组的负载过高时,容器集群根据预设的弹性伸缩策略弹出新的pod,此时,新生成的pod处于Pending(等待)状态,容器集群在检测到有处于Pending状态的pod时,获取所有集群节点(node1和node2)的资源剩余情况,并根据资源剩余情况,判断是否存在可以容纳该新增的pod的集群节点node。由于此时容器集群中的集群节点node1和node2的资源剩余情况均不足,无法部署新的pod,容器集群则弹出一个新的集群节点node3,并将新增的pod部署到node3上。新增的pod可以分担业务流量,降低集群节点1和集群节点2中pod的负载。
从上可知,现有技术中,容器集群中集群节点node的伸缩策略是在检测到容器集群中存在Pending状态的pod且现有的集群节点的资源剩余情况不足时,才会弹出新的node。对于新弹出的pod来说,需要等待容器集群中弹出新的集群节点node后,才可以将新弹出的pod部署在新的集群节点node中,由于从pod的弹出后等待在容器集群中弹出新的node的过程耗时较长,会导致Pending状态的pod不能及时部署,不能在及时分担集群节点中现有pod的负载,影响用户体验,另一方面导致容器集群伸缩的时延较长。
为了解决上述问题,本申请实施例提供了一种容器集群伸缩方法,可以应用于图1中的容器集群。
在该容器集群运行过程中,可以对各集群节点的运行状态进行监测,获取各集群节点的运行状态数据,并基于运行状态数据,判断该容器集群是否满足预设条件。如果满足预设条件,则发送节点创建请求,相应的,可以在该容器集群中创建新的集群节点(即集群节点3)。
在检测到该容器集群中存在处于预定状态的容器组时,可以将处于预定状态的容器组添加至新创建的集群节点3。处于预定状态的容器组可以为新生成的处于Pending状态的容器组。
基于上述处理,可以根据集群节点的运行状态数据创建新的集群节点,进而,当检测到处于预定状态的容器组时,可以将预定状态的容器组直接添加至已创建的新的集群节点中,与现有技术中检测到存在预定状态的容器组时开始创建新的集群节点相比,不需要等待在集群中添加集群节点的过程,进而,能够降低容器集群伸缩的时延,及时分担集群节点中现有容器组的负载,提高用户体验。
参见图2,图2为本申请实施例提供的一种集群伸缩方法的流程图,该方法可以应用于集群,该容器集群包括多个集群节点,每个集群节点中运行有至少一个容器组,每个容器组中运行有至少一个容器,可以理解的是,该方法的执行主体可以为该容器集群本身,或者,也可以为该容器集群中的主控集群节点(Master),该方法可以包括以下步骤:
S201:获取容器集群中每个集群节点的运行状态数据。
其中,运行状态数据可以包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据。
集群节点的负载可以为集群节点的系统负载(System Load),系统负载为系统CPU繁忙程度的度量,表示等待被CPU调度的进程的数目。或者,集群节点的负载也可以为集群节点的平均负载(Load Average),平均负载为一段时间内系统负载的平均值。基于集群节点的心跳监测数据能够确认集群节点是否处于正常工作状态。
在容器集群运行过程中,可以监测该容器集群的运行状态,即,获取该容器集群中每一集群节点的运行状态数据,以根据运行状态数据进行处理。
一种实现方式中,可以在容器集群中的每一集群节点上部署一个Agent(代理),进而,可以根据各Agent获取各集群节点的运行状态数据。
S202:基于运行状态数据,判断容器集群是否满足预设条件。
其中,预设条件用于表示容器集群中存在无法进行业务处理的集群节点,预设条件可以由技术人员根据经验进行设置。可以理解的是,如果容器集群中存在无法进行业务处理的集群节点,即表明当前集群节点的数量不足,后续很大可能会导致容器集群中容器组的负载过高,进而,可能会触发用于生成新的容器组的伸缩策略(即上述弹性伸缩策略)。
因此,为了提前创建集群节点,可以基于集群节点的运行状态数据,判断容器集群是否满足预设条件,以根据判定结果进行相应处理。
S203:如果满足预设条件,则发送节点创建请求。
其中,节点创建请求用于创建新的集群节点。
在申请实施例中,当根据集群节点的运行状态数据,判定容器集群满足预设条件时,表明容器集群中可能存在无法进行业务处理的集群节点,因此,为了满足正常的业务处理,当前需要在容器集群中创建新的集群节点,可以发送节点创建请求,相应的,容器集群可以创建新的集群节点,以弥补容器集群中的集群节点不足。其中,创建的集群节点可以是一个,也可以是多个。
可以理解的是,当容器集群满足预设条件时,可能会满足触发弹性伸缩策略的条件,也有可能并未满足触发弹性伸缩策略的条件,因此,基于本申请实施例的方法,创建新的集群节点的时刻,并不会晚于生成新的容器组的时刻,相对于在生成容器组后创建新的集群节点,能够提前创建集群节点。
S204:在检测到容器集群中存在处于预定状态的容器组时,将处于预定状态的容器组添加至新创建的集群节点。
其中,处于预定状态的容器组可以为新生成的处于Pending状态的容器组。
该容器集群中可以配置有弹性伸缩策略,以使该容器集群可以实现容器组的自动弹性伸缩。一种实现方式中,该容器集群可以根据容器集群中容器组的负载,执行弹性伸缩策略,以扩充容器组。
例如,在Kubernetes集群中,可以通过Heapster(收集者)获取容器组的负载,并通过HPA Controller(Horizontal Pod Autoscaler Controller,水平容器组自动检尺仪控制器)周期性地获取容器组的负载来自动扩容。该周期可以通过horizontal-pod-autoscaler-sync-period(水平的-容器组-自动检尺仪-同步-时期)确定,例如,该周期可以为30秒。如果容器组的负载超过预设值,可以增加容器组。容器组的负载可以为容器组的CPU(Central Processing Unit,中央处理器)占有率。
可见,基于申请实施例的方法,可以根据集群节点的运行状态数据创建新的集群节点,进而,当检测到处于预定状态的容器组时,可以将预定状态的容器组直接添加至已创建的新的集群节点中,与现有技术中检测到存在预定状态的容器组时开始创建新的集群节点相比,不需要等待在集群中添加集群节点的过程,进而,能够降低容器集群伸缩的时延。
可选的,根据集群节点不同的运行状态数据,判断容器集群是否满足预设条件,可以包括以下三种情况:
情况一,运行状态数据包括集群节点的负载,集群节点的负载包括集群节点中每个CPU单核的平均负载,S202可以包括以下步骤:当容器集群中存在,在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,确定容器集群满足预设条件。
其中,预设负载阈值和预设历史时间段可以由技术人员根据经验进行设置,
预设历史时间段可以为一个历史时间段,也可以为多个历史时间段。
可以理解的是,预设负载阈值也可以根据集群节点中运行的容器组的数目和上述预设值确定,使得根据集群节点的平均负载确定满足预设条件的时刻,并不会晚于根据容器组的负载触发弹性伸缩策略的时刻,进而,使得在容器集群根据弹性伸缩策略生成新的容器组之前,可以提前创建新的集群节点。
例如,预设负载阈值可以为0.9,即,当集群节点的平均负载大于0.9时,则确定满足预设条件,进而,创建新的集群节点,或者,预设负载阈值也可以为0.95,或者,预设负载阈值也可以为0.98,但并不限于此。
可以理解的是,预设负载阈值越小,则容器集群越容易满足预设条件,但是,也可能会导致容器集群频繁创建新的集群节点,造成资源浪费。
在申请实施例中,容器集群可以对当前已包含有的各集群节点的系统负载进行监测,并确定每一集群节点中每个CPU单核的平均负载。
当存在在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,表明该集群节点的系统负载过高,后续,该集群节点中运行的容器组的负载可能会触发弹性伸缩策略,生成新的容器组。
因此,当确定存在在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,容器集群可以直接创建新的集群节点,进而,使得容器集群在生成新的容器组后,可以直接将新生成的容器组添加至新创建的集群节点中,降低容器集群伸缩的时延。
可选的,为了避免因为检测数据抖动而引起频繁的创建集群节点,预设历史时间段可以包括距离当前时刻最近的多个历史时间段。
其中,多个历史时间段各自持续的时长可以由技术人员根据经验进行设置。
在本申请实施例中,针对任一集群节点,当监测到该集群节点在距离当前时刻最近的多个历史时间段内的平均负载,均大于预设负载阈值时,可以确定容器集群满足预设条件。
例如,针对任一集群节点,当在之前的15分钟内该集群节点的平均负载大于预设负载阈值、且在之前的5分钟内该集群节点的平均负载大于预设负载阈值、且在之前的1分钟内该集群节点的平均负载大于预设负载阈值时,确定容器集群满足预设条件。
情况二,运行状态数据包括集群节点的存储资源的利用率,S202可以包括以下步骤:当容器集群中存在,存储资源的利用率大于预设利用率阈值的集群节点时,确定容器集群满足预设条件。
其中,预设利用率阈值可以由技术人员根据经验进行设置。
可以理解的是,预设利用率阈值也可以根据集群节点存储资源的总空间大小和容器镜像的大小确定,使得根据集群节点的存储资源的利用率确定满足预设条件的时刻,并不会晚于根据容器组的负载触发弹性伸缩策略的时刻,进而,使得在容器集群根据弹性伸缩策略生成新的容器组之前,可以提前创建新的集群节点。
例如,预设利用率阈值可以为85%,即,当集群节点的存储资源的利用率大于85%时,则确定满足预设条件,进而,创建新的集群节点,或者,预设利用率阈值也可以为90%,但并不限于此。
可以理解的是,预设利用率阈值越小,则容器集群越容易满足预设条件,但是,也可能会导致容器集群频繁创建新的集群节点,造成资源浪费。
在申请实施例中,容器集群可以对当前已包含有的各集群节点的存储资源的利用率进行监测,当容器集群监测到存在存储资源的利用率大于预设利用率阈值的集群节点时,表明后续该集群节点可能无法进行正常的网络业务处理,进而,可能会触发弹性伸缩策略,生成新的容器组,以将该集群节点中的容器迁移至新生成的容器组。
一种实现方式中,容器集群可以实时监测各集群节点的磁盘的利用率,当容器集群监测到某一集群节点的磁盘利用率大于90%时,表明后续如果容器集群再次调度的容器镜像大于该集群节点的磁盘的剩余存储空间,则可能会导致容器启动失败,还会导致该集群节点的磁盘被写满,而无法进行正常的网络业务处理,后续可能会触发弹性伸缩策略,生成新的容器组。
情况三,运行状态数据包括集群节点的心跳监测数据,S202可以包括以下步骤:针对容器集群中的每一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,确定容器集群满足预设条件,该集群节点作为故障集群节点。
其中,预设时长可以由技术人员根据经验进行设置。
在申请实施例中,集群节点可以周期性地发送心跳监测数据,针对任一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,表明该集群节点可能未处于正常工作状态,该集群节点可以称为异常集群节点。例如,异常集群节点的状态可以为NotReady(未准备好),即,该集群节点可能被删除,或者,该集群节点处于宕机状态。
可以理解的是,预设时长可以根据集群节点发送心跳监测数据的周期(可以称为发送周期)确定,例如,预设时长可以为2倍的发送周期,或者,预设时长也可以为3倍的发送周期,但并不限于此。
或者,也可以周期性地向集群节点多次发送检测消息,如果连续预设数目次均未接收到该集群节点返回的响应消息,则可以确定该集群节点为异常集群节点,即满足预设条件。
例如,预设数目可以为3,即,当连续3次向某一集群节点发送检测消息,且均未接收到该集群节点返回的响应消息时,可以确定满足预设条件。或者,预设数目也可以5,但并不限于此。发送检测消息的周期可以为10秒,或者,也可以为8秒,但并不限于此。
可以理解的是,预设数目越小,则容器集群越容易满足预设条件,但是,也可能会导致容器集群频繁创建新的集群节点,造成资源浪费。同理,发送检测消息的周期越短,则容器集群越容易满足预设条件,但是,也可能会导致容器集群频繁创建新的集群节点,造成资源浪费。
相关技术中,当监测到异常集群节点时,可以将异常集群节点中的容器迁移到其他集群节点中,然而,从监测到异常集群节点到迁移容器需要一定的时长,且对于产生迁移的容器,也可能会调度失败,当调度失败时,才会触发弹性伸缩策略,以生成新的容器组。
相应的,基于本申请实施例的方法,当监测到异常集群节点时,容器集群可以直接创建新的集群节点,进而,当触发弹性伸缩策略时,可以将新生成的容器组直接添加至新创建的集群节点中,能够降低容器集群伸缩的时延。
可以理解的是,对于情况一、情况二和情况三,当容器集群监测到符合其中的任一情况时,容器集群即可以确定满足预设条件。
可选的,为了保证正常的业务处理,如果监测到异常集群节点,则新创建的集群节点的数目与故障集群节点的数目相同,相应的,该方法还可以包括以下步骤:将故障集群节点中的容器迁移至新创建的集群节点中的容器组中。
在申请实施例中,在监测到异常集群节点,并将处于预定状态的容器组添加到新创建的集群节点中后,容器集群还可以将异常集群节点中的容器组中的容器迁移至新创建的集群节点中的容器组中。
参见图3,图3为本申请实施例提供的一种容器集群伸缩方法示例的流程图,该方法可以应用于集群,该容器集群包括多个集群节点,每个集群节点中运行有至少一个容器组,每个容器组中运行有至少一个容器,该方法可以包括以下步骤:
S301:监测容器集群中各集群节点的平均负载。
S302:当各集群节点中存在平均负载大于预设负载阈值的集群节点时,在容器集群中创建新的集群节点。
S303:当根据弹性伸缩策略生成目标容器组时,将目标容器组添加至新创建的集群节点中。
参见图4,图4为本申请实施例提供的一种容器集群伸缩方法示例的流程图,该方法可以应用于集群,该容器集群包括多个集群节点,每个集群节点中运行有至少一个容器组,每个容器组中运行有至少一个容器,该方法可以包括以下步骤:
S401:监测容器集群中各集群节点的存储资源的利用率。
S402:当各集群节点中存在存储资源的利用率,大于预设利用率阈值的集群节点时,在容器集群中创建新的集群节点。
S403:当根据弹性伸缩策略生成目标容器组时,将目标容器组添加至新创建的集群节点中。
参见图5,图5为本申请实施例提供的一种容器集群伸缩方法示例的流程图,该方法可以应用于集群,该容器集群包括多个集群节点,每个集群节点中运行有至少一个容器组,每个容器组中运行有至少一个容器,该方法可以包括以下步骤:
S501:针对容器集群中的每一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,在容器集群中创建新的集群节点。
S502:当根据弹性伸缩策略生成目标容器组时,将目标容器组添加至新创建的集群节点中。
S503:将该集群节点中的容器迁移至新创建的集群节点中的容器组中。
与图2的方法实施例相对应,参见图6,图6为本申请实施例提供的一种容器集群伸缩装置的结构图,该装置应用于容器集群,该容器集群包括多个集群节点,每个集群节点中运行有至少一个容器组,每个容器组中运行有至少一个容器,该装置可以包括:
获取模块601,用于获取容器集群中每个集群节点的运行状态数据;其中,运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
判断模块602,用于基于运行状态数据,判断容器集群是否满足预设条件;
发送模块603,用于如果满足预设条件,则发送节点创建请求;其中,节点创建请求用于创建新的集群节点;
添加模块604,用于在检测到容器集群中存在处于预定状态的容器组时,将处于预定状态的容器组添加至新创建的集群节点。
可选的,运行状态数据包括集群节点的负载,集群节点的负载包括集群节点中每个中央处理器CPU单核的平均负载;
判断模块602,具体用于当容器集群中存在,在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,确定容器集群满足预设条件。
可选的,预设历史时间段包括距离当前时刻最近的多个历史时间段。
可选的,运行状态数据包括集群节点的存储资源的利用率;
判断模块602,具体用于当容器集群中存在,存储资源的利用率大于预设利用率阈值的集群节点时,确定容器集群满足预设条件。
可选的,运行状态数据包括集群节点的心跳监测数据;
判断模块602,具体用于针对容器集群中的每一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,确定容器集群满足预设条件,该集群节点作为故障集群节点。
可选的,新创建的集群节点的数目与故障集群节点的数目相同;
装置还包括:
迁移模块,用于将故障集群节点中的容器迁移至新创建的集群节点中的容器组中。
本申请实施例还提供了一种电子设备,如图7所示,包括存储器701和处理器702;
存储器701,用于存放计算机程序;
处理器702,用于执行存储器701上所存放的程序时,实现本申请实施例提供的容器集群伸缩方法。
具体的,上述容器集群伸缩方法,包括:
获取容器集群中每个集群节点的运行状态数据;其中,运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
基于运行状态数据,判断容器集群是否满足预设条件;
如果满足预设条件,则发送节点创建请求;其中,节点创建请求用于创建新的集群节点;
在检测到容器集群中存在处于预定状态的容器组时,将处于预定状态的容器组添加至新创建的集群节点。
需要说明的是,上述容器集群伸缩方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。
上述电子设备可以具备有实现上述电子设备与其他设备之间通信的通信接口。
上述的处理器,通信接口,存储器通过通信总线完成相互间的通信,此处提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(Non-Volatile Memory,简称NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行本申请实施例提供的容器集群伸缩方法。
具体的,上述容器集群伸缩方法,包括:
获取容器集群中每个集群节点的运行状态数据;其中,运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
基于运行状态数据,判断容器集群是否满足预设条件;
如果满足预设条件,则发送节点创建请求;其中,节点创建请求用于创建新的集群节点;
在检测到容器集群中存在处于预定状态的容器组时,将处于预定状态的容器组添加至新创建的集群节点。
需要说明的是,上述容器集群伸缩方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本申请实施例提供的集群伸缩方法。
具体的,上述容器集群伸缩方法,包括:
获取容器集群中每个集群节点的运行状态数据;其中,运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
基于运行状态数据,判断容器集群是否满足预设条件;
如果满足预设条件,则发送节点创建请求;其中,节点创建请求用于创建新的集群节点;
在检测到容器集群中存在处于预定状态的容器组时,将处于预定状态的容器组添加至新创建的集群节点。
需要说明的是,上述容器集群伸缩方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (12)
1.一种容器集群伸缩方法,其特征在于,所述方法应用于容器集群,所述容器集群包括多个集群节点,每个所述集群节点中运行有至少一个容器组,每个所述容器组中运行有至少一个容器,所述方法包括:
获取所述容器集群中每个集群节点的运行状态数据;其中,所述运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
基于所述运行状态数据,判断所述容器集群是否满足预设条件;
如果满足所述预设条件,则发送节点创建请求;其中,所述节点创建请求用于创建新的集群节点;
在检测到所述容器集群中存在处于预定状态的容器组时,将所述处于预定状态的容器组添加至新创建的所述集群节点,其中,所述处于预定状态的容器组为新生成的处于等待状态的容器组,创建所述新的集群节点的时刻,等于或早于生成新的容器组的时刻;
所述运行状态数据包括集群节点的存储资源的利用率;所述基于所述运行状态数据,判断所述容器集群是否满足预设条件,包括:
当所述容器集群中存在,存储资源的利用率大于预设利用率阈值的集群节点时,确定所述容器集群满足所述预设条件;
所述预设利用率阈值是根据所述集群节点存储资源的总空间大小和容器镜像的大小确定的,且根据所述集群节点的存储资源的利用率确定满足所述预设条件的时刻,不晚于根据所述容器组的负载触发弹性伸缩策略的时刻,以使得在所述容器集群根据弹性伸缩策略生成新的容器组之前,能够提前创建新的集群节点。
2.根据权利要求1所述的方法,其特征在于,所述运行状态数据包括集群节点的负载,所述集群节点的负载包括集群节点中每个中央处理器CPU单核的平均负载;
所述基于所述运行状态数据,判断所述容器集群是否满足预设条件,包括:
当所述容器集群中存在,在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,确定所述容器集群满足所述预设条件。
3.根据权利要求2所述的方法,其特征在于,所述预设历史时间段包括距离当前时刻最近的多个历史时间段。
4.根据权利要求1所述的方法,其特征在于,所述运行状态数据包括集群节点的心跳监测数据;
所述基于所述运行状态数据,判断所述容器集群是否满足预设条件,包括:
针对所述容器集群中的每一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,确定所述容器集群满足所述预设条件,该集群节点作为故障集群节点。
5.根据权利要求4所述的方法,其特征在于,新创建的所述集群节点的数目与所述故障集群节点的数目相同;
所述方法还包括:
将所述故障集群节点中的容器迁移至新创建的所述集群节点中的容器组中。
6.一种容器集群伸缩装置,其特征在于,所述装置应用于容器集群,所述容器集群包括多个集群节点,每个所述集群节点中运行有至少一个容器组,每个所述容器组中运行有至少一个容器,所述装置包括:
获取模块,用于获取所述容器集群中每个集群节点的运行状态数据;其中,所述运行状态数据包括以下中的任意一个或多个:集群节点的负载、集群节点的存储资源的利用率、集群节点的心跳监测数据;
判断模块,用于基于所述运行状态数据,判断所述容器集群是否满足预设条件;
发送模块,用于如果满足所述预设条件,则发送节点创建请求;其中,所述节点创建请求用于创建新的集群节点;
添加模块,用于在检测到所述容器集群中存在处于预定状态的容器组时,将所述处于预定状态的容器组添加至新创建的所述集群节点,其中,所述处于预定状态的容器组为新生成的处于等待状态的容器组,创建所述新的集群节点的时刻,等于或早于生成新的容器组的时刻;
所述运行状态数据包括集群节点的存储资源的利用率;
所述判断模块,具体用于当所述容器集群中存在,存储资源的利用率大于预设利用率阈值的集群节点时,确定所述容器集群满足所述预设条件;所述预设利用率阈值是根据所述集群节点存储资源的总空间大小和容器镜像的大小确定的,且根据所述集群节点的存储资源的利用率确定满足所述预设条件的时刻,不晚于根据所述容器组的负载触发弹性伸缩策略的时刻,以使得在所述容器集群根据弹性伸缩策略生成新的容器组之前,能够提前创建新的集群节点。
7.根据权利要求6所述的装置,其特征在于,所述运行状态数据包括集群节点的负载,所述集群节点的负载包括集群节点中每个中央处理器CPU单核的平均负载;
所述判断模块,具体用于当所述容器集群中存在,在预设历史时间段内的平均负载大于预设负载阈值的集群节点时,确定所述容器集群满足所述预设条件。
8.根据权利要求7所述的装置,其特征在于,所述预设历史时间段包括距离当前时刻最近的多个历史时间段。
9.根据权利要求6所述的装置,其特征在于,所述运行状态数据包括集群节点的心跳监测数据;
所述判断模块,具体用于针对所述容器集群中的每一集群节点,如果距离上一次接收到该集群节点发送的心跳监测数据达到预设时长时,仍未接收到该集群节点再次发送的心跳监测数据,确定所述容器集群满足所述预设条件,该集群节点作为故障集群节点。
10.根据权利要求9所述的装置,其特征在于,新创建的所述集群节点的数目与所述故障集群节点的数目相同;
所述装置还包括:
迁移模块,用于将所述故障集群节点中的容器迁移至新创建的所述集群节点中的容器组中。
11.一种电子设备,其特征在于,包括存储器和处理器;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910673036.9A CN112291288B (zh) | 2019-07-24 | 2019-07-24 | 一种容器集群伸缩方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910673036.9A CN112291288B (zh) | 2019-07-24 | 2019-07-24 | 一种容器集群伸缩方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112291288A CN112291288A (zh) | 2021-01-29 |
CN112291288B true CN112291288B (zh) | 2022-10-04 |
Family
ID=74418751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910673036.9A Active CN112291288B (zh) | 2019-07-24 | 2019-07-24 | 一种容器集群伸缩方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112291288B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107147540A (zh) * | 2017-07-19 | 2017-09-08 | 郑州云海信息技术有限公司 | 高可用性系统中的故障处理方法和故障处理集群 |
CN108769100A (zh) * | 2018-04-03 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种基于kubernetes容器数量弹性伸缩的实现方法及其装置 |
CN108965485A (zh) * | 2018-09-30 | 2018-12-07 | 北京金山云网络技术有限公司 | 容器资源的管理方法、装置和云平台 |
CN109117265A (zh) * | 2018-07-12 | 2019-01-01 | 北京百度网讯科技有限公司 | 在集群中调度作业的方法、装置、设备及存储介质 |
CN109150987A (zh) * | 2018-07-27 | 2019-01-04 | 北京友普信息技术有限公司 | 基于主机层和容器层的两层式容器集群弹性扩容方法 |
US10191778B1 (en) * | 2015-11-16 | 2019-01-29 | Turbonomic, Inc. | Systems, apparatus and methods for management of software containers |
CN109617995A (zh) * | 2018-12-29 | 2019-04-12 | 北京金山云网络技术有限公司 | 对租户集群vpc内部容器的管理系统、方法及电子设备 |
CN109783218A (zh) * | 2019-01-24 | 2019-05-21 | 中国—东盟信息港股份有限公司 | 一种基于Kubernetes容器集群的与时间相关联的容器调度方法 |
CN109871384A (zh) * | 2019-02-22 | 2019-06-11 | 携程旅游信息技术(上海)有限公司 | 基于PaaS平台进行容器迁移的方法、系统、设备和存储介质 |
CN109960634A (zh) * | 2019-03-29 | 2019-07-02 | 新华三技术有限公司 | 一种应用程序监控方法、装置及系统 |
-
2019
- 2019-07-24 CN CN201910673036.9A patent/CN112291288B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191778B1 (en) * | 2015-11-16 | 2019-01-29 | Turbonomic, Inc. | Systems, apparatus and methods for management of software containers |
CN107147540A (zh) * | 2017-07-19 | 2017-09-08 | 郑州云海信息技术有限公司 | 高可用性系统中的故障处理方法和故障处理集群 |
CN108769100A (zh) * | 2018-04-03 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种基于kubernetes容器数量弹性伸缩的实现方法及其装置 |
CN109117265A (zh) * | 2018-07-12 | 2019-01-01 | 北京百度网讯科技有限公司 | 在集群中调度作业的方法、装置、设备及存储介质 |
CN109150987A (zh) * | 2018-07-27 | 2019-01-04 | 北京友普信息技术有限公司 | 基于主机层和容器层的两层式容器集群弹性扩容方法 |
CN108965485A (zh) * | 2018-09-30 | 2018-12-07 | 北京金山云网络技术有限公司 | 容器资源的管理方法、装置和云平台 |
CN109617995A (zh) * | 2018-12-29 | 2019-04-12 | 北京金山云网络技术有限公司 | 对租户集群vpc内部容器的管理系统、方法及电子设备 |
CN109783218A (zh) * | 2019-01-24 | 2019-05-21 | 中国—东盟信息港股份有限公司 | 一种基于Kubernetes容器集群的与时间相关联的容器调度方法 |
CN109871384A (zh) * | 2019-02-22 | 2019-06-11 | 携程旅游信息技术(上海)有限公司 | 基于PaaS平台进行容器迁移的方法、系统、设备和存储介质 |
CN109960634A (zh) * | 2019-03-29 | 2019-07-02 | 新华三技术有限公司 | 一种应用程序监控方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
"Kubernetes Pod生命周期";Anoyi;《https://www.jianshu.com/p/91625e7a8259》;20180721;第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112291288A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6387747B2 (ja) | 情報処理装置、障害回避方法およびコンピュータプログラム | |
CN111901422B (zh) | 一种集群中节点的管理方法、系统及装置 | |
CN110830283B (zh) | 故障检测方法、装置、设备和系统 | |
CN108334396B (zh) | 一种数据处理方法和装置、资源组的创建方法和装置 | |
US9210059B2 (en) | Cluster system | |
CN107453932B (zh) | 一种分布式存储系统管理方法及其装置 | |
CN109582459A (zh) | 应用的托管进程进行迁移的方法及装置 | |
WO2017092823A1 (en) | Technique for optimizing the scaling of an application having a set of virtual machines | |
US9092396B2 (en) | Standby system device, a control method, and a program thereof | |
CN113672345A (zh) | 一种基于io预测的云虚拟化引擎分布式资源调度方法 | |
CN114531373A (zh) | 节点状态检测方法、节点状态检测装置、设备及介质 | |
KR101152315B1 (ko) | 네트워크 감시 카메라용 서버 가상화 방법 | |
CN112291288B (zh) | 一种容器集群伸缩方法、装置、电子设备及可读存储介质 | |
CN111949384B (zh) | 任务调度方法、装置、设备及计算机可读存储介质 | |
CN112667467A (zh) | 集群的自适应限流方法、装置、计算机设备及存储介质 | |
US11544091B2 (en) | Determining and implementing recovery actions for containers to recover the containers from failures | |
CN110837428B (zh) | 存储设备管理方法及装置 | |
CN115712521A (zh) | 一种集群节点故障处理方法、系统及介质 | |
CN113254245A (zh) | 一种存储集群的故障检测方法和系统 | |
CN114168071B (zh) | 一种分布式集群扩容方法、分布式集群扩容装置及介质 | |
CN115794306A (zh) | 基于抢占实例的资源分配方法及装置、电子设备及介质 | |
US20220276905A1 (en) | Managing computational bursting on server nodes | |
CN114116230A (zh) | 一种资源管理方法、装置、设备、介质及产品 | |
CN110209548B (zh) | 服务控制方法、系统、电子设备及计算机可读存储介质 | |
CN111934909A (zh) | 主备机ip资源切换方法、装置、计算机设备和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |