一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

资源信息获取方法、设备及存储介质与流程

2022-09-08 08:34:50 来源:中国专利 TAG:


1.本技术涉及云服务技术领域,尤其涉及一种资源信息获取方法、设备及存储介质。


背景技术:

2.paas平台是一个基于容器集群管理系统构建的云平台。自定义资源定义(custom resource definition,crd)是容器集群管理平台为提高可扩展性,让开发者去定制资源的一种方式。
3.由于自定义资源(custom resource,cr)的定义多种多样,缺乏统一的标准化的管控和维护能力,无法采用统一的方式获取自定义资源(custom resource,cr)的信息。


技术实现要素:

4.本技术的多个方面提供一种资源信息获取方法、设备及存储介质,用以针对crd资源提供一种统一的资源信息获取方式。
5.本技术实施例提供一种资源信息确定方法,包括:
6.获取自定义资源定义crd的资源定义;所述资源定义以自定义资源cr对象的属性信息在所述crd定义的cr中的索引路径,定义所述cr对象的属性信息;
7.从所述资源定义中,获取所述cr对象的属性信息在所述cr中的索引路径;
8.根据所述cr对象的属性信息在所述cr的索引路径,从所述cr中确定所述cr对象的属性信息。
9.本技术实施例还提供一种计算设备,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;
10.所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行上述资源信息获取方法中的步骤。
11.本技术实施例还提供一种存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述资源信息获取方法中的步骤。
12.在本技术实施例中,针对crd增加crd的资源定义,在crd的资源定义中,以crd定义的cr对象的属性信息在cr中的索引路径,定义该cr对象的属性信息,实现了对不同类型的crd资源的统一管理。这样,无论cr对象为何种类型的自定义资源,在对cr对象进行管理时,可从crd的资源定义中,获取cr对象在cr中的索引路径;并根据cr对象的属性信息在cr的索引路径,从cr中获取cr对象的属性信息,实现了对自定义资源信息的统一获取方式,便于后续基于cr对象的信息对cr对象进行管控,有助于提高paas平台对自定义资源的管控能力。
附图说明
13.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
14.图1为容器集群管理系统中一些资源对象的示例;
15.图2为本技术实施例提供的资源信息获取方法的流程示意图;
16.图3为本技术实施例提供的crd的资源定义的系统框架图;
17.图4为本技术实施例提供的应用状态感知方法的流程示意图;
18.图5为本技术实施例提供的crd的控制面管理方法的流程示意图;
19.图6为本技术实施例提供的计算设备的结构示意图。
具体实施方式
20.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.paas平台可通过统一应用管理、异构资源管理和智能运维等关键能力,支撑paas产品。在混合云多版本形态和异构基础设施下的统一交付运维。应用实例(appinstance)为paas平台中应用发布的单位,是一个charts包部署到平台后的一个实例,其下面包含了各种资源(resource)。例如,deployment,statefulset等工作负载资源,及自定义资源(cr)等。
22.资源是容器集群管理系统api中的一个端点,其中存储的是某个类别的api对象(又可称为资源对象)的一个集合。例如,容器集群管理系统内置的pod资源包含一组pod对象。容器集群管理系统api可使用户使查询和操纵容器集群管理系统api中资源对象(例如:pod、namespace、configmap和event)的状态等。容器集群管理系统中对象(资源对象)是容器集群管理系统中的持久性实体。
23.自定义资源(custom resource,cr)是对容器集群管理系统api的扩展。自定义资源定义(crd)为自定义资源(cr)的定义,为容器集群管理系统提供给用户的一种扩展资源的方法,crd对应的资源对象实体为自定义资源,即cr。用户可以通过crd定义自定义资源。图1给出了容器集群管理系统中一些内置资源和自定义资源。
24.由于crd是由用户定制的,不同用户定义cr的方式各式各样,同一用户定义不同类型的cr的方式也有差异。在一些方案中,针对每类自定义资源定制对应的控制器(controller),由自定义资源定制对应的控制器对该类自定义资源对象进行资源管理。但是,对不同类型的自定义资源缺乏统一的标准化管理和维护方式,导致无法采用统一的方式获取不同类型的自定义资源的信息,导致paas平台对自定义资源的管控能力较差。
25.为了解决上述技术问题,在本技术一些实施例中,针对crd增加crd的资源定义,在crd的资源定义中,以crd定义的cr对象的属性信息在cr中的索引路径,定义该cr对象的属性信息,实现了对不同类型的crd资源的统一管理。这样,无论cr对象为何种类型的自定义资源,在对cr对象进行管理时,可从crd的资源定义中,获取cr对象在crd定义的cr中的索引路径;并根据cr对象的属性信息在cr的索引路径,从cr中获取cr对象的属性信息,实现了对自定义资源信息的统一获取方式,便于后续基于cr对象的信息对cr对象进行管控,有助于提高paas平台对自定义资源的管控能力。
26.以下结合附图,详细说明本技术各实施例提供的技术方案。
27.应注意到:相同的标号在下面的附图以及实施例中表示同一物体,因此,一旦某一物体在一个附图或实施例中被定义,则在随后的附图和实施例中不需要对其进行进一步讨论。
28.图2为本技术实施例提供的资源信息获取方法的流程示意图。如图2所示,该资源信息获取方法主要包括:
29.201、获取crd的资源定义;该资源定义以cr对象的属性信息在crd对应的cr中的索引路径,定义cr对象的属性信息。
30.202、从资源定义中,获取cr对象的属性信息在cr中的索引路径。
31.203、根据cr对象的属性信息在cr的索引路径,从cr中确定cr对象的属性信息。
32.本技术实施例提供的资源信息获取方法可由crd的资源定义(crd definition)的控制器执行。crd的资源定义的控制器与crd的资源定义相结合,实现operator模式。operator是容器集群管理系统的扩展软件,可利用自定义资源管理应用及其组件。operator模式可在不修改容器集群管理系统自身代码的情况下,通过为一个或多个自定义资源关联控制器来扩展集群的能力。operator是容器集群管理系统api的客户端,充当cr的控制器。
33.在本技术实施例中,crd是自定义资源(cr)的资源定义。cr可以yaml文件形式存储于容器集群管理系统中的api服务(api server)组件中。cr中定义了cr对象的属性信息。其中,cr对象的属性信息是指反映cr对象的属性的信息,包括但不局限于:cr对象的状态信息、工作负载(workload)资源信息(也可称为子资源信息)、硬件资源需求信息及调度属性信息等。
34.其中,cr对象的状态信息可反映cr对象的健康状态,根据cr对象的状态信息可确定cr对象是否达到终态(即就绪状态)。cr对象的工作负载是指cr对象在容器集群管理系统上运行的应用程序,在容器集群管理系统可以在容器组(如pod)中运行工作负载。在容器集群管理系统中不需要直接管理每个pod,可以使用负载资源管理一组pods。这些工作负载资源配置控制器来确保工作负载资源的状态达到期望状态。
35.硬件资源需求信息反映cr对象对硬件资源的需求。硬件资源包括但不局限于:计算资源(如cpu核数)、存储资源(如内存量)及磁盘资源等。
36.cr对象的调度属性信息用于反映cr对象的调度需求,这些影响可影响cr对象在工作节点(worker)上的部署。其中,cr对象的调度属性信息包括但不局限于:运行cr对象的工作负载的容器组的标签(label)、调度亲和性规则、容忍度规则以及节点选择器(node selector)配置等。
37.调度亲和性规则是指容器组与其它容器组之间的亲和度规则;对于具有亲和性的应用实例,可部署于同一工作节点(worker);对于不具有亲和性的容器组,不能部署于同一计算节点。标签用于表明容器组与其它容器组之间的亲和度。
38.容忍度为定义在容器组(如pod)上的键值型的属性数据,用于配置其可容忍的计算节点的污点,而且调度器仅可将容器组调度至该应用实例能够容忍节点污点的计算节点上。
39.节点选择器配置用于选择工作节点,由调度器(scheduler)调度节点选择器配置标签(label)匹配,调度容器组到目标工作节点。
40.上述实施例提供的cr对象的属性信息仅为示例性说明,并不构成限定。不同类型的自定义资源的cr定义cr对象的属性信息的方式不同。例如,各个cr对象是否到终态往往通过状态字段(status)中的不同字段来定义。比如有些cr是通过status.ready是否为true来表示是否达到终态,而有些cr是通过status.health是否为green来表示等。又例如,对于cr对象的硬件资源需求,有些cr是通过spec.nodes.data.resoures.requests.cpu的字段表示cr对象的cpu需求;有些cr是通过spec.template.cpu的字段表示cr对象的cpu需求等。不同cr定义同一属性的方式不同,导致获取cr对象的属性信息的路径不同。现有paas平台对于crd资源缺乏统一的管理和维护机制,导致paas平台感知cr对象的属性信息的复杂度较高。
41.在本技术实施例中,为了实现对crd资源的统一管理和维护,针对不同类型的自定义资源(cr)的资源定义,即自定义资源定义(crd),增加对crd的资源定义(crd definition)。crd的资源定义是将crd作为一种资源,对crd进行资源定义。在本技术实施例中,为了实现对crd资源的统一管理,在crd的资源定义中,以crd定义的cr对象的属性信息在该cr中的索引路径,定义cr对象的属性信息。其中,cr对象的属性信息在cr中的索引路径可理解为:在cr中查询或获取到cr对象的属性信息的路由信息,类似于文件目录。cr对象的属性信息在cr中的索引路径可以cr对象的属性信息在cr中的定义路径进行表示。例如,cr示例的部分代码如下所示:
[0042][0043]
在上述cr示例中,cr对象的状态信息在crd中的定义路径为“spec.status.health”,即在crd的spec字段下定义了status字段,status字段下定义了cr对象的状态信息字段health,其中,字段“spec.status.health”的值表示该cr对象的状态信息。相应地,cr对象的状态信息在cr中的索引路径为“spec.status.health”。
[0044]
crd的资源定义以crd定义的cr对象的属性信息在该cr中的索引路径,定义cr对象的属性信息。例如,在一些实施例中,crd的资源定义的crd接口定义如下:
[0045]
[0046][0047]
在上述crd的资源定义中,以cr对象的属性信息在cr中的索引路径,定义cr对象的属性信息。上述crd的资源定义可由用户对cr进行代码梳理来确定crd的资源定义中cr对象的属性信息的索引路径,并写入crd的资源定义中相应字段。其中,crd的资源定义也是一种crd对应的cr实体,同样可以yaml文件的形式存储于api服务组件中。
[0048]
基于上述对cr对象统一形式管理的crd的资源定义,在本技术步骤201中,可获取crd的资源定义。结合图3示出的crd的资源定义的系统框架,针对任一crd,可以crd的标识在api服务组件中进行查询,以获取crd的标识对应的crd的资源定义。其中,crd的标识是指唯一标识一种cr对象的信息,可用cr对象的组别、版本号和资源类型(group、version and kind,gvk)进行表示。
[0049]
进一步,在步骤202中,可从crd的资源定义中,获取cr对象的属性信息在crd定义的cr中的索引路径。cr对象为crd定义的资源对象;cr为crd定义的资源实体。例如,从上述crd的资源定义中,可获取cr对象的状态信息在cr中的索引路径为“object.status.health”。
[0050]
在确定出cr对象的属性信息在cr中的索引路径之后,在步骤203中,可根据cr对象的属性信息在cr的索引路径,从cr中确定cr对象的属性信息。
[0051]
在本实施例中,针对crd增加crd的资源定义,在crd的资源定义中以crd定义的cr对象的属性信息在crd的资源实体cr中的索引路径,定义该cr对象的属性信息,实现了对不同类型的crd资源的统一管理。这样,无论cr对象为何种类型的自定义资源,在对cr对象进行管理时,可从crd的资源定义中,获取cr对象在cr中的索引路径;并根据cr对象的属性信息在cr的索引路径,从cr中获取cr对象的属性信息,实现了对自定义资源信息的统一获取方式,便于后续基于cr对象的信息对cr对象进行管控,有助于提高paas平台对自定义资源的管控能力。
[0052]
下面结合不同的属性信息,对确定cr对象的属性信息的实施方式进行示例性说明。在一些实施例中,cr对象的属性信息包括:cr对象的子资源信息。其中,cr对象的子资源也可称为cr对象的工作负载(workload)。工作负载(workload)可包括:statefulset、deployment、replicaset、daemonset等资源,也可包括crd资源等。在本技术实施例中,可从crd的资源定义中,确定用于表示cr对象的子资源的标识符。在上述crd的资源定义示例中,cr对象的子资源的标识符为“topology”。其中,“spec.topology”字段描述了cr对象生成的子资源的部分模板,主要包括:子资源的名称(name)、命名空间(namespace)、标签(label)等等。通过这些模版片段,crd的资源定义的控制器能够获取cr对象的子资源信息。其中,“spec.topology”字段描述的cr对象的子资源可以cue模板语言进行表示。cue是一种服务于云化配置的强类型配置语言。
[0053]
在确定出表示cr对象的子资源的标识符之后,可从crd的资源定义中,获取cr对象的子资源的标识符下定义的cr对象的子资源的标识。其中,子资源的标识可以子资源的gvk信息进行表示。例如,上述crd的资源定义示例中,子资源的标识为“apps.v1.statefulset”。进一步,可从crd的资源定义中,获取cr对象的子资源的标识对应的子资源信息的索引路径。例如,上述crd的资源定义示例中,子资源的标识为子资源的gvk:“apps.v1.statefulset”;则根据子资源的gvk,获取cr对象的子资源的标识对应的子资源信息:命名空间的索引路径为“parameter.namespace”;标签的索引路径为:
[0054]
labels:{
[0055]
"elasticsearch.xxx.com/cluster-name":parameter.name
[0056]
"elasticsearch.xxx.com/role":"data"}。
[0057]
crd的资源定义的控制器,可根据cr对象的子资源信息在cr中的索引路径,从cr定义中获取cr对象的子资源信息,实现cr对象的workload拓扑的感知,可为cr对象的子资源进行健康检测、调试及调度等提供参考信息。其中,子资源信息可包括:子资源的标识(如gvk等)、子资源的名称、状态信息及调度属性信息等等。
[0058]
在一些实施例中,cr对象的属性信息包括:cr对象的状态信息。相应地,结合图3,步骤203可实现为:根据cr对象的状态信息在cr的索引路径,从cr中获取cr对象的状态信息
(对应图3中的状态感知);并根据cr对象的状态信息,及cr中定义的cr对象的终态信息,确定cr对象的状态,实现对cr对象的状态感知。其中,cr中定义的cr对象的终态信息由cr的控制器进行控制。cr的控制器可追踪cr对象。cr中有一个代表期望状态的spec字段。cr的控制器负责确保cr对象的当前状态接近期望状态。
[0059]
可选地,可判断cr对象的状态信息与cr中定义的cr对象的终态信息是否相同;若判断结果为是,确定cr对象的状态到达终态;相应地,若判断结果为否,则确定cr对象的状态未达到状态。其中,对于上述crd的资源定义的crd接口定义,可根据crd的资源定义中的字段spec.status.healthpolicy定义的cr对象的状态信息在cr中的索引路径“object.status.health”,从cr中获取cr对象的状态信息;进一步,判断cr对象的状态信息与cr中定义的cr对象的终态信息是否相同,来确定cr对象的状态是否达到终态。可选地,可通过cue表达式来判断对应的cr对象是否到达终态。cue是一种服务于云化配置的强类型配置语言。
[0060]
上述实施例示出的cr对象的终态感知方式适用于cr对象无子资源(即无workload拓扑)或者cr对象的子资源不需要健康状态检测的实施例。对于cr对象的子资源设置有健康状态检测机制的实施例来说,在判断结果为cr对象的状态信息与cr中定义的cr对象的终态信息相同的情况下,还可根据cr对象的子资源的状态信息,确定cr对象的状态。
[0061]
具体地,可从crd的资源定义中获取cr对象的子资源的状态信息;并根据cr对象的子资源的状态信息,确定cr对象的状态。若根据cr对象的子资源的状态信息,确定cr对象的子资源中存在未达到终态的子资源,可确定cr对象的状态未达到终态。相应地,若在cr对象的状态信息与cr中定义的cr对象的终态信息相同的情况下,cr对象的子资源均达到终态,确定cr对象达到状态。
[0062]
下面结合paas平台的应用实例的状态管理方式进行示例性说明。如图4所示,对于应用实例(app instance),可获取的apptop资源。该apptop资源以yaml文件的形式存储于api服务组件中。其中,apptop资源中记录了应用实例的子资源,例如,deployment、statefulset等。其中,应用实例进行状态管理主要包括以下步骤:
[0063]
s11、获取应用实例的apptop资源。
[0064]
s12、遍历apptop记录的应用实例的子资源是否存在crd资源。若判断结果为是,执行步骤s13。
[0065]
s13、判断所有crd是否检测完成;若判断结果为否,执行步骤s14;若判断结果为是,确定应用实例达到终态。
[0066]
s14、从尚未检测的crd中任取一个crd,作为目标crd。
[0067]
s15、利用目标crd的标识在api服务组件中进行查询;若查询到目标crd对应的资源定义,则执行步骤s16。
[0068]
s16、从目标crd的资源定义中,获取目标crd对应的cr对象的状态信息在目标cr中的索引路径;目标cr为目标crd的资源实体。
[0069]
s17、按照cr对象的状态信息在目标cr中的索引路径,从目标cr中获取cr对象的状态信息。
[0070]
s18、判断cr对象的状态信息与目标cr中定义的cr状态的终态信息是否相同;若判断结果为是,执行步骤s19;若判断结果为否,执行步骤s113。
[0071]
s19、从crd的资源定义中,获取cr对象的子资源信息在目标cr中的索引路径。
[0072]
s110、按照cr对象的子资源信息在目标cr中的索引路径,从目标cr中获取cr对象的子资源的状态信息。
[0073]
s111、判断cr对象的子资源是否全部达到状态。若判断结果为是,执行步骤s112;若判断结果为否,执行步骤s113。
[0074]
s112、确定目标cr的cr对象达到状态;返回执行步骤s13。
[0075]
s113、确定目标cr的cr对象未达到终态;并确定应用实例未达到终态。
[0076]
在一些实施例中,cr对象的属性信息还可包括:cr对象的硬件资源需求信息。其中,关于硬件资源的描述可参见上述实施例的相关内容,在此不再赘述。在crd的资源定义中可采用gjson等模版语言定义cr对象的硬件资源需求。在获取cr对象的硬件资源需求时,可采用统一的方式获取。具体地,对不同的cr采用通用标准的方式来等等对于cr对象的硬件资源需求信息,可根据硬件资源需求信息在cr中的索引路径,从cr中获取cr对象的硬件资源需求信息。具体地,可根据硬件资源需求信息在cr中的索引路径,从cr中获取单个cr对象的硬件资源需求信息;并根据cr对象的副本数在cr中的索引路径,从cr中获取cr对象的副本数量;之后,可根据cr对象的副本数量和单个cr对象的硬件资源需求信息,确定cr对象的硬件资源需求信息。具体地,cr对象的单个维度的硬件资源需求信息等于单个cr对象在该维度的硬件资源需求量乘以cr对象的副本数量。
[0077]
例如,在一些实施例中,容器组里面的cpu的资源需求分别为:spec.nodes.data.resources.requests.cpu为8000m,副本数spec.nodes.data.replicas为3,另外一个master的cpu资源需求为spec.nodes.master.resources.requests.cpu为2000m,副本数spec.nodes.master.replicas为3,cr对象的cpu资源总需求量为8000m*3 2000m*3=30000m。其中,“m”表示千分之一核。
[0078]
通过cr对象的硬件资源需求信息在cr中的索引路径,获取cr对象的硬件资源需求信息,可为后续对cr对象进行调度提供依据。
[0079]
本技术实施例中,crd的资源定义除了定义cr对象的状态、子资源、硬件资源需求信息之外,还可定义cr对象的调度属性信息。其中,cr对象的调度属性信息影响cr对象在计算集群中的部署。在crd的资源定义中可采用gjson等模版语言定义cr对象的调度属性信息。在获取cr对象的调度属性时,可采用统一的方式获取。具体地,可从crd的资源定义中,获取cr对象的调度属性信息在cr中的索引路径。进一步,可根据cr对象的调度属性信息在cr中的索引路径,从cr中获取cr对象的调度属性信息。其中,cr对象的调度属性信息可为cr对象在计算集群中的调度提供依据和条件。
[0080]
上述实施例提供的资源信息获取方法可由crd的资源定义(crd definition)的控制器执行。在本技术实施例中,获取crd定义的cr对象的属性信息之后,可根据cr对象的属性信息,对cr对象进行管控。在本技术实施例中,crd的资源定义对应的控制器在获取cr定义的cr对象的属性信息之后,可将cr对象的属性信息提供给容器集群管理系统中的其它组件,由其它组件对cr对象的管控机制。下面结合不同的属性信息,对根据cr对象的属性信息,对cr对象进行管控的实施方式进行示例性说明。
[0081]
在一些实施例中,对cr对象进行管控的组件可为cr的控制器。cr的控制器可根据cr对象的状态信息,对cr对象进行应用状态管理,以使cr对象的状态达到期望状态。或者,
cr的控制器还可根据cr对象的子资源的状态信息,对cr对象的子资源进行健康检测;并在检测到cr对象的子资源发生异常事件的情况下,调整cr对象的子资源的状态。例如,cr对象的子资源为pod资源,cr对象的控制器可将cr对象的子资源和cr对象的状态调整为未就绪状态(unready)等等。或者,cr对象的控制器可重新创建pod,并在pod创建完成并达到就绪状态时,将cr对象的状态调整为就绪状态(ready)等。
[0082]
在另一些实施例中,调度器(scheduler)根据cr对象的硬件资源需求信息和调度属性信息,对cr对象进行调度等等。例如,调度器可根据cr对象的调度属性信息,从计算集群中确定与cr对象的调度属性信息适配的候选工作节点;并根据cr对象的硬件资源需求信息,从候选工作节点中确定满足硬件资源需求信息的目标工作节点;进一步,可在目标工作节点中部署cr对象对应的容器组(如pod等)。
[0083]
在paas平台中,应用实例(appinstance)为paas平台中应用发布和下线的单位。在下线应用时,可以appinstance的应用维度做下线处理。appinstance的应用下线还可下线对应的控制面资源。但是,如果下线了appinstance的cr子资源的控制面,比如deployment,关键的服务账号(service account,sa)资源或者基于角色的访问控制(rbac)资源等,那么后续如果其他服务或应用下线crd对应的cr对象的时候,会导致没有控制面来进行资源下线的处理。例如,移除了cr的finalizer,导致下线finalizer对应cr的时候阻塞了对应appinstance的下线流程。基于此,在本技术实施例中,还可提供控制面下线方法,防止出现上述问题,保证能够下线控制面对应的cr资源。
[0084]
在本技术实施例中,为了防止出现上述问题,在crd的资源定义中还可定义控制面管理策略,来对cr对象的控制码资源进行生命周期管理。在本技术实施例中,控制面管理策略可包括:等待cr删除策略(waiting cr deleted)和直接下线策略(none)。其中,等待cr删除策略是指等待环境中crd对应的cr对象都下线之后,才下线crd的控制面所在的appinstance(crd的控制面资源)。其中,crd的控制面对应的appinstance就是crddefinition所在的appinstance。该策略可防止系统中其他appinstance应用生成这个crd的cr的时候下线了对应的crd的控制面,导致其它应用对应的cr因为无crd的控制面而无法下线的问题。直接下线策略是指在下线应用实例时,直接下线对应的crd的控制面资源。一般用于处理一些无状态的cr。
[0085]
上述crd的资源定义中的控制面管理策略可由用户根据crd对应的子资源的特性进行配置。在一些实施例中,子资源为静态配置,比如某些cr为静态配置,比如xxxconfig,则删除crd的控制面资源之后,后续cr及其子资源的回收由容器集群管理系统的controller-manager组件处理。因为静态配置类型的cr,不依赖控制面,甚至一些配置类型的cr并无控制面。对于静态配置类cr,可设置crd的资源定义中控制面管理策略为“直接下线策略”。
[0086]
对于动态cr(如redis等),crd的控制面的下线一般要等到crd对应的所有cr对象都下线之后再进行下线才行。因为这些cr对象都是动态的,在下线crd的控制面资源时,若其中某些cr对象未达到终态,这时下线crd的控制面资源,则导致未达到终态的cr对象永远不会达到终态。对于达到终态的cr对象,也会因为缺失控制面导致cr对象的状态无法与api服务组件中的cr实现终态同步。
[0087]
基于上述crd的资源定义中定义的控制面管理策略,可从crd的资源定义中,获取
crd的控制面管理策略;并按照控制面管理策略,对crd的控制面资源进行管理。在一些实施例中,crd的控制面管理策略为直接下线,则响应于crd的下线事件,可直接下线crd对应的控制面资源。
[0088]
在另一些实施例中,crd的控制面管理策略为“等待cr删除策略”。相应地,可响应于针对crd的下线事件,监测crd对应的cr对象是否全部下线;并在监测到crd对应的cr对象全部下线的情况下,下线crd的控制面资源。
[0089]
上述crd的控制面管理策略可由crd的资源定义对应的控制器进行执行。如图3所示,crd的资源定义对应的控制器可使用list and watch的方法,调用list和watch两种类型的api进行crd的控制面资源的生命周期。下面以应用实例下线时,控制面的资源管理方法进行示例性说明。如图5所示,主要步骤可包括:
[0090]
s21、响应于应用实例下线事件,获取应用实例的crd的资源定义。
[0091]
s22、监测计算集群中是否存在crd对应的cr对象。若存在,执行步骤s23;若不存在,执行步骤s24。
[0092]
s23、保留crd的资源定义和crd的控制面资源。
[0093]
s24、删除crd的资源定义中的finalizer对应的资源,即crd的控制面资源。
[0094]
s25、删除应用实例中的其它资源。
[0095]
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤201和202的执行主体可以为设备a;又比如,步骤201的执行主体可以为设备a,步骤202的执行主体可以为设备b;等等。
[0096]
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
[0097]
相应地,本技术实施例还提供一种存储有计算机指令的计算机可读存储介质,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行上述资源信息获取方法中的步骤。
[0098]
本技术实施例还提供一种计算机程序产品,包括:计算机程序。该计算机程序被一个或多个处理器执行时,致使一个或多个处理器执行上述资源信息获取方法中的步骤。在本技术实施例中,不限定计算机程序产品的具体实现形态。在一些实施例中,计算机程序产品可实现为容器集群管理平台中资源对象的控制器等。
[0099]
图6为本技术实施例提供的计算设备的结构示意图。如图6所示,该计算设备包括:该计算设备包括:存储器60a和处理器60b。其中,存储器60a,用于存储计算机程序。
[0100]
处理器60b耦合至存储器60a,用于执行计算机程序以用于:获取自定义资源定义crd的资源定义;资源定义以自定义资源cr对象的属性信息在cr中的索引路径,定义cr对象的属性信息;cr为crd的资源实体;从资源定义中,获取cr对象的属性信息在cr中的索引路径;根据cr对象的属性信息在cr的索引路径,从cr中确定cr对象的属性信息。
[0101]
在一些实施例中,cr对象的属性信息包括:cr对象的状态信息。相应地,处理器60b从cr中确定cr对象的属性信息时,具体用于:根据cr对象的状态信息在cr的索引路径,从cr
中获取cr对象的状态信息;根据cr对象的状态信息及cr中定义的cr对象的终态信息,确定cr对象的状态。
[0102]
可选地,处理器60b在确定cr对象的状态时,具体用于:判断cr对象的状态信息与cr中定义的cr对象的终态信息是否相同;若判断结果为是,确定cr对象的状态到达终态;或者;判断cr对象的状态信息与cr中定义的cr对象的终态信息是否相同;若判断结果为是,根据cr对象的子资源的状态信息,确定cr对象的状态。
[0103]
在另一些实施例中,cr对象的属性信息包括:cr对象的子资源信息。相应地,处理器60b在从资源定义中,获取cr对象的属性信息在cr中的索引路径时,具体用于:从资源定义中,确定用于表示cr对象的子资源的标识符;从资源定义中,获取子资源的标识符下定义的cr对象的子资源的标识;从资源定义中,获取cr对象的子资源的标识对应的子资源信息的索引路径。
[0104]
其中,子资源信息包括:子资源的状态信息。处理器60b还用于:根据子资源的状态信息,确定cr对象的状态。
[0105]
可选地,处理器60b在根据子资源的状态信息,确定cr对象的状态时,具体用于:根据子资源的状态信息,判断子资源中是否存在未达到终态的子资源;若判断结果为子资源中存在未达到终态的子资源,确定cr对象的状态为未达到终态。
[0106]
在又一些实施例中,cr对象的属性信息包括:cr对象的硬件资源需求信息和调度属性信息。处理器60b还用于:根据cr对象的调度属性信息,在计算集群中为cr对象进行资源调度,以确定与调度属性信息适配的候选工作节点;根据cr对象的硬件资源需求信息,从候选工作节点中确定满足硬件资源需求信息的目标工作节点;在目标工作节点部署cr对象的容器组。
[0107]
在本技术实施例中,处理器60b还用于:从资源定义中,获取crd的控制面管理策略;按照控制面管理策略,对crd的控制面资源进行管理。
[0108]
在一些实施例中,控制面管理策略为等待cr对象删除后下线。相应地,处理器60b在按照控制面管理策略,对crd的控制面资源进行管理时,具体用于:响应于crd的下线事件,监测crd对应的cr对象是否全部下线;在监测到crd对应的cr对象全部下线的情况下,删除控制面资源。
[0109]
在一些可选实施方式中,如图6所示,该计算设备还可以包括:通信组件60c和电源组件60d等可选组件。图6中仅示意性给出部分组件,并不意味着计算设备必须包含图6所示全部组件,也不意味着计算设备只能包括图6所示组件。
[0110]
本实施例提供的计算设备,可部署上述crd的资源定义对应的控制器。针对crd增加crd的资源定义,在crd的资源定义中,以crd定义的cr对象的属性信息在cr中的索引路径,定义该cr对象的属性信息,实现了对不同类型的crd资源的统一管理。这样,无论cr对象为何种类型的自定义资源,在对cr对象进行管理时,计算设备可从crd的资源定义中,获取cr对象在cr中的索引路径;并根据cr对象的属性信息在cr的索引路径,从cr中获取cr对象的属性信息,实现了对自定义资源信息的统一获取方式,便于后续基于cr对象的信息对cr对象进行管控,有助于提高paas平台对自定义资源的管控能力。
[0111]
在本技术实施例中,存储器用于存储计算机程序,并可被配置为存储其它各种数据以支持在其所在设备上的操作。其中,处理器可执行存储器中存储的计算机程序,以实现
相应控制逻辑。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0112]
在本技术实施例中,处理器可以为任意可执行上述方法逻辑的硬件处理设备。可选地,处理器可以为中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)或微控制单元(microcontroller unit,mcu);也可以为现场可编程门阵列(field-programmable gate array,fpga)、可编程阵列逻辑器件(programmable array logic,pal)、通用阵列逻辑器件(general array logic,gal)、复杂可编程逻辑器件(complex programmable logic device,cpld)等可编程器件;或者为先进精简指令集(risc)处理器(advanced risc machines,arm)或系统芯片(system on chip,soc)等等,但不限于此。
[0113]
在本技术实施例中,通信组件被配置为便于其所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g或3g,4g,5g或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还可基于近场通信(nfc)技术、射频识别(rfid)技术、红外数据协会(irda)技术、超宽带(uwb)技术、蓝牙(bt)技术或其他技术来实现。
[0114]
在本技术实施例中,电源组件被配置为其所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
[0115]
需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
[0116]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0117]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0118]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0119]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计
算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0120]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0121]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0122]
计算机的存储介质为可读存储介质,也可称为可读介质。可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0123]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0124]
以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献