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

一种应用实例控制方法、装置、设备及存储介质与流程

2021-10-24 05:48:00 来源:中国专利 TAG:应用实例 装置 控制 方法 设备


1.本发明涉及云技术领域,具体涉及一种应用实例控制方法、装置、设备及存储介质。


背景技术:

2.云应用是把传统软件“本地安装、本地运算”的使用方式变为“即取即用”的服务。
3.为了保证多个云应用程序在云服务器中的安全性以及运行效率,通常采用kubernetes(开源的容器编排引擎,通常简称为k8s)对云应用程序进行管理。当需要通过虚拟机实现云应用程序时,k8s可以加载kubevirt(kubevirt是以容器方式运行虚拟机的项目),以实现对虚拟机类型的云应用程序的控制;当需要通过容器实现云应用程序时,k8s可以部署kata container(安全容器项目),以实现对容器类型的云应用程序的控制。
4.上述方案中,k8s中需要通过两套项目来分别实现对虚拟机以及容器的控制,控制效率较低。


技术实现要素:

5.本技术提供了一种应用实例控制方法、装置、设备及存储介质,提高了对不同类型的应用实例的控制效率,该技术方案如下。
6.一方面,提供了一种应用实例控制方法,所述方法包括:
7.获取第一实例信息;
8.根据所述第一实例信息对应的实例类型,构建第一应用实例;所述实例类型包括虚拟机以及容器中的至少一者;
9.根据第一实例信息中的第一资源数据,以及所述第一应用实例的运行状态,对所述第一应用实例进行控制,以实现所述第一应用实例的应用功能;所述第一资源数据是与所述第一应用实例对应的资源数据。
10.又一方面,提供了一种应用实例控制装置,所述装置包括:
11.第一实例信息获取模块,用于获取第一实例信息;
12.第一实例构建模块,用于根据所述第一实例信息对应的实例类型,构建第一应用实例;所述实例类型包括虚拟机以及容器中的至少一者;
13.控制模块,用于根据第一实例信息中的第一资源数据,以及所述第一应用实例的运行状态,对所述第一应用实例进行控制,以实现所述第一应用实例的应用功能;所述第一资源数据是与所述第一应用实例对应的资源数据。
14.在一种可能的实现方式中,所述控制模块,包括:
15.第一资源获取单元,用于获取所述第一实例信息中的第一资源数据,以及所述第一应用实例对应的运行状态;
16.运行状态更新单元,用于当检测到所述第一资源数据与所述第一应用实例的运行状态不对应时,对所述第一资源数据以及所述第一应用实例的运行状态中的一者进行更
新,以实现对所述第一应用实例的控制。
17.在一种可能的实现方式中,所述运行状态更新单元,还用于,
18.当所述第一资源数据的更新时间点后于所述第一应用实例的运行状态的更新时间点时,根据所述第一资源数据,更新所述第一应用实例的运行状态;
19.或者,当所述第一资源数据的更新时间点先于所述第一应用实例的运行状态的更新时间点时,根据所述第一应用实例的运行状态,更新所述第一资源数据。
20.在一种可能的实现方式中,所述控制模块,还包括:
21.第一实例删除单元,用于当检测到所述第一实例信息中的第一资源数据被删除,对应删除所述第一应用实例。
22.在一种可能的实现方式中,所述第一实例信息以及所述第一应用实例存储于目标云数据库;所述目标云数据库中包含虚拟机镜像以及容器镜像中的至少一者。
23.在一种可能的实现方式中,所述装置还包括:
24.本地资源存储模块,用于从所述目标云数据库中获取所述第一实例信息,并存储至本地数据库中;
25.本地资源读取模块,用于当接收到对所述第一实例信息的读取操作时,从所述本地数据库中读取所述第一资源数据。
26.在一种可能的实现方式中,所述第一实例信息包括spec定义字段;
27.当所述第一实例信息对应的第一应用实例包括虚拟机类型的应用实例时,所述spec定义字段包括registrydisk;
28.当所述第一实例信息对应的第一应用实例包括容器类型的应用实例时,所述spec定义字段包括runtimeclassname。
29.再一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的应用实例控制方法。
30.再一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的应用实例控制方法。
31.又一方面,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质中读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行上述的应用实例控制方法。
32.有益效果
33.构建包含实例类型以及实例的资源数据的第一实例信息,并根据实例类型,确定构建的应用实例的类型是虚拟机还是容器,再根据第一实例信息中包含的与第一应用实例对应的资源数据,与第一应用实例在运行时的运行状态进行对应,以实现对第一应用实例的控制,因此,只需要通过对第一实例信息中的第一资源信息进行修改,就可以实现对两种不同类型中的任意一种类型的应用实例进行控制,并实现第一应用实例的应用功能,不需要对虚拟机和容器采用不同的控制系统进行操作,提高了对不同类型的应用实例的控制效率。
附图说明
34.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
35.图1是根据一示例性实施例示出的一种应用实例控制系统的结构示意图;
36.图2是根据一示例性实施例示出的一种应用实例控制方法的方法流程图;
37.图3是根据一示例性实施例示出的一种应用实例控制方法的方法流程图;
38.图4示出了图3所示实施例涉及的一种数据对应方法示意图;
39.图5示出了图3所示实施例涉及的一种实例应用框架示意图;
40.图6是根据一示例性实施例示出的一种应用实例控制方法的流程框图;
41.图7是根据一示例性实施例示出的一种应用实例控制装置的结构方框图;
42.图8示出了本技术一示例性实施例示出的计算机设备的结构框图。
具体实施方式
43.下面将结合附图对本技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例,下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
44.应理解,在本技术的实施例中提到的“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,a指示b,可以表示a直接指示b,例如b可以通过a获取;也可以表示a间接指示b,例如a指示c,b可以通过c获取;还可以表示a和b之间具有关联关系。
45.在本技术实施例的描述中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
46.本技术实施例中,“预定义”可以通过在设备(例如,包括终端设备和网络设备)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本技术对于其具体的实现方式不做限定。
47.在对本技术所示的各个实施例进行说明之前,首先对本技术涉及到的几个概念进行介绍。
48.1)云技术
49.云技术(cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
50.2)云计算
51.云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。
52.3)kubernetes
53.kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效,kubernetes提供了应用部署,规划,更新,维护的一种机制。kubernetes的一个核心特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。
54.图1是根据一示例性实施例示出的一种应用实例控制系统的结构示意图。该系统包括终端120以及云服务器110。
55.可选的,该终端120可以通过api(application programming interface,应用程序接口)向该云服务器110调用第一应用实例,以实现第一应用实例对应的数据处理功能。
56.可选的,该云服务器110可以根据终端120发送的,与第一应用实例对应的api调用请求,对终端120发送的数据进行处理,并将结果返回至终端120中。
57.可选的,该云服务器110中包含有云存储模块以及云处理模块,该云存储模块也可以视为云数据库,该云数据库中包含有虚拟机项目信息以及容器项目信息,当云处理模块需要根据k8s中存在的第一实例信息,构建第一应用实例时,可以根据第一实例信息对应的实例类型,确定该第一应用信息的类型是虚拟机还是容器,并从云数据库中对应拉取对应的镜像文件,以构建第一应用实例。
58.可选的,该终端可以是具有数据处理功能以及数据存储功能的终端设备,该终端可以包括一个终端,也可以包括多个终端,本技术实施例对该终端的数量不设限制。该终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等具有数据处理器以及数据存储组件的终端设备,但不局限于此。
59.可选的,该云服务器可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础运计算服务的云服务器。
60.可选的,该云服务器110与该终端120之间可以通过通信网络相连。可选的,该通信网络可以是有线网络或无线网络。
61.可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网,但也可以是其他任何网络,包括但不限于局域网、城域网、广域网、移动、有限或无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言、可扩展标记语言等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层、传输层安全、虚拟专用网络、网际协议安全等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
62.图2是根据一示例性实施例示出的一种应用实例控制方法的方法流程图。该方法由云服务器执行,例如,如图1中所示的云服务器110。如图2所示,该用于应用实例控制方法可以包括如下步骤:
63.步骤201,获取第一实例信息。
64.其中,该第一实例信息中包含用于构建应用实例的应用数据。
65.例如,该应用数据可以包括类型信息,该类型信息用于指示该第一实例信息被允许构建的实例类型。
66.在一种可能的实现方式中,该第一实例信息包括spec定义字段;
67.当该第一实例信息对应的第一应用实例包括虚拟机类型的应用实例时,该spec定义字段包括registrydisk;当该第一实例信息对应的第一应用实例包括容器类型的应用实例时,该spec定义字段包括runtimeclassname。
68.该第一实例信息可以是k8s构建的自定义资源crd,该自定义资源crd的关键部分是要定义需要构建资源的种类kind,当需要构建虚拟机类型的应用实例时,该第一实例信息中的spec定义字段可以包含registrydisk,以便k8s通过registrydisk实现与虚拟机对应的各种功能(如构建虚拟机类型的实例);当需要构建容器类型的应用实例时,该第一实例信息中的spec定义字段可以包含runtimeclassname,以便k8s通过runtimeclassname实现与容器对应的各种功能。
69.步骤202,根据该第一实例信息对应的实例类型,构建第一应用实例。
70.其中,该实例类型包括虚拟机以及容器中的至少一者。
71.可选的,该第一实例信息可以是一个实例信息,也可以是多个实例信息。当该第一实例信息是一个实例信息时,该第一实例信息中的实例类型可以是虚拟机或者容器中的一者。当该第一实例信息中的实例类型为虚拟机时,可以根据该第一实例信息对应的实例类型,构建基于虚拟机的第一应用实例;当该第一实例信息的实例类型为容器时,可以基于该第一实例信息对应的实例类型,构建基于容器的第一应用实例。
72.当该第一实例信息是多个实例信息时,该第一实例信息中可能包含多个实例信息分别对应的实例类型,当需要构建第一应用实例时,可以根据第一实例信息中,与该第一应用实例对应的类型信息,构建与实例类型对应的第一应用实例。例如,当该第一实例信息中包含两个实例信息时,且该两个实例信息对应的实例类型分别为虚拟机和容器,此时可以分别构建出两个实例信息分别对应的虚拟机类型的应用实例和容器类型的应用实例。
73.可选的,该第一实例信息对应的实例类型是根据第一实例信息中的spec定义字段确定的,当该第一实例信息的spec定义字段中包含registrydisk时,该第一实例信息对应的实例类型包含虚拟机类型;当该第一实例信息中的spec定义字段包括runtimeclassname时,该第一实例信息对应的实例类型为容器类型。
74.当该第一实例信息中的spec定义字段包含registrydisk,k8s调用registrydisk构建虚拟机类型的应用实例;当该第一实例信息中的spec定义字段包含runtimeclassname时,k8s调用runtimeclassname构建容器类型的应用实例。
75.步骤203,根据第一实例信息中的第一资源数据,以及该第一应用实例的运行状态,对该第一应用实例进行控制,以实现该第一应用实例的应用功能。
76.其中,该第一资源数据是与该第一应用实例对应的资源数据。
77.可选的,该第一资源数据可以用于指示该第一应用实例的运行状态,即第一应用实例的运行状态,需要与该第一实例信息中的第一资源数据对应,此时当第一实例信息中的第一资源数据发生变化时,该第一应用实例的运行状态也需要进行改变,从而实现通过第一实例信息对第一应用实例的运行状态的控制。
78.例如,该第一实例信息中的第一资源数据可以是电源信息power,当该电源数据power为off时(即crd中的power字段为off),则指示该第一应用实例的电源应处于关闭状态,当该电源数据power为on时(即crd中的power字段为on),则指示该第一应用实例的电源应处于开启状态。
79.当对第一实例信息中的第一资源数据进行修改,例如将电源信息power从off修改为on,则此时云服务器检测到第一实例信息中的电源信息power为on,但是第一应用实例的电源处于关闭状态时,此时则说明该第一实例信息中的第一资源数据与第一应用实例的运行状态(即电源状态)不对应,此时云服务器可以根据该电源信息power,将第一应用实例的电源状态更新为开启状态,从而实现第一实例信息对第一应用实例的运行状态的控制。
80.在一种可能的实现方式中,上述第一实例信息与第一应用实例的运行状态的对应关系,可以是通过k8s中的watch机制实现的。即k8s通过控制器watch第一应用实例的应用状态并存储至云服务器中,且k8s还通过控制器watch第一实例信息中的第一资源数据并存储至云服务器中,以确定第一资源数据是否与第一应用实例的应用状态是否对应,当不对应时,将两者中的至少一者进行更改,以便第一应用实例根据该第一实例信息进行运行,从而实现了通过第一实例信息对第一应用实例进行控制。
81.综上所述,在本技术实施例所示方案中,构建包含实例类型以及实例的资源数据的第一实例信息,并根据实例类型,确定构建的应用实例的类型是虚拟机还是容器,再根据第一实例信息中包含的与第一应用实例对应的资源数据,与第一应用实例在运行时的运行状态进行对应,以实现对第一应用实例的控制,因此,只需要通过对第一实例信息中的第一资源信息进行修改,就可以实现对两种不同类型中的任意一种类型的应用实例进行控制,并实现第一应用实例的应用功能,不需要对虚拟机和容器采用不同些控制系统进行操作,提高了对不同类型的应用实例的控制效率。
82.图3是根据一示例性实施例示出的一种应用实例控制方法的方法流程图。该方法由云服务器执行,该云服务器可以是如图1中所示的云服务器110。如图3所示,该用于应用实例控制方法可以包括如下步骤:
83.步骤301,获取第一实例信息。
84.可选的,该第一实例信息可以是k8s中的crd(custom resource definition,自定义资源),用户可以通过自定义设置crd,来管理根据crd构建的自定义对象。
85.步骤302,根据该第一实例信息对应的实例类型,构建第一应用实例;该实例类型包括虚拟机以及容器中的至少一者。
86.在一种可能的实现方式中,根据该第一实例信息对应的实例类型,获取该第一实例信息中的第一应用数据;根据该第一应用数据,构建该第一应用实例;该第一应用数据用于构建与该第一应用参数对应的实例类型的应用实例。
87.当获取到k8s中的crd后,云服务器可以读取该crd中包含的实例类型,再在crd中选择与实例类型对应的应用参数。例如,crd中可以包含定义类别字段vmclass,当vmclass
为virtualmachine时,则此时实例类型为虚拟机,当vmclass为kata container时,则此时实例类型为安全容器(该安全容器即为容器类型中的一种)。
88.当实例类型为虚拟机时,则该第一应用数据可以是该虚拟机对应的镜像文件信息,例如该虚拟机镜像文件的名称,存储位置等;当实例类型为安全容器时,则该第一应用数据可以是该安全容器对应的镜像文件信息,例如该安全容器的镜像文件的名称,存储位置等。
89.为了确保k8s可以根据crd构建出对应的容器类型的应用实例或虚拟机类型的应用实例,该k8s对应的目标云数据库中包含虚拟机镜像以及容器镜像中的至少一者。
90.当目标云数据库中包含虚拟机镜像时,用户可以根据在k8s中创建的crd,实现建立虚拟机类型的应用实例;当目标云数据库中包含容器镜像时,该云服务器可以根据在k8s中创建的crd,实现建立容器类型的应用实例。当目标云数据库中包含虚拟机镜像以及容器镜像时,此时云服务器可以根据在k8s中创建的crd,选择建立虚拟机类型的应用实例与容器类型的应用实例中的至少一者。
91.其中,上述第一应用数据,可以是预先存储于该k8s对应的目标云数据库中的,也可以是在建立crd之前,或建立crd的过程中,用户通过k8s的相应操作,存储入该目标云数据库中的。
92.步骤303,获取该第一实例信息中的第一资源数据,以及该第一应用实例对应的运行状态。
93.在k8s中存在控制器的机制,控制器的工作是确保对于任何给定的对实例,其实际的工作状态,都可以与实例的期望工作状态相匹配。因此k8s中实际包含有watch(检测)机制,即k8s可以对实例的状态进行监控,以保证应用实例可以正常运行。
94.在本技术实施例的一种可能的实现方式中,为了保证第一应用实例按照第一实例信息的指示正常运行,根据k8s中的watch机制,获取该第一实例信息中的第一资源数据,以及该第一应用实例对应的运行状态。
95.例如,该第一实例信息中的第一资源数据,可以是保存在该云服务器中的目标云数据库中的,此时该云服务器可以按照一定频率,对该第一资源数据的更新状态进行判断,以获取该第一资源数据的实时状态;而对于第一应用实例对应的运行状态,该云服务器可以通过指定命令,获取该第一应用实例对应的运行状态,并存储在该目标云数据库中。
96.例如,第一应用实例为虚拟机时,当第一实例信息中的第一资源数据用于指示电源状态时,此时云服务器可以读取该第一实例信息对应的第一资源数据(即云数据库中yaml文件中的power字段)。当power为off时,说明此时第一资源数据对应的电源状态为关闭;云服务器还可以通过虚拟机对应的kubevirt获取到虚拟机的电源状态(如通过kubectl get virtualmachine获得虚拟机的电源状态),并将该第一应用实例的电源状态存储至云数据库中,以实现对第一应用实例的运行状态的实时获取。
97.步骤304,当检测到该第一资源数据与该第一应用实例的运行状态不对应时,对该第一资源数据以及该第一应用实例的运行状态中的一者进行更新,以实现对该第一应用实例的控制。
98.当检测到该第一资源数据与该第一应用实例的运行状态不对应时,说明该第一应用实例的实际流程与该第一资源数据设定的运行流程之间已经存在差异。因此为了保证通
过根据第一实例信息控制该第一应用实例,需要将该第一实例信息中的第一资源数据与该第一应用实例的运行状态进一步对应。
99.在一种可能的实现方式中,当检测到该第一资源数据与该第一应用实例运行状态不对应时,根据第一资源数据与该第一应用实例分别对应的更新时间,对该第一资源数据以及该第一应用实例的运行状态中的一者进行更新。
100.当第一资源数据与该第一应用实例的运行状态不对应时,可能是第一资源数据由于人为或者预先设定的程序的原因发生了变化,也有可能是第一应用实例在运行过程中,处理其他终端的数据后,运行状态发生了变化。当第一资源数据的变化,与该第一应用实例的运行状态的变化,都被认为是根据第一实例信息对第一应用实例的正常控制流程范围内时,此时可以根据该第一资源数据与该第一应用实例分别对应的更新时间,对该第一资源数据以及该第一应用实例的运行状态中的一者进行更新。
101.在一种可能的实现方式中,当该第一资源数据的更新时间点后于该第一应用实例的运行状态的更新时间点时,根据该第一资源数据,更新该第一应用实例的运行状态;
102.或者,当该第一资源数据的更新时间点先于该第一应用实例的运行状态的更新时间点时,根据该第一应用实例的运行状态,更新该第一资源数据。
103.即为了保证第一资源数据与该第一应用实例的运行状态之间的对应关系,当第一资源数据与该第一应用实例的运行状态中的任意一者发生变化时,另一者都可以根据先变化的一者而变化,从而实现在绝大部分时间内,该第一资源数据都可以与该第一应用实例的运行状态相对应。
104.请参考图4,其示出了本技术实施例涉及的一种数据对应方法示意图。如图4所示,当根据第一实例信息410,构建出与该第一实例信息410对应的第一应用实例420后,该第一实例信息与该第一应用实例都可能发生变化。例如,在t2时刻,第一实例信息中的第一资源数据通过用户或k8s中的预设程序修改,导致k8s对应的云处理模块的本地数据库中存储的第一资源数据更新。此时云数据库400根据api server的watch机制,检测到第一资源数据发生了变化,将更新后的该第一资源数据上传至云数据库,并对云数据库中存储的第一资源数据进行更新。此时云数据库中存储的第一资源数据,即为t2时刻更新的第一资源数据。
105.同理,在t1时刻时,当第一应用实例的应用状态,由于应用实例的运行流程,或是接受到控制代码后发生变化,此时第一应用实例对应的云处理模块的本地数据库中,存储的第一应用实例的运行状态也发生改变。此时云数据库400根据api server的watch机制,检测到第一应用实例的运行状态发生了变化,将更新后的第一应用实例的运行状态上传至云数据库,并对云数据库中存储的第一应用实例的应用状态进行更新。此时云数据库中存储的应用状态,即为t2时刻更新的第一资源数据。
106.当云数据库400检测到第一资源数据,与该第一应用实例420的运行状态不对应时(例如第一资源数据指示运行第一应用实例运行于待机状态,而第一应用实例的应用状态实际为正常工作状态),此时当第一应用实例的应用状态的更新时间t1,后于第一资源数据的更新时间t2时,则说明该第一应用实例的应用状态,是在基于第一资源数据更新后再次更新的,第一应用实例的应用状态可以指示第一应用实例的最新状态,此时可以根据第一应用实例的应用状态,更新第一资源数据,以便告知用户,该第一应用实例410的状态已经更新。
107.而当第一资源数据的更新时间t2,后于第一应用实例的应用状态的更新时间t1,则说明该第一资源数据的在基于第一应用实例的应用状态更新后,还发生了状态的变化,因此该第一资源数据的时效性更强,此时第一应用实例的应用状态需要根据第一资源数据的变化而变化,以符合第一实例信息对第一应用实例的实时控制。
108.在一种可能的实现方式中,当检测到该第一资源数据与该第一应用实例的运行状态不对应时,获取该第一资源数据与该第一应用实例的运行状态中,具有差异的数据的数据类型;根据该差异数据的数据类型,对该第一资源数据与该第一应用实例的运行状态中的至少一者进行更新。
109.当第一资源数据与该第一应用实例的运行状态不对应时,可以先获取该第一资源数据与该第一应用实例的运行状态中的具有差异的数据,此时该具有差异的数据即为该第一资源数据与该第一应用实例的运行状态不对应的数据,根据该具有差异的数据的数据类型,确定对第一资源数据或该第一应用实例的运行状态进行更新。
110.在一种可能的实现方式中,当该具有差异的数据的数据类型为可变更数据时,根据该具有差异的数据在第一资源数据中的更新时间点,与该具有差异的数据在第一应用实例的运行状态中的更新时间点,对该第一资源数据与该第一应用实例的运行状态中的至少一者进行更新。
111.该可变更数据可以指的是该第一应用实例的运行状态中的非必要数据,即该可变更数据的改变不会影响该第一应用实例的正常运行(例如该可变更数据可以是该第一应用实例在云数据库中的数据记录,当该第一应用实例在数据库中的数据记录变化后,该第一应用实例仍可以正常运行),即当该具有差异的数据的数据类型为可变更数据时,则对于该可变更数据,可以在第一资源数据与该第一应用实例的运行状态中,最近更新的一方所更新获得的数据,对另一方未更新的数据进行更新,以实现第一资源数据与该第一应用实例的运行状态之间相对应。
112.在一种可能的实现方式中,当该具有差异的数据的数据类型为不可变更数据时,根据该具有差异的数据在第一资源数据中对应的数据,对该第一应用实例的运行状态进行更新。
113.该不可变更数据指的是该第一应用实例的运行状态中的必要数据。当该具有差异的数据的数据类型为不可变更数据时(如应用实例的电源状态),当该应用实例的电源被设定为关,且该第一资源数据中的电源状态为开时,该应用实例实际上无法正常工作,且违背了第一资源数据中指示的电源状态,因此需要根据该第一资源数据中的电源状态信息,更新该第一应用实例中的运行状态。
114.在一种可能的实现方式中,当检测到该第一应用实例不存在时,根据该第一资源数据指示的第一应用实例的运行状态,重建该第一应用实例。
115.可选的,该第一应用实例不存在的情况,可以是当创建crd后,k8s中的watch机制检测到还未构建与该crd对应的资源(即应用实例);也可以是当第一应用实例被删除后,检测到的该第一应用实例不存在。此时,可以根据该第一资源数据指示的该第一应用实例的运行状态,重建该第一应用实例。
116.可选的,当检测到该第一应用实例对应的第一实例数据不存在时,删除该第一应用实例。
117.即当k8s中的watch机制,检测到crd被删除后,则此时根据crd构建的应用实例也应该被相应删除,从而实现用户通过控制crd的创建、更新、删除,可以实现对包含容器类型和虚拟机类型中至少一类的应用实例的创建、更新以及删除。
118.在一种可能的实现方式中,该第一实例信息以及该第一应用实例存储于目标云数据库;该目标云数据库中包含虚拟机镜像以及容器镜像中的至少一者。
119.上述第一实例信息,以及第一应用实例,都可以存储于云服务器中的目标云数据库,且该目标云数据库中还包含虚拟机镜像以及容器镜像中的至少一者,以便分别实现容器类型的第一应用实例以及虚拟机类型的第一应用实例的构建。
120.在一种可能的实现方式中,该云数据库中还保存有第二实例信息,以及根据第二实例信息构建的第二应用实例。
121.即该云服务器中可以存储有多个实例信息,k8s可以分别根据各个实例信息,构建对应的应用实例,用户通过对包括第一实例信息、第二实例信息在内的各个实例信息进行修改,就可以实现对多个应用实例的控制。且当上述多个应用实例可以同时包含虚拟机类型的实例和容器类型的实例,即上述方案可以通过实例信息的改变,实现对不同类型的实例类型的控制。
122.在一种可能的实现方式中,从该目标云数据库中获取该第一实例信息,并存储至本地数据库中;当接收到对该第一实例信息的读取操作时,从该本地数据库中读取该第一资源数据。
123.当云服务器中的云处理模块运行k8s时,需要获取目标云数据库中的第一资源数据,并根据该第一资源数据进行第一应用实例的重建等操作,此时该第一资源数据也可以存储在该云处理模块对应的本地数据库中。当接收到对该第一实例信息的读取操作时,直接从本地数据库中读取该第一资源数据。
124.在一种可能的实现方式中,当接收到对该第一实例信息的更新操作时,将该第一实例信息传输至该目标云数据库,以便对该目标云数据库中的第一实例信息进行更新;或者,当接收到对该第一实例信息的更新操作时,获取该目标云数据库中的已更新的第一实例信息。
125.即当对第一实例信息进行读取操作时,可以直接读取本地数据库中存储的第一实例信息,当涉及到本地数据库与该目标云数据库之间的更新操作时,才对云数据库进行访问,降低了对云数据库的访问频率,减小了云数据库的访问压力。
126.同理,在一种可能的实现方式中,当接收到对该第一应用实例的运行状态的读取操作时,从该本地数据库中读取该第一应用实例的运行状态;当接收到对该第一应用实例的运行状态的更新操作时,将该第一应用实例的运行状态上传至该目标云服务器;或者当接收到该第一应用实例的运行状态的更新操作时,根据该目标云服务器中存储的第一应用实例的运行状态更新至该本地服务器。
127.即当对第一应用实例的运行状态进行读取时,可以直接读取存储在本地服务器的数据,当需要将目标云数据库与本地数据库之间的数据进行更新的过程,才需要访问目标云数据库,降低了对云数据库的访问频率,减小了云数据库的访问压力。
128.请参考图5,其示出了本技术实施例涉及的一种实例应用框架示意图。如图5所示,当通过k8s构建负载自定义资源(即第一实例信息)后,k8s通过api server的watch机制,检
测是否存在与负载自定义资源对应的应用实例,当不存在与负载自定义资源501对应的应用实例时,k8s根据负载自定义资源501构建与该负载自定义资源501中的类别数据对应的应用实例,例如可以是构建于虚拟机502上的虚拟机实例,或构建于安全容器503上的容器实例。
129.当云服务器中存在构建于虚拟机502上的虚拟机实例,或存在构建于安全容器503上的容器实例后,api server同样可以分别对虚拟机502以及安全容器503采取watch机制,以便将负载自定义资源与虚拟机实例对应,或者将负载自定义资源与容器实例对应。
130.而对于用于进行数据处理的云处理模块504而言,其对应的本地存储模块,也可以根据api server的watch机制,实现与云数据库上的数据对应,保证该云处理模块504的数据处理的准确性。
131.综上所述,在本技术实施例所示方案中,构建包含实例类型以及实例的资源数据的第一实例信息,并根据实例类型,确定构建的应用实例的类型是虚拟机还是容器,再根据第一实例信息中包含的与第一应用实例对应的资源数据,与第一应用实例在运行时的运行状态进行对应,以实现对第一应用实例的控制,因此,只需要通过对第一实例信息中的第一资源信息进行修改,就可以实现对两种不同类型中的任意一种类型的应用实例进行控制,并实现第一应用实例的应用功能,不需要对虚拟机和容器采用不同些控制系统进行操作,提高了对不同类型的应用实例的控制效率。
132.图6是根据一示例性实施例示出的一种应用实例控制方法的流程框图,该方法可以由图1所示的应用实例控制系统中的终端120以及云服务器110执行。如图6所示,该应用实例控制方法可以包括如下步骤。
133.1.构建负载自定义资源601(workload crd,即所述第一实例信息)。
134.负载自定义资源601的关键部分是要定义kind,因为要兼容virtualmachine和katacontainer两种运行模式,需要定义类别字段vmclass。对于virtualmachine,spec定义字段包括registrydisk,也就是qcow2格式包含操作系统的虚拟机镜像打成的docker images。对于kata container,spec字段需要包含runtimeclassname
135.2.建立负载自定义资源601与虚拟机实例602和安全容器实例603之间的映射关系。
136.通过负载自定义资源601创建工作负载实例后,会生成虚拟机实例602或者是安全容器实例603,即所述第一应用实例,实例类型包括这里所述的虚拟机实例和安全容器实例。由于后两种对象本身也有控制器,当状态改变的时候,负载自定义资源601也必须要同步更新。负载自定义资源601与虚拟机实例602要实现双向的同步,负载自定义资源601与安全容器实例603也要实现双向的状态同步。
137.3.workload controller控制器实现逻辑。
138.控制器(即所述控制模块)的工作是确保对于任何给定的对象,对象所处环境的实际状态(包括集群状态,以及潜在的外部状态,如kubelet的运行容器或云提供商的负载均衡器)与对象中的期望状态相匹配。
139.控制器可以实现负载自定义资源601与应用实例的匹配方法,该方法中控制器不断的watch实例信息和应用实例资源的状态,然后根据状态的不同去实现各种操作逻辑。
140.3.1.实例创建
141.判断负载自定义资源601是否存在,不存在,则根据vmclass直接创建新的资源,虚拟机实例602或者是安全容器实例603,当新的资源创建出来后,对于虚拟机来说,kubevirt virt

controller组件会监听到新增资源的event,进而创建包含指定操作系统的kvm实例。如果是vmclass指定的是katacontainer,则使用runtimeclassname指定的运行时类型创建kata容器。
142.3.2.实例更新
143.也可能发生在虚拟机实例602或者安全容器实例603上。workload controller需要有四个对应的子过程(即根据虚拟机实例的运行状态更新crd、根据容器实例的运行状态更新crd、根据crd更新虚拟机实例的运行状态、根据crd更新容器实例的运行状态),当每一个对象状态变化,要去更新相应的status字段。spec字段包含对象的详细定义,kubvirt有部分功能不支持,比如snapshot,要在这里屏蔽。
144.3.3.实例删除
145.资源的数量在本地已经apiserver中都有存储,任意一方的实例的增减都需要对方感知到,所以要利用kubernetes的watch机制,自定义handler处理函数,维护etcd对象的一致性,以及本地缓存key

value内容的刷新。
146.4.缓存调用
147.kube client客户端访问api server(即云数据库)获取信息,要连接后端的etcd,以及认证等环节,成本是比较高的。根据rbac的定义,本地可以缓存kubernetes集群范围内需要的对象,对于更新操作,调用kube client连接api server,对于get/list类的操作,读取本地的缓存即可。
148.5.finalizers
149.finalizers允许控制器实现异步pre

delete hook。api类型的每个对象创建了一个外部资源(例如存储桶),并且想要从kubernetes中删除对象同时删除关联的外部资源,则可以使用finalizers来实现。
150.图7是根据一示例性实施例示出的一种应用实例控制装置的结构方框图。该应用实例控制装置包括:
151.第一实例信息获取模块701,用于获取第一实例信息;
152.第一实例构建模块702,用于根据所述第一实例信息对应的实例类型,构建第一应用实例;所述实例类型包括虚拟机以及容器中的至少一者;
153.控制模块703,用于根据第一实例信息中的第一资源数据,以及所述第一应用实例的运行状态,对所述第一应用实例进行控制,以实现所述第一应用实例的应用功能;所述第一资源数据是与所述第一应用实例对应的资源数据。
154.在一种可能的实现方式中,所述控制模块,包括:
155.第一资源获取单元,用于获取所述第一实例信息中的第一资源数据,以及所述第一应用实例对应的运行状态;
156.运行状态更新单元,用于当检测到所述第一资源数据与所述第一应用实例的运行状态不对应时,对所述第一资源数据以及所述第一应用实例的运行状态中的一者进行更新,以实现对所述第一应用实例的控制。
157.在一种可能的实现方式中,所述运行状态更新单元,还用于,
158.当所述第一资源数据的更新时间点后于所述第一应用实例的运行状态的更新时间点时,根据所述第一资源数据,更新所述第一应用实例的运行状态;
159.或者,当所述第一资源数据的更新时间点先于所述第一应用实例的运行状态的更新时间点时,根据所述第一应用实例的运行状态,更新所述第一资源数据。
160.在一种可能的实现方式中,所述第一实例控制模块,还包括:
161.第一实例删除单元,用于当检测到所述第一实例信息中的第一资源数据被删除,对应删除所述第一应用实例。
162.在一种可能的实现方式中,所述第一实例信息以及所述第一应用实例存储于目标云数据库;所述目标云数据库中包含虚拟机镜像以及容器镜像中的至少一者。
163.在一种可能的实现方式中,所述装置还包括:
164.本地资源存储模块,用于从所述目标云数据库中获取所述第一实例信息,并存储至本地数据库中;
165.本地资源读取模块,用于当接收到对所述第一实例信息的读取操作时,从所述本地数据库中读取所述第一资源数据。
166.在一种可能的实现方式中,所述第一实例信息包括spec定义字段;
167.当所述第一实例信息对应的第一应用实例包括虚拟机类型的应用实例时,所述spec定义字段包括registrydisk;
168.当所述第一实例信息对应的第一应用实例包括容器类型的应用实例时,所述spec定义字段包括runtimeclassname。
169.综上所述,在本技术实施例所示方案中,构建包含实例类型以及实例的资源数据的第一实例信息,并根据实例类型,确定构建的应用实例的类型是虚拟机还是容器,再根据第一实例信息中包含的与第一应用实例对应的资源数据,与第一应用实例在运行时的运行状态进行对应,以实现对第一应用实例的控制,因此,只需要通过对第一实例信息中的第一资源信息进行修改,就可以实现对两种不同类型中的任意一种类型的应用实例进行控制,并实现第一应用实例的应用功能,不需要对虚拟机和容器采用不同些控制系统进行操作,提高了对不同类型的应用实例的控制效率。
170.图8示出了本技术一示例性实施例示出的计算机设备800的结构框图。该计算机设备可以实现为本技术上述方案中的终端或服务器。所述计算机设备800包括中央处理单元(central processing unit,cpu)801、包括随机存取存储器(random access memory,ram)802和只读存储器(read

only memory,rom)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述计算机设备800还包括用于存储操作系统809、应用程序810和其他程序模块811的大容量存储设备806。
171.所述大容量存储设备806通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备806及其相关联的计算机可读介质为计算机设备800提供非易失性存储。也就是说,所述大容量存储设备806可以包括诸如硬盘或者只读光盘(compact disc read

only memory,cd

rom)驱动器之类的计算机可读介质(未示出)。
172.不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的
任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、可擦除可编程只读寄存器(erasable programmable read only memory,eprom)、电子抹除式可复写只读存储器(electrically

erasable programmable read

only memory,eeprom)闪存或其他固态存储其技术,cd

rom、数字多功能光盘(digital versatile disc,dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备806可以统称为存储器。
173.根据本公开的各种实施例,所述计算机设备800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备800可以通过连接在所述系统总线805上的网络接口单元807连接到网络808,或者说,也可以使用网络接口单元807来连接到其他类型的网络或远程计算机系统(未示出)。
174.所述存储器还包括至少一条计算机程序,所述至少一条计算机程序存储于存储器中,中央处理器801通过执行该至少一条计算机程序来实现上述各个实施例所示的方法中的全部或部分步骤。
175.在一示例性实施例中,还提供了一种计算机可读存储介质,用于存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现上述方法中的全部或部分步骤。例如,该计算机可读存储介质可以是只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact disc read

only memory,cd

rom)、磁带、软盘和光数据存储设备等。
176.在一示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2、图3与图6任一实施例所示方法的全部或部分步骤。
177.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求指出。
178.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜