一种资源管理方法、装置、电子设备及存储介质与流程

文档序号:25543058发布日期:2021-06-18 20:39阅读:102来源:国知局
一种资源管理方法、装置、电子设备及存储介质与流程

本发明涉及信息技术领域,特别是涉及一种资源管理方法、装置、电子设备及存储介质。



背景技术:

越来越多公司将服务部署在基于kubernetes的容器管理系统中。由于istio可以实现对部署在kubernetes上的众多微服务进行管理,因此在部署kubernetes的同时也部署istio。

发明人发现,在kubernetes部署并灰度发布一个应用时,需要声明多个资源(kubernetes的资源deployment、service,istio中的资源virtualservice、destinationrule、gateway)。目前声明多个资源还需工作人员手动一个个创建并声明资源。



技术实现要素:

本发明实施例的目的在于提供一种资源管理方法、装置、电子设备及存储介质,以解决现有技术中资源声明时人力资源消耗大的问题。

在本发明实施的第一方面,首先提供了一种资源管理方法,应用于容器管理系统,上述方法包括:

确定目标资源,其中,目标资源与容器管理系统内置的资源和待部署的微服务的资源存在关联关系;

当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明。

可选的,上述方法还包括:

基于目标资源的声明配置,对目标资源进行监控;其中,目标资源的声明配置中包括正常运行微服务所需的配置参数;

若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正,包括:

在声明的与目标资源存在关联关系的各资源被调用时,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正,包括:

在检测声明的与目标资源存在关联关系的各资源被修改时,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正,包括:

当控制器检测到声明的与目标资源存在关联关系的各资源被删除时,根据目标资源的声明配置,声明被删除的资源。

可选的,在确定目标资源之前,上述方法还包括:

在容器管理系统中,创建项目;

在所创建的项目中,创建的目标资源和目标资源对应的控制器;

在启动项目时,将与目标资源存在关联关系的各资源加载到运行环境中。

可选的,在确定目标资源和目标资源对应的控制器之后,上述方法还包括:

按照关联关系,将目标资源设置为父级资源,将容器管理系统内置的资源和待部署的微服务的资源设置为目标资源的子级资源。

在本发明实施的第二方面,还提供了一种资源管理系统,应用于容器管理系统,包括:

资源确定模块,用于在预设容器管理系统中确定目标资源,其中,目标资源与容器管理系统内置的资源和待部署的微服务的资源存在关联关系;

声明创建模块,用于当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明。

可选的,上述装置还包括:

资源监控模块,用于基于目标资源的声明配置,对目标资源进行监控;其中,目标资源的声明配置中包括正常运行微服务所需的配置参数;

声明修改模块,用于若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,声明修改模块,包括:

子级资源声明修改子模块,用于在声明的与目标资源存在关联关系的各资源被调用时,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,声明修改模块,包括:

不一致修改子模块,用于在检测声明的与目标资源存在关联关系的各资源被修改时,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,声明修改模块,包括:

资源删除子模块,用于当控制器检测到声明的与目标资源存在关联关系的各资源被删除时,根据目标资源的声明配置,声明被删除的资源。

可选的,上述装置还包括:

项目创建模块,用于在容器管理系统中,创建项目;

资源引入模块,用于在所创建的项目中,创建的目标资源和目标资源对应的控制器;

资源加载模块,用于在启动项目时,将与目标资源存在关联关系的各资源加载到运行环境中。

可选的,上述装置还包括:

父子级设置模块,用于按照关联关系,将目标资源设置为父级资源,将容器管理系统内置的资源和待部署的微服务的资源设置为目标资源的子级资源。

在本发明实施的又一方面,一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的所述计算机程序时,实现上述任一资源管理方法。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述任一资源管理方法。

在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一资源管理方法。

本发明实施例提供的一种资源管理方法、装置、电子设备及存储介质,通过确定目标资源,当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明。可以实现当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明,从而无需部署人员手动一个个创建资源声明,从而解决现有技术中资源声明时,人力资源消耗大的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的资源管理方法的一种流程示意图;

图2为本发明实施例提供的对资源属性进行修正的流程示意图;

图3为本发明实施例提供的生成微服务的目标资源和对应的控制器的流程示意图;

图4为本发明实施例提供的资源管理系统的结构示意图;

图5为本发明实施例提供的资源管理装置的结构示意图;

图6为本发明实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

kubernetes,简称k8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes提供了应用部署,规划,更新,维护的一种机制。

istio,是针对现有的服务网络,提供一种开源的平台,可以将连接、安全、控制和观测的模块,与应用程序或服务隔离开来。

为了解决现有技术中在kubernetes中部署一个应用时,需要部署人员手动声明istio中的多个资源,导致人力资源消耗大的问题,本发明提供了一种资源管理方法,应用于容器管理系统,包括:

确定目标资源,其中,目标资源与容器管理系统内置的资源和待部署的微服务的资源存在关联关系;

当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明。

可见,通过本发明实施例的资源管理方法,可以实现当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明,从而无需部署人员手动一个个创建资源声明,从而解决现有技术中资源声明时,人力资源消耗大的问题。

以下进行详细说明,参见图1,图1为本发明实施例提供的资源管理方法的一种流程示意图,应用于容器管理系统,包括:

步骤s11,确定目标资源。

其中,目标资源与容器管理系统内置的资源和待部署的微服务的资源存在关联关系,从而可通过确定目标资源,进而确定部署指定微服务时所需的所有资源。

为便于一次性完成对待部署的微服务的资源部署工作,目标资源与容器管理系统内置的指定资源和待部署的指定微服务的资源两者之间均存在父子的关联关系。在实际使用过程中当本发明实施例提供的资源管理方法应用于kubernetes,且待部署的指定微服务为istio时,目标资源与kubernetes内置的资源deployment、资源service之间存在父子的关联关系,且目标资源与istio微服务的资源virtualservice、资源destinationrule、资源gateway之间存在父子的关联关系。进而,在检测到部署指定的微服务时,通过部署目标资源即父级资源,就可实现对父资源以及与该父资源关联的所有子资源的部署。

可选的,本发明实施例在声明目标资源的步骤之前完成父子关联关系的设定即可。本发明实施例提出在确定目标资源之后,执行该操作,具体通过下述步骤实现:

按照关联关系,将目标资源设置为父级资源,将容器管理系统内置的资源和待部署的微服务的资源均设置为目标资源的子级资源。

此外,目标资源还可以为部署指定微服务时所需的资源。具体地,由于部分微服务除所需自身资源外,还需容器管理系统内置的部分资源,故部署指定微服务时所需的资源至少包括该指定微服务的资源,除此之外还可能包括容器管理系统内置的指定资源。为便于理解,此处列举一实现方式,例如在kubernetes中部署微服务istio时,微服务istio除所需自身资源virtualservice、destinationrule、gateway以外,至少还需要kubernetes内置资源deployment、service。

本发明实施例的资源管理方法应用于容器管理系统,因此可以通过容器管理系统对应的装置来执行,具体的可以是电脑或服务器等。

步骤s12,当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明。

其中,在步骤s12之前,还包括:确定目标资源对应的控制器controller;此时创建资源声明的操作具体为,通过控制器根据与目标资源存在关联关系的各资源为目标资源创建资源声明。

在实际使用过程中kubernetes是通过声明配置文件来管理相应资源的部署,比如声明deployment资源时,会在kubernetes集群中部署名称是nginx-deployment的应用服务,服务镜像为nginx:1.14.2,集群中将会同时运行3个副本。

可见,通过本发明实施例的资源管理方法,可以实现当检测到目标资源的声明事件时,通过控制器根据与目标资源存在关联关系的各资源为目标资源创建资源声明,从而无需部署人员手动一个个创建资源声明,从而解决现有技术中资源声明时,人力资源消耗大的问题。

可选的,参见图2,上述方法还包括:

步骤s21,基于目标资源的声明配置,对目标资源进行监控。

步骤s22,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

监控资源的资源声明与该资源的声明配置数据的一致性,其目的是为保证该资源支持的微服务得以正常工作。其中,监控资源的资源声明为资源的运行数据。因此,若检测到第三方对资源的资源声明进行修改,则可发出相应的提醒通知,若未检测到修改,但监控到存在与其声明配置不一致的资源,则可直接根据声明配置,对该监控到的资源修正,实现所有资源均按照该资源对应的声明配置运行,从而支持微服务的正常运行。

本发明实施例中对目标资源的监控,可以是按固定周期进行监控,例如每小时判断下是否存在与所述目标资源的声明配置不一致的资源;也可以是按预设时间点进行监控,例如节假日当天检测下是否存在与目标资源的声明配置不一致的资源;还可以是在接收到资源被调用的请求后,或者是在资源被调用的同时,检测是否存在与目标资源的声明配置不一致的资源;亦可以是监测到资源对应的声明配置被修改或被升级,检测资源当前的资源声明与修改后/更新后的声明配置是否一致。

本发明实施例中对监控到的资源进行修正,可以是将资源的资源声明调整为该资源的声明配置,还可以为重新对该资源进行声明。

例如,当controller监听到目标资源的资源声明被调用时,从集群中拉取资源的声明配置,将该声明配置和与目标资源存在关联关系的各资源进行匹配,从而判断目标资源的声明配置与目标资源的资源声明是否一致。若不一致,则根据该目标资源的声明配置,将目标资源的资源声明修改为一致。

再例如,当目标资源的资源声明被删除时,controller会收到目标资源的资源声明被删除的事件触发,并重新声明被删除的资源,以确保该资源的服务状态如声明配置一致。

可见,通过本发明实施例的资源管理方法,当声明的目标资源和与目标资源存在关联关系的各资源的声明配置不一致,则根据该目标资源的声明配置,对目标资源的资源声明进行修正,从而防止由于运行状态与该目标资源的声明配置不一致,导致的应用运行故障的问题,提高应用运行过程中的稳定性。

此外,参见图3,本发明实施例还提供了一种生成微服务的目标资源和该目标资源对应的控制器的方法,上述方法包括:

s31,新建项目。

s32,在所创建的项目中,新建目标资源和该目标资源所对应的控制器。

当本发明实施例应用于kubernetes时,可利用开源工具包创建operator(项目),且在创建的operator中添加新的api(applicationprogramminginterface,应用程序接口)和新的kind(资源类型)作为目标资源,然后在operator项目中对应该目标资源生成响应的controller(控制器)。

此时,可将该新建项目通过镜像的方式进行打包,以便于后续在容器管理系统部署。

在生成微服务的目标资源和该目标资源对应的控制器之后,本发明实施例还提供了一种加载资源的方法,该方法包括:

s33,提交声明文件至容器管理系统,其中,该资源声明文件在新建目标资源与相对应的控制器之后,就完成自动配置了,具体存在于该新建项目的框架中。此外,针对资源声明文件还可通过修改调整实现二次配置。具体可通过修改types.go文档来实现对资源属性进行调整,可通过修改controller.go文档来实现对监控事件对应的执行操作的调整。

s34,通过控制器将容器管理系统内置的资源和待部署的微服务的资源加载到运行环境中。由于声明文件中只有容器管理系统内置的资源,故在加载资源时,除了需加载容器管理系统内置的资源,还需加载待部署的微服务的资源,从而该容器管理系统便可识别目标资源的资源类别,从而准确部署微服务所需资源、及时监控微服务所述资源的部署情况并执行相应操作。

其中,执行加载资源的方法通常在启动该新建项目时,具体地,可以调用函数组schemebuildervs中的register函数,对待部署的微服务的资源和容器管理系统内置的资源的加载。

当本发明实施例应用于集群kubernetes时,利用开源工具包创建operator项目和目标资源、控制器,此时将会生成yaml后缀的声明配置文件。通过命令提交给kubernetes集群后,集群就可以识别目标资源了。当集群检测到针对该目标资源的声明事件之后,会触发事件,使得控制器controller中的reconcile组件被调用。reconcile组件首先解析声明配置文件,即先确定目标资源,基于目标资源,再确定与目标资源存在关联关系的资源,从而确定该关联资源的属性。其次,reconcile组件针对每一关联资源,确定该关联资源是否已声明以及该关联资源的资源声明与声明配置的配置参数是否一致,并针对每一情况执行controller.go文档中对应的执行步骤。具体为,针对每一关联资源,根据该资源的属性判断该资源是否已声明。若未声明则按照声明配置文件中的配置参数进行声明;若已声明,则判断该声明的镜像打包文件地址和该集群中运行的副本数是否与声明配置文件中的配置参数相同。若不相同则按照声明配置文件中的配置参数调整一致;若相同则判断其他关联资源的声明情况。最终保证目标资源对应的关联资源的资源声明与声明配置文件中的配置参数保持一致,以确保该目标资源对应的微服务的正常运行。

参见图4,本发明实施例提供一种资源管理系统,该系统包括:服务器,该服务器用于提供apisever(接口服务)41、控制器(controller)42、客户端(client)43、注册模块(register)44;其中,

服务器41,提供集群kubernetes与客户端的通信接口,提供与控制器和注册模块的交互接口。

控制器42,提供部署资源、监控资源的运行状态以及向客户端提供服务。其中,控制器具体包括:信息组件(informer)421、召回组件(callback)422、队列组件(queue)423和配合组件(reconcile)424。上述组件具体的用途为:信息组件,用于通过从平台服务器的接口处监听自定义资源的相关资源事件;召回组件,用于将自定义资源的相关资源事件分类放入队列中;队列组件,用于生成队列,并接收召回组件发送的自定义资源的相关资源事件;配合组件,用于消费队列组件中的事件,具体地,通过调用controller.go文档中的协调方法reconcile(requestreconcile.request),检测自定义资源的运行状态是否与声明配置文件yaml中的配置参数一致,如果运行状态未达到预期即不一致,则事件不会消费,直至状态达到预期或者超时。

客户端43,向服务器提需求,以及接收控制器提供的服务。

注册模块44,为服务器提供异步的自定义资源,声明该自定义资源即可实现对微服务所需要的资源声明。

在本发明实施还提供了一种资源管理系统,参见图5,包括:资源确定模块501、声明创建模块502;

在本发明实施的第二方面,还提供了一种资源管理系统,应用于容器管理系统,包括:

资源确定模块501,用于在预设容器管理系统中确定目标资源,其中,目标资源与容器管理系统内置的资源和待部署的微服务的资源存在关联关系;

声明创建模块502,用于当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明。

可选的,上述装置还包括:

资源监控模块,用于基于目标资源的声明配置,对目标资源进行监控;其中,目标资源的声明配置中包括正常运行微服务所需的配置参数;

声明修改模块,用于若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,声明修改模块,包括:

子级资源声明修改子模块,用于在声明的与目标资源存在关联关系的各资源被调用时,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,声明修改模块,包括:

不一致修改子模块,用于在检测声明的与目标资源存在关联关系的各资源被修改时,若监控到存在与目标资源的声明配置不一致的资源,则根据目标资源的声明配置,对监控到的资源进行修正。

可选的,声明修改模块,包括:

资源删除子模块,用于当控制器检测到声明的与目标资源存在关联关系的各资源被删除时,根据目标资源的声明配置,声明被删除的资源。

可选的,上述装置还包括:

项目创建模块,用于在容器管理系统中,创建项目;

资源引入模块,用于在所创建的项目中,创建的目标资源和目标资源对应的控制器;

资源加载模块,用于在启动项目时,将与目标资源存在关联关系的各资源加载到运行环境中。

可选的,上述装置还包括:

父子级设置模块,用于按照关联关系,将目标资源设置为父级资源,将容器管理系统内置的资源和待部署的微服务的资源设置为目标资源的子级资源。

可见,通过本发明实施例的资源管理装置,可以实现当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明,从而无需部署人员手动一个个创建资源声明,从而解决现有技术中资源声明时,人力资源消耗大的问题。

本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现如下步骤:

确定目标资源,其中,目标资源与容器管理系统内置的资源和待部署的微服务的资源存在关联关系;

当检测到目标资源的声明事件时,根据与目标资源存在关联关系的各资源为目标资源创建资源声明。

可选的,处理器执行存储器所存放的程序时,可以实现上述任一资源管理方法。

上述电子设备提到的通信总线可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括ram(randomaccessmemory,随机存取存储器),也可以包括nvm(non-volatilememory,非易失性存储器),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessor,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一资源管理方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一资源管理方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1