CN114675940A - 应用实例构建方法、装置和设备 - Google Patents
应用实例构建方法、装置和设备 Download PDFInfo
- Publication number
- CN114675940A CN114675940A CN202210461226.6A CN202210461226A CN114675940A CN 114675940 A CN114675940 A CN 114675940A CN 202210461226 A CN202210461226 A CN 202210461226A CN 114675940 A CN114675940 A CN 114675940A
- Authority
- CN
- China
- Prior art keywords
- instance
- virtual machine
- container
- target
- definition block
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供的一种应用实例构建方法、装置和设备,可用于云计算技术领域或其他领域,通过获取包括按照相同机制定义的虚拟机运行定义块和容器运行定义块的第一实例信息;根据第一实例信息中的虚拟机运行定义块创建目标虚拟机实例;根据第一实例信息中的容器运行定义块创建目标容器实例;生成目标虚拟机实例与目标容器实例之间的映射关系;根据映射关系构建包含目标虚拟机实例和目标容器实例的应用实例。由于利用自定义资源对象,不但在同一模板下对容器实例和虚拟机实例进行统一调度,且实现了容器实例和虚拟机实例在工作节点上的亲和性管理。
Description
技术领域
本申请涉及云计算技术,尤其涉及一种应用实例构建方法、装置和设备。
背景技术
随着容器技术的发展与推广,大部分无状态业务都开始容器化部署,尽管虚拟机的使用被相对压缩,但目前许多业务场景下虚拟机的作用仍不可替代,所以未来虚拟机还会长期存在。
目前,在分布式***中需要同时使用容器和虚拟机来运行应用实例时,使用虚拟机专用调度***(例如“Openstack”虚拟机调度***)来创建和调度虚拟机实例,使用容器专用调度***(例如“Kubernetes”容器调度***)来创建和调度容器实例。
随着分布式***的发展,分布式***越来越复杂,分布式***中各个组件的管理和调度也越来越复杂。
因此,如何降低分布式***的管理和调度复杂度,成为亟待解决的问题。
发明内容
本申请提供一种应用实例构建方法、装置和设备,用以解决现有技术中容器与虚拟机无法统一编排调度的技术问题。
第一方面,本申请提供一种应用实例构建方法,包括:获取第一实例信息,第一实例信息包括虚拟机运行定义块和容器运行定义块,虚拟机运行定义块和容器运行定义块中的内容是按照相同的机制定义的;根据第一实例信息中的虚拟机运行定义块创建目标虚拟机实例;根据第一实例信息中的容器运行定义块创建目标容器实例;生成目标虚拟机实例与目标容器实例之间的映射关系;根据映射关系构建包含目标虚拟机实例和目标容器实例的应用实例。
本申请提供的应用实例构建方法,通过自定义一个包含虚拟机定义模板和容器定义模板的自定义资源对象,实现虚拟机和容器在同一模板下的编排调度管理,有效减少运维的成本,降低了***的对容器和虚拟机进行调度管理的复杂度,且可在同一模板下对容器和虚拟机的进行亲和性配置,让虚拟机和容器间形成对应的映射关系,通过提升通信效率,有效提升应用服务响应的速率。
在一种可能实现的方式中,第一实例信息还包括第一副本数,第一副本数用于指示需要生成的虚拟机实例的第一数量;根据第一实例信息中的虚拟机运行定义块创建目标虚拟机实例,包括:根据第一实例信息中的虚拟机运行定义块创建第一数量的目标虚拟机实例。
本申请提供的应用实例构建方法,通过预先定义的副本数,生成与副本数相同的虚拟机实例,其中一个虚拟机实例在被使用时,可调用其他的空闲的虚拟机实例提供服务,实现应用的负载均衡,提升应用服务的反应效率。
在一种可能实现的方式中,虚拟机运行定义块包括第一亲和性配置信息,第一亲和性配置信息用于指示多个工作节点;相应地,第一数量的目标虚拟机实例中至少两个目标虚拟机实例部署在多个工作节点中不同的工作节点上。
本申请提供的应用实例构建方法,通过设定亲和性配置信息实现对生成的多个虚拟机实例的亲和性管理。当不使用这种亲和性配置时,多个虚拟机实例可能会部署在同一工作节点中,当这一个工作节点出现故障时,会导致运行在该节点的多个虚拟机实例均无法提供服务。因此,通过第一亲和性配置信息将生产的多个虚拟机实例分布在不同的工作节点上进行部署,实现了应用的高可用性。
在一种可能实现的方式中,第一实例信息还包括第二副本数,第二副本数用于指示需要生成的容器实例的第二数量;根据第一实例信息中的容器运行定义块创建目标容器实例,包括:根据第一实例信息中的容器运行定义块创建第二数量的目标容器实例。
本申请提供的应用实例构建方法,通过预先定义的副本数,生成与副本数相同的容器实例,其中一个容器实例在被使用时,可调用其他的空闲的容器实例提供服务,实现应用的负载均衡,提升应用服务的反应效率。
在一种可能实现的方式中,容器运行定义块包括第二亲和性配置信息,第二亲和性配置信息用于指示多个工作节点;相应地,第二数量的目标容器实例中至少两个目标容器实例部署在多个工作节点中不同的工作节点上。
本申请提供的应用实例构建方法,通过设定亲和性配置信息实现对生成的多个容器实例的亲和性管理。当不使用这种亲和性配置时,多个容器实例可能会部署在同一工作节点中,当这一个工作节点出现故障时,会导致运行在该节点的多个容器实例均无法提供服务。因此,通过第一亲和性配置信息将生产的多个容器实例分布在不同的工作节点上进行部署,实现了应用的高可用性。
在一种可能实现的方式中,第一实例信息中还包括第三亲和性配置信息,第三亲和性配置信息用于指示目标虚拟机实例或目标容器实例所在的工作节点;相应地,目标虚拟机实例与目标容器实例根据第三亲和性配置信息,部署在同一工作节点上。
本申请提供的应用实例构建方法,通过设定亲和性配置信息实现虚拟机实例和容器实例在同一节点的部署。当虚拟机实例和容器实例部署在同一工作节点时,可以利用该工作节点本身的通信通道进行高速通信,有效避免当网络通信存在故障或延迟带来的掉线问题,提升通信稳定性和速率,能够进一步提升应用服务的瞬时反应速度。
第二方面,本申请提供一种应用实例构建装置,包括:获取模块:用于获取第一实例信息,第一实例信息包括虚拟机运行定义块和容器运行定义块,虚拟机运行定义块和容器运行定义块中的内容是按照相同的机制定义的;虚拟机创建模块:用于根据第一实例信息中的虚拟机运行定义块创建目标虚拟机实例;容器创建模块:用于根据第一实例信息中的容器运行定义块创建目标容器实例;构建模块:生成目标虚拟机实例与目标容器实例之间的映射关系;根据映射关系构建包含目标虚拟机实例和目标容器实例的应用实例。
第三方面,本申请提供一种电子设备,包括:处理器,以及与处理器通信连接的存储器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,以实现第一方面的应用实例构建方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现第一方面的应用实例构方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面的应用实例构方法。
本申请提供的一种应用实例构建方法、装置和设备,通过获取包括按照相同机制定义的虚拟机运行定义块和容器运行定义块的第一实例信息;根据第一实例信息中的虚拟机运行定义块创建目标虚拟机实例;根据第一实例信息中的容器运行定义块创建目标容器实例;生成目标虚拟机实例与目标容器实例之间的映射关系;根据映射关系构建包含目标虚拟机实例和目标容器实例的应用实例。由于利用自定义资源对象,不但在同一模板下对容器实例和虚拟机实例进行统一调度,且实现了容器实例和虚拟机实例在工作节点上的亲和性管理。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请一实施例提供的应用实例构建方法的场景示意图;
图2为本申请一实施例提供的应用实例构建方法的流程示意图;
图3为本申请一实施例提供的虚拟机实例构建的架构示意图;
图4为本申请一实施例提供的应用实例实现的原理示意图;
图5为本申请一实施例提供的应用实例构建装置的结构示意图;
图6为本申请一实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在对本申请所示的各个实施例进行说明之前,首先对本申请涉及到的概念进行介绍。
1)“Kubernetes”
“Kubernetes”,简称“K8s”,是一个开源的,用于管理云平台中多个主机上的容器化的应用,“Kubernetes”的目标是让部署容器化的应用简单并且高效,“Kubernetes”提供了应用部署、规划、更新、维护的一种机制。
2)自定义资源定义(custom resource definition,CRD)
CRD是“Kubernetes”的一种资源,允许用户自定义新的资源类型。“CRD”允许用户基于已有的“Kubernetes”资源,例如“Deployment”、“Configmap”等,拓展集群能力,也可以自定义一套成体系的规范。
3)应用程序接口服务(Application Programming Interface Serve r)
应用程序接口服务简称“API Server”,作为“Kubernetes”集群的核心,负责集群各功能模块之间的通信,集群内各个功能模块通过“API Server”将信息存入“etcd”,当需要获取和操作这些数据时,通过“API Server”提供的“REST”接口通过“GET”/“LIST”/“WATCH”方法来实现,从而实现各模块之间的信息交互。
图1为本申请的实施例的一种应用场景的示意图。如图1所示场景,该应用实例构建的架构场景包括集群110、管理节点120、工作节点130、存储节点140、应用程序编程服务接口(API Server)150、容器160、命令行工具170、网页用户界面180、虚拟机190。
管理节点120中包括应用程序编程服务接口150,其是集群110的通信枢纽,通过应用程序编程服务接口150,集群110可以从命令行工具170或网页用户界面180中接收基于“Kubernetes”的“CRD”机制定义的第一实例信息,并将该信息存储至存储节点140中。当工作节点130获取到该信息后,根据该信息中的虚拟机运行定义块和容器运行定义块分别创建虚拟机实例190和容器实例160,两实例通过互相通信或调用共同实现应用服务。
可选地,集群110根据第一实例信息创建多个容器实例160和虚拟机实例190,该多个容器实例160可以通过反亲和性配置分散部署在不同的工作节点130上,该多个虚拟机实例190可以通过反亲和性配置分散部署在不同的工作节点130上。
可选地,上述的虚拟机实例190和容器实例160可以通过亲和性配置部署在同一工作节点中。
可选地,该命令行工具可以是“kubectl”,其是“Kubernetes”的命令行工具(CLI),是“Kubernetes”用户和管理员必备的管理工具。“kubectl”提供了大量的子命令,方便管理“Kubernetes”集群中的各种功能。例如,“kubectl–h”是查看子命令列表、“kubectloptions”是查看全局选项、“kubectl<command>--help”是查看子命令帮助、“kubectl[command][PARAMS]–o=<format>”是设置输出格式(如“json”、“yaml”、“jsonpath”等)、“kubectl explain[RESOURCE]”是查看资源的定义。
可选地,该网页用户界面可以是“Kubernetes dashboard”、“Rancher”或“Kuboard”中的至少一种。用户通过上述的网页用户界面能够直观便捷的管理集群。
可选地,该存储节点可以是分布式一致性键值存储***(etcd),其在“Kubernetes”中主要用于存储需要持久化的数据。
需要注意的是,本申请公开的一种应用实例构建方法、装置和设备可用于云计算技术领域。也可以用于除云计算技术领域以外的任何领域。本申请公开的一种应用实例构建方法、装置和设备应用领域不作限定。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请的实施例的一种应用实例构建方法的流程示意图。如图2所示,本申请的实施例的方法可以包括S210至S250。
该方法可以用于对图1所示的应用场景下进行应用实例的构建。本申请实施例可以由图1所示的工作节点执行。
S210,获取第一实例信息,第一实例信息包括虚拟机运行定义块和容器运行定义块,虚拟机运行定义块和容器运行定义块中的内容是按照相同的机制定义。
作为示例,虚拟机运行定义块可以包括内存、中央处理器(cpu)资源需求说明、挂载设备说明、挂载卷说明等一种或多种;其中挂载设备说明包括硬盘、网络接口等,其中挂载卷说明包括虚拟机镜像卷、数据卷等。容器运行定义块包括内存、中央处理器资源需求说明、挂载设备说明、挂载卷说明等。
可选地,虚拟机运行定义块和容器运行定义块根据“K8s”的“CRD”机制的要求进行自定义。
可选地,第一实例信息可以采用“Kubernetes webhook”规范进行配置。
可选地,第一实例信息可以包括副本数、命名空间、版本中至少一种。
在一种可能的实现方式中,工作节点获取到基于“Kubernetes”的“CRD”机制自定义的“UniCRD”对象,该“UniCRD”对象包括虚拟机运行定义块和容器运行定义块。工作节点基于“UniCRD”对象部署“UniCRD”控制器,该控制器用于实现定义虚拟机实例的第一定义模板和定义容器实例的第二定义模板的生成。其中,虚拟机运行定义块中可以不定义“pod”亲和性定义,容器运行定义块可以无需定义“pod”亲和性定义。
作为示例,如图3所示,集群300中可以包括管理节点310、工作节点320和命令行工具311。其中,管理节点310可以包括应用程序服务接口340、存储节点350、虚拟机控制器360;工作节点320可以包括“pod”组件330、虚拟机启动器380、虚拟机390,“pod”组件330中又可以包括虚拟机操作器370。
应用程序服务接口340接收到命令行工具311的自定义名称为“UniCRD”的包含虚拟机运行定义块的第一实例信息,并将其存储至存储节点350,虚拟机控制器360监听到存储节点350的第一实例信息后,获取该第一实例信息。
S220,根据第一实例信息中的虚拟机运行定义块创建目标虚拟机实例。
作为示例,根据第一实例信息中的虚拟机运行定义块创建目标虚拟机实例可以包括:根据第一实例信息中的虚拟机运行定义块生成用于定义虚拟机实例的第一定义模板,根据第一定义模板创建模板虚拟机实例。
作为示例,第一定义模板是根据“Kubernetes”的“CRD”机制进行定义的,用于生成虚拟机实例的自定义模板。此后,“Kubernetes”中的部署控制器会根据该自定义模板生成能够对虚拟机进行生命周期管理的相应的“pod”实例。
例如,该第一定义模板可以是包含“KubeVirt”定义配置的模板,也可以是包含“Virtlet”定义配置的模板。其中,“KubeVirt”和“Virtlet”是用于实现“Kubernetes”对虚拟机管理的项目。
可选地,该第一实例信息中包含副本数,根据虚拟机运行定义块生成的第一定义模板的数量等于该副本数。
在一种可能的实现方式中,“Kubernetes”的“UniCRD”控制器根据虚拟机运行定义块的内容生成包含“KubeVirt”定义配置的第一定义模板。
作为示例,如图3所示,虚拟机控制器360监听到存储节点350的第一实例信息后,根据“UniCRD”中的虚拟机运行定义块的信息生成第一定义模板,工作节点320根据虚拟机控制器360生成的第一定义模板创建虚拟机启动器380,当虚拟机控制器360监听到虚拟机启动器380完成创建后,更新存储节点350中“UniCRD”的状态信息,虚拟机操作器370监听到该状态信息的变化,向虚拟机启动器380传输虚拟机实例创建信号,虚拟机启动器380创建该虚拟机实例,并对该虚拟机实例的生命周期进行管理。
作为示例,根据第一定义模板创建的目标虚拟机实例可以运行“mySQL”数据库。
可选地,第一实例信息还可以包含要生成的第一定义模板的副本数。相应地,工作节点生成多个第一定义模板,这多个第一定义模板的数量等于第一实例信息中指示的副本数;根据该多个第一定义模板,创建多个目标虚拟机实例。
上述通过预先定义的副本数,生成与副本数相同的虚拟机实例,其中一个虚拟机实例在被使用时,可调用其他的空闲的虚拟机实例提供服务,实现应用的负载均衡,提升应用服务的反应效率。
可选地,第一定义模板中可以包含亲和性管理配置,在目标虚拟机实例的创建过程中给该实例附加标签,“Kubernetes”根据该附加的标签匹配具备对应附加标签的工作节点,实现多个目标虚拟机实例在不同工作节点的分散部署,工作节点可以部署在物理机或宿主机上。
例如,使用“Kubernetes”中预先自动随机生成的标签:“RandomA”,其中“RandomA”会随机生成多个不同的标签值,如1、2、3、4等,该标签的标签值可以附加在不同的多个工作节点上。与此同时,生成的多个目标虚拟机实例上附加随机生成的标签和标签值:“RandomB”,设定标签选择器的规则满足“RandomA=RandomB”时(“pod”强反亲和性配置),附加“RandomB”上各标签值的各目标虚拟机实例会运行在对应附加“RandomA”标签值的工作节点上,从而实现该目标虚拟机实例在不同工作节点上的部署运行。
上述通过设定亲和性配置信息实现对生成的多个虚拟机实例的亲和性管理。当不使用这种亲和性配置时,多个虚拟机实例可能会部署在同一工作节点中,当这一个工作节点出现故障时,会导致运行在该节点的多个虚拟机实例均无法提供服务。因此,通过第一亲和性配置信息将生产的多个虚拟机实例分布在不同的工作节点上进行部署,实现了应用的高可用性。
S230,根据第一实例信息中的容器运行定义块创建目标容器实例。
作为示例,根据第一实例信息中的容器运行定义块创建目标容器实例可以包括:根据第一实例信息中的容器运行定义块生成用于定义容器实例的第二定义模板,根据第二定义模板创建目标容器示例。
作为示例,该第二定义模板可以是“Deployment”,该“Deployment”用于定义“pod”组件的目标状态的信息,其中,“Kubernetes”中的“Deployment”控制器可以根据该目标状态的信息创建和/或更新“pod”组件。
可选地,该第一实例信息中包含副本数,根据容器运行定义块生成的第二定义模板的数量等于该副本数。
在一种可能的实现方式中,“Kubernetes”的“UniCRD”控制器根据容器运行定义块的内容生成为“Deployment”的第二定义模板。
作为示例,该目标容器实例为“pod”实例。
例如,根据第二定义模板创建的“pod”实例中可以运行“web”应用。
可选地,第一实例信息还可以包含要生成的第二定义模板的副本数。相应地,工作节点生成多个第二定义模板,这多个第二定义模板的数量等于第一实例信息中指示的副本数;根据该多个第二定义模板,创建多个目标容器实例。
上述通过预先定义的副本数,生成与副本数相同的容器实例,其中一个容器实例在被使用时,可调用其他的空闲的容器实例提供服务,实现应用的负载均衡,提升应用服务的反应效率。
可选地,第二定义模板中可以包含亲和性管理配置,在目标容器实例的创建过程中给该实例附加标签,“Kubernetes”根据该附加的标签匹配具备对应附加标签的工作节点,实现多个目标容器实例在不同工作节点的分散部署,工作节点可以部署在物理机或宿主机上。
例如,使用“Kubernetes”中预先自动随机生成的标签:“RandomA”,其中“RandomA”会随机生成多个不同的标签值,如1、2、3、4等,该标签的标签值可以附加在不同的多个工作节点上。与此同时,生成的多个目标容器实例上附加随机生成的标签和标签值:“RandomC”,设定标签选择器的规则满足“RandomA=RandomC”时(“pod”强反亲和性配置),附加“RandomC”上各标签值的各目标容器实例会运行在对应附加“RandomA”标签值的工作节点上,从而实现该目标容器实例在不同工作节点上的部署运行。其中,该示例所用的标签及其标签值可以复用上述S230所使用的“RandomA”标签。
上述通过设定亲和性配置信息实现对生成的多个容器实例的亲和性管理。当不使用这种亲和性配置时,多个容器实例可能会部署在同一工作节点中,当这一个工作节点出现故障时,会导致运行在该节点的多个容器实例均无法提供服务。因此,通过第一亲和性配置信息将生产的多个容器实例分布在不同的工作节点上进行部署,实现了应用的高可用性。
在一种可能的实现方式中,“Kubernetes”集群的“API Server”获取到“UniCRD”对象的信息,并基于该“UniCRD”部署“UniCRD”控制器;“UniCRD”控制器基于虚拟机运行定义块生成“Deployment”,“Deployment”控制器根据“Deployment”中定义的状态信息创建“pod”实例。
可以理解的是,S230创建目标虚拟机实例与S250创建目标容器实例的实行步骤顺序并不局限于本实施例所示,在实际的应用过程中,可以先根据第一定义模板创建目标虚拟机实例,也可以先根据第二定义模板创建目标容器实例,此外,还可以根据定义模板对目标虚拟机实例和目标容器实例同时进行创建。
S240,生成目标虚拟机实例与目标容器实例之间的映射关系。
作为示例,生成的目标虚拟机实例和目标容器实例可以通过标签的亲和性管理进行二者映射关系的配置。
例如,当根据上述S230示例中通过标签分散部署的方式实现目标虚拟机实例在各工作节点的部署后,若此时目标容器实例还未部署,新增目标容器实例的标签和标签值,该标签和标签值复用上述第一定义模板中的“RandomB”以及预先生成的“RandomA”,设定标签选择器的规则满足“RandomA=RandomB”时(“pod”亲和性配置),附加“RandomB”上各标签值的各目标容器实例会运行在对应附加“RandomA”标签值的工作节点上;而此时,该对应“RandomA”标签值的工作节点上已运行有目标虚拟机实例,因此,通过此种方式可以完成各目标虚拟机实例与各目标容器实例在工作节点上的对应部署。
又如,当根据上述S250示例中通过标签分散部署的方式实现目标容器实例在各工作节点的部署后,若此时目标虚拟机实例还未部署,新增目标虚拟机实例的标签和标签值,该标签和标签值复用上述第二定义模板中的“RandomC”以及预先生成的“RandomA”,设定标签选择器的规则满足“RandomA=RandomC”时(“pod”亲和性配置),附加“RandomC”上各标签值的各目标虚拟机实例会运行在对应附加“RandomA”标签值的工作节点上;而此时,该对应“RandomA”标签值的工作节点上已运行有目标容器实例,因此,通过此种方式可以完成各目标虚拟机实例与各目标容器实例在工作节点上的对应部署。
上述通过设定亲和性配置信息实现虚拟机实例和容器实例在同一节点的部署。当虚拟机实例和容器实例部署在同一工作节点时,可以利用该工作节点本身的通信通道进行高速通信,有效避免当网络通信存在故障或延迟带来的掉线问题,提升通信稳定性和速率,能够进一步提升应用服务的瞬时反应速度。
可以理解的是,对亲和性管理配置的定义不局限于上述顺序;可以在第一定义模板中进行定义,当容器实例创建完成后,虚拟机实例根据该亲和性管理配置与容器实例生成映射关系;也可以在第二定义模板中进行定义,当虚拟机实例创建完成后,容器实例根据该亲和性管理配置与虚拟机实例生成映射关系;此外,也可以在第一定义模板与第二定义模板中都进行亲和性管理配置的定义。
在一种可能的实现方式中,创建目标虚拟机实例时给其添加标签,创建目标容器实例时给其添加标签,当目标虚拟机实例的标签与目标容器实例的标签相对应时,会使得目标虚拟机实例与目标容器实例之间生成对应关系,并部署在就近的宿主机或物理机上。其中,可以在目标虚拟机实例和目标容器实例创建完成之后动态的添加或删除其标签。
S250,根据映射关系构建包含目标虚拟机实例和目标容器实例的应用实例。
例如,如图4所示,集群400中包括容器410、虚拟机420、应用430和数据库440。其中,应用410是“web”应用,数据库440是“mySQL”数据库。“web”业务的实现需要“web”应用和“mySQL”数据库等应用之间共同配合;“mySQL”数据库是单进程多线程设计的,在虚拟机上运行更有利于其性能的发挥;因此,将“web”应用运行在容器中,将“mySQL”数据库运行在虚拟机中,二者结合实现“web”业务的实现。
可以理解是,上述图4只是本实施例公开的一种应用场景,本方案的实施不限于上述场景。
在一种可能的实现方式中,云服务器中“Kubernetes”集群获取到终端服务器发送的“UniCRD”实例文件,“Kubernetes”基于“CRD”机制部署“UniCRD”控制器,“UniCRD”控制器根据“UniCRD”实例文件完成对虚拟机实例和“pod”实例的创建,并生成该虚拟机实例和“pod”实例的映射关系,构建应用实例。
综上,本申请提供的一种应用实例构建方法,通过“Kubernetes”的“CRD”机制将虚拟机实例运行所需的资源定义和容器实例运行所需的资源定义放入同一定义文件中进行统一部署,大大简化了虚拟机和容器的“Kubernetes”调度模板的维护,降低了***的对容器和虚拟机进行调度管理的复杂度;且可在同一模板下对容器和虚拟机的进行亲和性配置,让虚拟机和容器间形成对应的映射关系,通过提升通信效率,有效提升应用服务响应的速率;并且在实际的应用服务实现过程中,往往是不同特性的应用共同完成应用服务的实现,存在部分应用更适宜运行在虚拟机上的情形,因此,运用本申请亲和性管理配置将容器和虚拟机进行编排配合,极大提升了业务服务的响应速度与效率。
图5为本申请实施例提供的一种应用实例构建装置结构示意图。如图5所示,该应用实例构建装置500包括:获取模块510、虚拟机创建模块520、容器创建模块530、构建模块540。作为示例,该应用实例构建装置500可以是图1中的工作节点所在物理机,也可以是应用于图1中的工作节点所在物理机中的芯片,或者是应用于图1中的工作节点中计算机程序产品。
应用实例构建装置500可以用于图2所示实施例中的方法。作为示例,获取模块510用于实现图2中的S210;虚拟机创建模块520用于实现图2中的S220和S230;容器创建模块530用于实现图2中的S240和S250;构建模块540用于实现图2中的S260和S270。
可以理解的是,本申请实施例提供的应用实例构建装置装置,可用于执行如上所述任一方法实施例的技术方案,其实现原理和技术效果类似,具体可参考上述方法实施例,此处不再赘述。
图6为本申请实施例提供的电子设备的结构示意图。如图6所示,本申请提供的电子设备可以包括:存储器610和处理器620。
存储器610用于存储用于实现图2中所示实施例中的方法的计算机应用程序。
处理器620用于执行存储器610中的计算机应用程序,该计算机应用程序被处理器620执行时实现如图2中所示实施例中的应用实例构建方法。
可选地,存储器610既可以是独立的,也可以是跟处理器620集成在一起。
本实施例提供的电子设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如前述任一实施例提供的根因定位方法的步骤。
在本发明提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种应用实例构建方法,其特征在于,包括:
获取第一实例信息,所述第一实例信息包括虚拟机运行定义块和容器运行定义块,所述虚拟机运行定义块和所述容器运行定义块中的内容是按照相同的机制定义的;
根据所述第一实例信息中的虚拟机运行定义块创建目标虚拟机实例;
根据所述第一实例信息中的容器运行定义块创建目标容器实例;
生成所述目标虚拟机实例与所述目标容器实例之间的映射关系;
根据所述映射关系构建基于所述目标虚拟机实例和所述目标容器实例的应用实例。
2.根据权利要求1所述的方法,其特征在于,所述第一实例信息还包括第一副本数,所述第一副本数用于指示需要生成的虚拟机实例的第一数量;
所述根据所述第一实例信息中的虚拟机运行定义块创建目标虚拟机实例,包括:
根据所述第一实例信息中的虚拟机运行定义块创建所述第一数量的目标虚拟机实例。
3.根据权利要求2所述的方法,其特征在于,所述虚拟机运行定义块包括第一亲和性配置信息,所述第一亲和性配置信息用于指示多个工作节点;
相应地,所述第一数量的目标虚拟机实例中至少两个目标虚拟机实例部署在所述多个工作节点中不同的工作节点上。
4.根据权利要求1所述的方法,其特征在于,所述第一实例信息还包括第二副本数,所述第二副本数用于指示需要生成的容器实例的第二数量;
所述根据所述第一实例信息中的容器运行定义块创建目标容器实例,包括:
根据所述第一实例信息中的容器运行定义块创建所述第二数量的目标容器实例。
5.根据权利要求4所述的方法,其特征在于,所述容器运行定义块包括第二亲和性配置信息,所述第二亲和性配置信息用于指示多个工作节点;
相应地,所述第二数量的目标容器实例中至少两个目标容器实例部署在所述多个工作节点中不同的工作节点上。
6.根据权利要求1所述的方法,其特征在于,所述第一实例信息中还包括第三亲和性配置信息,所述第三亲和性配置信息用于指示所述目标虚拟机实例或所述目标容器实例所在的工作节点;
相应地,所述目标虚拟机实例与所述目标容器实例根据所述第三亲和性配置信息,部署在同一工作节点上。
7.一种应用实例构建装置,其特征在于,包括:
获取模块:用于获取第一实例信息,所述第一实例信息包括虚拟机运行定义块和容器运行定义块,所述虚拟机运行定义块和所述容器运行定义块中的内容是按照相同的机制定义的;
虚拟机创建模块:用于根据所述第一实例信息中的虚拟机运行定义块创建目标虚拟机实例;
容器创建模块:用于根据所述第一实例信息中的容器运行定义块创建目标容器实例;
构建模块:生成所述目标虚拟机实例与所述目标容器实例之间的映射关系;根据所述映射关系构建基于所述目标虚拟机实例和所述目标容器实例的应用实例。
8.一种计算机设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-6任一项所述的方法。
10.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210461226.6A CN114675940A (zh) | 2022-04-28 | 2022-04-28 | 应用实例构建方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210461226.6A CN114675940A (zh) | 2022-04-28 | 2022-04-28 | 应用实例构建方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114675940A true CN114675940A (zh) | 2022-06-28 |
Family
ID=82079245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210461226.6A Pending CN114675940A (zh) | 2022-04-28 | 2022-04-28 | 应用实例构建方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114675940A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116860461A (zh) * | 2023-09-04 | 2023-10-10 | 深圳大道云科技有限公司 | K8s集群的资源调度方法、设备及存储介质 |
-
2022
- 2022-04-28 CN CN202210461226.6A patent/CN114675940A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116860461A (zh) * | 2023-09-04 | 2023-10-10 | 深圳大道云科技有限公司 | K8s集群的资源调度方法、设备及存储介质 |
CN116860461B (zh) * | 2023-09-04 | 2023-12-19 | 深圳大道云科技有限公司 | K8s集群的资源调度方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108809722B (zh) | 一种部署Kubernetes集群的方法、装置和存储介质 | |
CN110583005B (zh) | 云平台*** | |
CN107896162B (zh) | 监控***的部署方法、装置、计算机设备及存储介质 | |
JP6695984B2 (ja) | マルチタスクスケジューリング方法、システム、アプリケーションサーバ及びコンピュータの読み取り可能な記憶媒体 | |
CN107967159B (zh) | 一种配置文件应用的方法以及服务器 | |
CN108572845B (zh) | 分布式微服务集群的升级方法及相关*** | |
CN109597853B (zh) | 业务场景元素序列号生成方法、装置、介质和计算机设备 | |
CN104750555A (zh) | 一种Android程序中的进程管理方法和装置 | |
CN104750528A (zh) | 一种Android程序中的组件管理方法和装置 | |
CN107479984B (zh) | 基于消息的分布式空间数据处理*** | |
CN113382077B (zh) | 微服务调度方法、装置、计算机设备和存储介质 | |
CN112948050A (zh) | 一种部署pod的方法及装置 | |
CN110888736A (zh) | 一种基于容器云平台的应用管理方法、***及相关组件 | |
CN102968303A (zh) | 程序设计***和程序设计方法 | |
CN115061717A (zh) | 应用管理方法、应用订阅方法及相关设备 | |
CN115328529B (zh) | 应用管理方法及相关设备 | |
CN114675940A (zh) | 应用实例构建方法、装置和设备 | |
CN114546588A (zh) | 任务的部署方法、装置、存储介质及电子装置 | |
CN112882794A (zh) | pod扩容方法、装置、节点及存储介质 | |
CN112698930A (zh) | 一种获取服务器标识的方法、装置、设备及介质 | |
CN111767126A (zh) | 分布式批量处理的***和方法 | |
CN114564249B (zh) | 推荐调度引擎、推荐调度方法及计算机可读存储介质 | |
CN114461399B (zh) | 资源的分配方法和装置、存储介质及电子装置 | |
CN111526168B (zh) | 一种网络功能虚拟化nfv架构的调度管理方法及装置 | |
CN113760446A (zh) | 资源调度方法、装置、设备及介质 |
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 |