掌桥专利:专业的专利平台
掌桥专利
首页

集群的系统扩容方法、设备及介质

文献发布时间:2023-06-19 11:42:32


集群的系统扩容方法、设备及介质

技术领域

本申请涉及计算机技术领域,特别涉及一种集群的系统扩容方法、设备及介质。

背景技术

kubernetes简称K8s,是一个开源的、用于管理云平台中多个主机上的容器化的应用,Kubernetes具备完善的集群管理能力,包括应用的快速部署,快速扩容缩容,跨主机调度,安全防护和准入机制,多租户资源隔离,透明的服务注册和服务发现机制,负载均衡、故障发现以及修复能力,多维度的资源配额管理能力。

现有的,基于kubernetes平台进行扩缩容时,主要是根据kubernetes自带的相关功能实现。

但由于现有的扩容方法比较简单,因此,存在扩容速率较低的问题。

发明内容

本申请的目的在于,针对上述现有技术中的不足,提供一种集群的系统扩容方法、设备及介质,可以有效提高扩容速率。

为实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本发明提供一种集群的系统扩容方法,所述方法包括:

启动监听容器水平伸缩资源并构建镜像预拉取任务;

根据所述镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点;

向各所述目标节点发送镜像拉取任务,以使收到所述镜像拉取任务的目标节点执行任务完成扩容。

在可选的实施方式中,所述根据所述镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点,包括:

根据所述镜像预拉取任务,匹配获取对应的预测方法,所述预测方法包括:容器水平伸缩资源阈值预测,或者,时序预测;根据所述预测方法判断是否触发镜像预拉取,若是,则根据所述调度节点预测服务获取满足预设容器调度条件的至少1个目标节点。

在可选的实施方式中,所述预测方法为所述容器水平伸缩资源阈值预测;所述根据所述预测方法判断是否触发镜像预拉取,包括:判断当前容器水平伸缩资源是否满足预设阈值。

在可选的实施方式中,所述预测方法为所述时序预测;所述根据所述预测方法判断是否触发镜像预拉取,包括:根据监听的所述容器水平伸缩资源、以及时序队列中的容器水平伸缩资源参数,计算获取预测值;判断预测值是否满足预设预拉取条件。

在可选的实施方式中,所述启动监听容器水平伸缩资源并构建镜像预拉取任务之前,还包括:根据服务配置文件,配置所述容器水平伸缩资源的监听范围、所述预测方法。

在可选的实施方式中,所述根据所述镜像预拉取任务,匹配获取对应的预测方法,包括:匹配确定所述镜像预拉取任务是否在静默周期;若否,则根据所述镜像预拉取任务,匹配获取对应的预测方法。

在可选的实施方式中,所述根据所述调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点,包括:

根据所述调度节点预测服务,获取系统中各节点的剩余资源量;

根据所述剩余资源量选择满足预设容器调度条件的至少1个目标节点。

在可选的实施方式中,所述根据所述调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点,包括:

根据所述调度节点预测服务,获取系统中各节点的资源分数,其中,所述资源分数根据预设算法、各资源参数计算获取;

根据所述资源分数选择满足预设容器调度条件的至少1个目标节点。

第二方面,本发明提供一种集群的系统扩容装置,所述系统扩容装置包括:

启动模块,用于启动监听容器水平伸缩资源并构建镜像预拉取任务;

获取模块,用于根据所述镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点;

发送模块,用于向各所述目标节点发送镜像拉取任务,以使收到所述镜像拉取任务的目标节点执行任务完成扩容。

在可选的实施方式中,所述获取模块,具体用于根据所述镜像预拉取任务,匹配获取对应的预测方法,所述预测方法包括:容器水平伸缩资源阈值预测,或者,时序预测;根据所述预测方法判断是否触发镜像预拉取,若是,则根据所述调度节点预测服务获取满足预设容器调度条件的至少1个目标节点。

在可选的实施方式中,所述预测方法为所述容器水平伸缩资源阈值预测;所述获取模块,具体用于判断当前容器水平伸缩资源是否满足预设阈值。

在可选的实施方式中,所述预测方法为所述时序预测;所述获取模块,具体用于根据监听的所述容器水平伸缩资源、以及时序队列中的容器水平伸缩资源参数,计算获取预测值;

判断预测值是否满足预设预拉取条件。

在可选的实施方式中,所述系统扩容装置,还包括:配置模块,用于根据服务配置文件,配置所述容器水平伸缩资源的监听范围、所述预测方法。

在可选的实施方式中,所述获取模块,具体用于匹配确定所述镜像预拉取任务是否在静默周期;

若否,则根据所述镜像预拉取任务,匹配获取对应的预测方法。

在可选的实施方式中,所述获取模块,具体用于根据所述调度节点预测服务,获取系统中各节点的剩余资源量;

根据所述剩余资源量选择满足预设容器调度条件的至少1个目标节点。

在可选的实施方式中,根据所述调度节点预测服务,获取系统中各节点的资源分数,其中,所述资源分数根据预设算法、各资源参数计算获取;

根据所述资源分数选择满足预设容器调度条件的至少1个目标节点。

第三方面,本发明提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如前述实施方式任一所述集群的系统扩容方法的步骤。

第四方面,本发明提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如前述实施方式任一所述集群的系统扩容方法的步骤。

本申请的有益效果是:

本申请实施例提供的集群的系统扩容方法、设备及介质中,通过启动监听容器水平伸缩资源并构建镜像预拉取任务;根据镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点;向各目标节点发送镜像拉取任务,以使收到镜像拉取任务的目标节点执行任务完成扩容,应用本申请实施例,可以通过目标节点实现镜像拉取任务的预先执行,避免在扩容时执行镜像拉取任务而影响扩容速率,可以有效提高扩容速率。

附图说明

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

图1为本申请实施例提供的一种集群的系统扩容方法的流程示意图;

图2为本申请实施例提供的另一种集群的系统扩容方法的流程示意图;

图3为本申请实施例提供的又一种集群的系统扩容方法的流程示意图;

图4为本申请实施例提供的另一种集群的系统扩容方法的流程示意图;

图5为本申请实施例提供的又一种集群的系统扩容方法的流程示意图;

图6为本申请实施例提供的另一种集群的系统扩容方法的流程示意图;

图7为本申请实施例提供的一种集群的系统扩容装置的功能模块示意图;

图8为本申请实施例提供的另一种集群的系统扩容装置的功能模块示意图;

图9为本申请实施例提供的一种电子设备结构示意图。

具体实施方式

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

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

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在介绍本申请之前,为了便于更好的理解本申请,本申请在此对相关名词进行解释说明。

容器技术:有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,而容器可以理解为介于进程和虚拟机之间的一种计算单元。

Kubernetes:一个开源的、分布式的容器编排管理平台,旨于降低计算、网络和存储资源编排的复杂度,让部署容器化的应用简单并且高效,让运维人员和开发人员专注于以容器为载体的应用程序。Kubernetes具备完善的集群管理能力,包括应用的快速部署,快速扩容缩容,跨主机调度,安全防护和准入机制,多租户资源隔离,透明的服务注册和服务发现机制,负载均衡、故障发现以及修复能力,多维度的资源配额管理能力等。

Kubernetes集群:一个典型的Kubernetes集群由多个工作节点(Node节点)和一个集群控制节点(Master节点),以及一个集群状态存储系统(etcd)组成。其中,Master节点负责整个集群管理工作,为集群提供管理接口,并监听和编排集群中的各个工作节点,各个工作节点负责以多容器运行单元的形式运行容器,因此,各个节点需要实现配置好运行容器的依赖到的所有服务及资源,如容器运行时环境等。Master节点主要由apiserver、controller-manger和scheduler三个组件,以及一个用于集群状态存储的etcd存储组成,而每个Node节点则主要包含kubelet、kube-proxy及容器引擎(Docker是最为常见的实现)等组件,此外,完整的集群服务还依赖一些附加组件,如kubeDNS等。

Pod:一种组合的多容器运行单元,一个Pod里面可以包括一个主容器和数个辅助容器,pod中的容器共享存储和网络(UST、NET、IPC名称空间),在同一台宿主机上运行,它们共同完成一个特定的功能,是创建和管理Kubernetes计算的最小可部署单元,同时也是Kubernetes调度的基本粒度。

Node:Kubernetes集群的工作节点,可以是一台物理主机,也可以是一台虚拟机(Virtual Machine,VM),承载Pod实例的运行。

Always镜像拉取策略:指的是不管镜像是否存在都会进行一次拉取;Never镜像拉取策略:指的是不管镜像是否存在都不会进行拉取;IfNotPresent镜像拉取策略:指的是只有镜像不存在时,才会进行镜像拉取。

现有的集群进行扩容时,以Kubernetes集群为例,主要是根据预设组件以及相应调度器将Pod调度到某一Node上;在该节点上根据Pod拉取镜像策略(Always策略、IfNotPresent策略、Never策略)进行镜像的拉取,可以看出,现有的镜像拉取发生在扩容的时刻,特别是在镜像较大的情况下需要较长时间完成扩容,因此,现有的扩容方式存在速率低的问题。

另外,现有的虽然也有其他扩容方法,但都存在扩容速率低的问题,比如,基于Dragonfly P2P文件分发系统通过p2p技术将流量分担到Kubernetes集群的每个节点上,虽然通过该方法可以大大缩短下载镜像的时间,有效的减轻镜像仓库的压力,但该方法仍然存在扩容速率低的问题。

有鉴于此,本申请实施例提供一种集群的系统扩容方法,该方法可以应用于集群中的任一节点,可以提高系统的扩容速率。

图1为本申请实施例提供的一种集群的系统扩容方法的流程示意图,该方法中的系统可以指Kubernetes集群、Swarm集群、Mesos集群、Marathon集群等,本申请在此不作限定,可选地,该方法可以应用于集群中的任一控制节点。为了更好地理解本申请,本申请实施例在此以该集群为Kubernetes集群为例进行说明,可选地,该方法可以应用于Kubernetes集群中的任一Master节点,可选地,Master节点可以是一台物理主机,也可以是一台虚拟机,在此不作限定。如图1所示,该系统扩容方法可以包括:

S101、启动监听容器水平伸缩资源并构建镜像预拉取任务。

容器水平伸缩(Horizontal Pod Autoscaling,HPA)资源可以包括但不限于CPU、内存、磁盘、网络资源,根据实际的应用场景所监听的HPA资源可以是其中多种资源的组合。其中,对于任一控制节点来说,控制节点工作过程中可以启动监听系统中的HPA资源,并构建镜像预拉取任务,所构建的镜像预拉取任务可以包括镜像预拉取逻辑,可以包括但不限于镜像预拉取的触发逻辑、预测方法的设置参数等,预测方法可以用于判断是否触发镜像预拉取。

可以理解的是,通过监听HPA资源可以知晓系统中HPA资源的使用情况,而通过构建镜像预拉取任务,可以实现镜像拉取任务的预先构建,避免在扩容时构建镜像拉取任务而影响扩容速率,因此,应用本申请实施例可以实现及时扩容,提高扩容速率以应用突发流量场景。

当然,本申请在此并不限定HPA资源的监听时机,可选地,可以基于预设监听组件循环监听,又或者,可以根据用户的监听请求进行监听等,在此不作限定。

S102、根据镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点。

可选地,预设容器调度条件可以包括但不限于:目标节点的剩余资源量需大于预设剩余资源量(比如,GPU、CPU、内存、磁盘等剩余资源量)阈值、目标节点的资源分数需大于预设资源分数阈值等,其中,节点的剩余资源量越多可以指示节点的可用资源越多,节点的资源分数越高可以指示节点的可用资源越多,在一些实施例中,节点的可用资源越多则该节点越有可能成为目标节点。可以理解的是,对于不同的多容器运行单元(Pod)的调度来说,可能对应不同的预设容器调度条件,在此不作限定。

其中,对于镜像预拉取任务来说,通过执行该镜像预拉取任务可以确定是否触发镜像预拉取逻辑,若触发,则可以根据调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点,以便通过获取的该至少1个目标节点可以执行镜像拉取任务以完成扩容。

在一些实施例中,调度节点预测服务也可以集成在组件上,比如,可以集成在schedule-predictor组件上,则可以通过运行该schedule-predictor组件以调用调度节点预测服务,但实际实现方式并不以此为限。

S103、向各目标节点发送镜像拉取任务,以使收到镜像拉取任务的目标节点执行任务完成扩容。

其中,镜像拉取任务用于在镜像仓库中获取目标容器镜像,基于上述实施例的基础上,在确定了至少一个目标节点后,则可以向各目标节点发送镜像拉取任务,可以理解的是,各目标节点在接收到该镜像拉取任务后,则可以执行镜像拉取操作,通过执行镜像拉取操作可以从预设镜像仓库中拉取到目标镜像,实现镜像拉取任务的预先执行,避免在扩容时执行镜像拉取任务而影响扩容速率,因此,应用本申请实施例可以有效提高扩容速率,保证数据处理效率。其中,通过执行镜像预拉取操作,使得可以将多容器运行单元(比如,Pod)调度到该目标节点上,实现扩容。

综上,本申请实施例提供的集群的系统扩容方法,该方法通过启动监听容器水平伸缩资源并构建镜像预拉取任务;根据镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点;向各目标节点发送镜像拉取任务,以使收到镜像拉取任务的目标节点执行任务完成扩容,应用本申请实施例,可以通过目标节点实现镜像拉取任务的预先执行,避免在扩容时执行镜像拉取任务而影响扩容速率,在进行扩容时,可以有效提高扩容速率。

图2为本申请实施例提供的另一种集群的系统扩容方法的流程示意图。可选地,如图2所示,上述根据镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点,可以包括:

S201、根据镜像预拉取任务,匹配获取对应的预测方法。

其中,预测方法可以包括:容器水平伸缩资源阈值预测,或者,时序预测。

可选地,镜像预拉取任务可以包括镜像预拉取的触发逻辑和预测方法的设置参数,其中,预测方法的设置参数可以是在构建镜像预拉取任务时自动生成的,又或者可以是人为指定的,在此不作限定。可以理解的是,根据该镜像预拉取任务,则可以确定对应的预测方法是容器水平伸缩资源阈值预测,还是,时序预测,当然,本申请在此并不限定具体的预测方法,根据实际的应用场景可以是上述两种预测方法的结合,又或者,可以是其他预测方法,在此不作限定。

S202、根据预测方法判断是否触发镜像预拉取,若是,则根据调度节点预测服务获取满足预设容器调度条件的至少1个目标节点。

其中,基于上述实施例在获取到预测方法后,则可以根据获取的预测方法进一步判断是否触发镜像预拉取,可以理解的是,若未触发镜像预拉取,则说明此时无需进行扩容;若触发镜像预拉取,说明该种情况下可能需要进行扩容,那么可以获取满足预设容器调度条件的至少1个目标节点,向各目标节点发送镜像拉取任务,在此过程中,可以理解的是,由于每个节点的存储空间是有限的,因此,相比于让每个节点均执行镜像拉取任务,本申请实施通过动态预测出满足预设容器调度条件的至少1个目标节点执行镜像拉取任务完成扩容,可以解决各节点存储空间不足的问题,提高镜像拉取任务的成功率。

可选地,预测方法为容器水平伸缩资源阈值预测;上述根据预测方法判断是否触发镜像预拉取,包括:判断当前容器水平伸缩资源是否满足预设阈值。

基于上述实施例的基础上,在启动监听HPA资源后,那么可以判断当前HPA资源是否满足预设阈值,可以理解的是,根据不同的HPA资源类别可以对应不同的预设阈值,比如,若为内存资源时,可以是内存使用率达到90%;若为CPU资源时,可以是CPU使用率达到80%,在此不作限定。可以理解的是,若确定当前容器水平伸缩资源不满足预设阈值,则可以不触发镜像预拉取,若确定当前容器水平伸缩资源满足预设阈值,则可以触发镜像预拉取。

可选地,预测方法为时序预测;上述根据预测方法判断是否触发镜像预拉取,可以包括:

根据监听的容器水平伸缩资源、以及时序队列中的容器水平伸缩资源参数,计算获取预测值;判断预测值是否满足预设预拉取条件。

其中,通过时序队列中的容器水平伸缩资源参数可以反映历史时间段内容器水平伸缩资源的变化规律,则根据监听的容器水平伸缩资源和该时序队列中的容器水平伸缩资源参数,可以计算获取预测值,该预测值可以指示系统中容器水平伸缩资源的变化趋势。

可选地,预测值可以包括预测时间参数、容器水平伸缩预测资源参数等,但不以为限,比如,预测10分钟后CPU使用率将达到90%。可以理解的是,基于获取的预测值,则可以进一步判断该预测值是否满足预设预拉取条件,若满足,则可以触发镜像预拉取。

可选地,预设预拉取条件可以与预测值的内容相对应,比如,若预测值为:预测10分钟后CPU使用率将达到90%,可选地,预设预拉取条件可以为:10分钟后CPU使用率大于85%,可以理解的是,此时,该预测值满足预设预拉取条件,则将触发镜像预拉取。

当然,本申请在此并不限定预测值的获取方式,可选地,可以基于神经网络实现,比如,可以基于长短期记忆网络(Long Short-Term Memory,LSTM)计算获取预测值,但不以此为限。

图3为本申请实施例提供的又一种集群的系统扩容方法的流程示意图。可选地,如图3所示,在启动监听容器水平伸缩资源并构建镜像预拉取任务之前,上述方法还包括:

S301、根据服务配置文件,配置容器水平伸缩资源的监听范围、预测方法。

可选地,服务配置文件可以包括多个HPA资源的监听范围选项,以及多种预测方法选项,可以理解的是,在启动监听容器水平伸缩资源并构建镜像预拉取任务之前,则可以根据该服务配置文件,配置HPA资源的监听范围、预测方法,以便后续可以基于已配置的HPA资源的监听范围监听HPA资源,基于已配置的预测方法构建镜像预拉取任务。

当然,需要说明的是,根据实际的应用场景,也可以通过服务配置文件配置其他参数,比如,可以配置静默周期,静默周期可以理解为上一镜像拉取任务和下一镜像拉取任务之间的最小间隔周期,也即在执行上一镜像拉取任务后,静默周期内不再执行镜像拉取任务,如此可以避免频繁执行镜像拉取任务,提高扩容方法的适用性。可选地,静默周期可以是10分钟、30分钟,又或者可以是1个小时等,本申请在此不作限定。

图4为本申请实施例提供的另一种集群的系统扩容方法的流程示意图。可选地,如图4所示,上述根据镜像预拉取任务,匹配获取对应的预测方法,可以包括:

S401、匹配确定镜像预拉取任务是否在静默周期。

S402、若否,则根据镜像预拉取任务,匹配获取对应的预测方法。

其中,关于静默周期的说明,可以参见上述的相关部分,本申请在此不再赘述。基于前述的说明,在构建镜像预拉取任务之后,可选地,可以根据上一镜像拉取任务的执行时间,匹配确定该镜像预拉取任务是否在静默周期,若在,说明此时无需执行镜像预拉取任务,进而也就不会向各目标节点发送镜像拉取任务;若不在,则可以根据构建的镜像预拉取任务,匹配获取对应的预测方法,关于该部分内容可参见前述的相关说明,本申请在此不作限定。

图5为本申请实施例提供的又一种集群的系统扩容方法的流程示意图。可选地,如图5所示,上述根据调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点,包括:

S501、根据调度节点预测服务,获取系统中各节点的剩余资源量。

S502、根据剩余资源量选择满足预设容器调度条件的至少1个目标节点。

在一些实施例中,对于系统中的各节点来说,可以根据调度节点预测服务,获取系统中各节点的剩余资源量,可选地,剩余资源的类型可以包括但不限于GPU、CPU、内存、磁盘、网络等。

参见前述的相关说明可知,预设容器调度条件为:目标节点的剩余资源量需大于预设剩余资源量阈值,则在获取到系统中各节点的剩余资源量后,则可以根据各节点的剩余资源量在多个节点中选择满足预设容器调度条件的至少1个目标节点。

图6为本申请实施例提供的另一种集群的系统扩容方法的流程示意图。可选地,如图6所示,上述根据调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点,包括:

S601、根据调度节点预测服务,获取系统中各节点的资源分数,其中,资源分数根据预设算法、各资源参数计算获取。

S602、根据资源分数选择满足预设容器调度条件的至少1个目标节点。

参见前述的相关说明可知,预设容器调度条件为:目标节点的资源分数需大于预设资源分数阈值,则在一些实施例中,对于系统中的各节点来说,也可以根据调度节点预测服务,获取系统中各节点的资源分数,进而根据各节点资源分数可以选择满足预设容器调度条件的至少1个目标节点。

可选地,不同的资源类别可以对应不同的预设算法和资源参数,比如,对于CPU资源来说,CPU资源参数可以包括CPU利用率,预设算法可以为CPU利用率和资源分数的映射关系,比如,CPU利用率为60%~70%,对应的资源分数可以为6分;CPU利用率为70%~80%,对应的资源分数可以为3分;CPU利用率为80%~90%,对应的资源分数可以为1分;CPU利用率为90%~100%,对应的资源分数可以为0分,当然,实际预设算法并不以此为限。

在一些实施例中,具体在进行选择时,可以将各节点的资源分数按照预设顺序(比如,降序或升序)进行排序,根据排序次序确定至少1个目标节点,比如,若节点的资源分数越高说明该节点的可用资源较多,则可以选择排序靠前的任意数量个节点作为目标节点,当然,本申请在此并不限定目标节点的数量,可以是3个、5个、10个等,又或者可以是总节点数量的20%、总节点数量的30%等,在此不作限定。

基于上述实施例的相关内容,本申请实施例在此以Kubernetes集群为例进行说明,可选地,也可以将上述方法集成在预设控件组件中,比如,可以集成在imagePreLoader-controller控件组件上,可选地,上述启动监听容器水平伸缩资源并构建镜像预拉取任务的过程,可以基于imagePreLoader-controller控件组件实现,该控件组件imagePreLoader-controller也可进一步通过HTTP请求向前述的schedule-predictor组件获取满足预设容器调度条件的至少1个目标节点。

可选地,对于各节点来说,也可以在各节点上部署镜像拉取服务组件imagePreLoader-worker用于执行镜像拉取操作,比如,若根据前述的方法确定某节点为目标节点时,则该目标节点可以通过imagePreLoader-worker组件执行镜像拉取操作,当然,需要说明的是,具体在进行镜像拉取时,若还需要获取镜像私钥,也可以通过imagePreLoader-worker组件从容器对应的secret中获取对应的镜像私钥,进而根据该镜像私钥和镜像仓库中对应的镜像公钥可以在镜像仓库中获取目标镜像。

在一些实施例中,也可以将上述方法与Kubernetes平台中的相关组件结合起来使用,如此,可以提高本申请系统扩容方法的开发效率,比如,可以采用Deployment模式在系统中部署上述schedule-predictor组件和imagePreLoader-controller组件对应的服务、采用DaemonSet模式在各节点上部署上述imagePreLoader-worker组件对应的服务,但实际部署方式并不以此为限。

基于上述实施例的内容,还需要说明的是,若在进行扩容之后,也可以根据预设缩容算法进行缩容,并对节点的存储空间进行定时清理,比如,可以设置触发镜像清理的磁盘使用百分比(比如,90%)和触发镜像停止清理的磁盘使用百分比(比如,80%),但实际清理方式并不以此为限。

图7为本申请实施例提供的一种集群的系统扩容装置的功能模块示意图,该装置基本原理及产生的技术效果与前述对应的方法实施例相同,为简要描述,本实施例中未提及部分,可参考方法实施例中的相应内容。如图7所示,该系统扩容装置200包括:

启动模块210,用于启动监听容器水平伸缩资源并构建镜像预拉取任务;获取模块220,用于根据镜像预拉取任务和调度节点预测服务,获取满足预设容器调度条件的至少1个目标节点;发送模块230,用于向各目标节点发送镜像拉取任务,以使收到镜像拉取任务的目标节点执行任务完成扩容。

在可选的实施方式中,获取模块220,具体用于根据镜像预拉取任务,匹配获取对应的预测方法,预测方法包括:容器水平伸缩资源阈值预测,或者,时序预测;根据预测方法判断是否触发镜像预拉取,若是,则根据调度节点预测服务获取满足预设容器调度条件的至少1个目标节点。

在可选的实施方式中,预测方法为容器水平伸缩资源阈值预测;获取模块220,具体用于判断当前容器水平伸缩资源是否满足预设阈值。

在可选的实施方式中,预测方法为时序预测;获取模块220,具体用于根据监听的容器水平伸缩资源、以及时序队列中的容器水平伸缩资源参数,计算获取预测值;判断预测值是否满足预设预拉取条件。

图8为本申请实施例提供的另一种集群的系统扩容装置的功能模块示意图。在可选的实施方式中,如图8所示,上述系统扩容装置200,还包括:配置模块240,用于根据服务配置文件,配置容器水平伸缩资源的监听范围、预测方法。

在可选的实施方式中,获取模块220,具体用于匹配确定镜像预拉取任务是否在静默周期;若否,则根据镜像预拉取任务,匹配获取对应的预测方法。

在可选的实施方式中,获取模块220,具体用于根据调度节点预测服务,获取系统中各节点的剩余资源量;根据剩余资源量选择满足预设容器调度条件的至少1个目标节点。

在可选的实施方式中,获取模块220,具体用于根据调度节点预测服务,获取系统中各节点的资源分数,其中,资源分数根据预设算法、各资源参数计算获取;根据资源分数选择满足预设容器调度条件的至少1个目标节点。

上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。

以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Signal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。

图9为本申请实施例提供的一种电子设备结构示意图。如图9所示,该电子设备可以包括:处理器510、存储介质520和总线530,存储介质520存储有处理器510可执行的机器可读指令,当电子设备运行时,处理器510与存储介质520之间通过总线530通信,处理器510执行机器可读指令,以执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。

可选地,本申请还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 集群的系统扩容方法、设备及介质
  • 文件系统扩容方法、装置、电子设备及存储介质
技术分类

06120113023302