首页> 中国专利> 混合编排系统及超融合架构下虚拟机容器资源混合编排方法

混合编排系统及超融合架构下虚拟机容器资源混合编排方法

摘要

本发明实施例公开了一种混合编排系统及超融合架构下虚拟机容器资源混合编排方法,其中混合编排系统用于在执行创建虚拟机时,将VM‑POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求通过当前kubernetes虚拟机本身的编排功能进行执行调度操作。本发明通过可以实现在同一个kubernetes环境下管理虚拟机和容器两种资源进而可以根据用户需求最大化的利用超融合环境下的CPU及内存资源,降低多云类型环境的使用成本。

著录项

  • 公开/公告号CN114816665A

    专利类型发明专利

  • 公开/公告日2022-07-29

    原文格式PDF

  • 申请/专利权人 北京志凌海纳科技有限公司;

    申请/专利号CN202210432176.9

  • 发明设计人 何育华;徐文豪;王弘毅;张凯;

    申请日2022-04-22

  • 分类号G06F9/455;

  • 代理机构北京绘聚高科知识产权代理事务所(普通合伙);

  • 代理人汪帆

  • 地址 100086 北京市海淀区知春路甲48号1号楼8B

  • 入库时间 2023-06-19 16:08:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-29

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及虚拟机存储技术领域,尤其涉及一种混合编排系统及超融合架构下虚拟机容器资源混合编排方法。

背景技术

超融合基础架构是一种将计算、网络和存储等资源作为基础设施进行整合,可以根据具体业务系统需求进行选择组合和自定义,方便快捷地进行数据中心搭建和业务系统部署的一种技术架构。具体实现方式上一般是在单元节点(x86服务器)中融入软件虚拟化技术(包括计算、网络、存储、安全等虚拟化),而每一个单元节点可以通过网络聚合起来,实现模块化的无缝横向扩展(scale-out),构建统一的资源池。

虚拟机和容器是当前主流的虚拟化技术。虚拟机指通过软件模拟的、具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟化技术的实现主要依赖虚拟化管理程序(virtual machine manager,VMM),它是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机。VMM运行在特权模式,主要作用是隔离并且管理上层运行的多个虚拟机,仲裁它们对底层硬件的访问,并为每个客户操作系统虚拟一套独立于实际硬件的虚拟硬件环境(包括处理器、内存、I/O设备)。目前主流的VMM产品为linux开源系统生态下的基于LIBVIRT/QEMU/KVM套件如Openstack,Cloudstack等,以及VMware Inc公司的ESXi商业软件等。

容器技术则是一种沙盒技术,可以将应用运行在其中,与外界隔离,这个沙盒可以被方便地“转移”。本质上,容器就是一种特殊的进程。通过在创建容器进程的时候,指定了这个进程所需要启用的一组命名空间(namespace)参数,进而让该容器进程只能看到当前namespace所限定的资源、文件、设备、状态或配置。容器技术是一种相对新颖的虚拟化技术,目前主流的容器技术主要为围绕containerd容器引擎模块构建的docker、Podman等软件,以及容器编排平台Kubernetes。需要特别指出kubernetes是目前主流的容器计算资源编排平台。

在图1所示的虚拟机虚拟化架构图下,每个虚拟机在Hypervisor的管理下拥有自己独立的客户操作系统,互不干扰,在每个客户操作系统之上可以运行独立软件和应用。在图2中,容器则在containerd引擎的控制下,直接运行在宿主机的操作系统之上,多个container可以共享主机操作系统。相比之下,虚拟机架构安全,隔离性强;容器则轻便,开销小,易于快速部署和启动。

虚拟机管理程序(VMM)通过对硬件设备的模拟向用户提供与物理机相同的功能,并且基于硬件的资源隔离保证了虚拟机的安全性。商业用户趋向于将其核心业务运行在虚拟机上。随着技术的发展,微服务架构的提出,容器的轻量化和低开销特性使得其被越来越多的使用。虚拟机和容器各有优势,目前在超融合环境使用情境中都是必然存在的。如何实现虚拟机与容器在超融合集群中共同部署是当前超融合架构中的一个重要研究方向。目前市场上成熟的虚拟机和容器混合编排方案有两种,第一类是将容器运行于虚拟机之上,第二类是将虚拟机和容器分别运行在不同的超融合集群中(参见图3)。

为了能统一管理虚拟机和容器,开源社区目前提供了另一种思路,即将虚拟机进程运行在一个容器中,代表性的项目为redhat公司提供的kubevirt。使用kubevirt,用户可以通过创建容器的方式来启动一个虚拟机,这样只需要一种资源编排系统(kubernetes)即可达到统一管理编排资源的目的。对于两种成熟的方案:将容器运行在虚拟机内部,通过两层不同的资源编排系统管理虚拟机和容器两种资源。

在这种形态下:额外的虚拟化层降低了容器的运行效率,降低了资源使用率。同时容器用户需要额外的虚拟机运维成本。虚拟机和容器分别运行在不同的超融合集群中。这种方案背离了超融合架构整合计算资源统一分配的思想,降低了超融合集群的横向扩展能力。各个集群之间的碎片资源无法得到有效编排利用,造成了资源的浪费。Kubevirt(参见图4)将虚拟机运行在容器中,在这种方式下的虚拟机功能被限制为必须依赖容器可以支持的功能。一些重要的虚拟化功能如虚拟机热迁移,磁盘热拔插,内存及CPU热扩容都无法实现。

发明内容

有鉴于此,本发明实施例提出一种混合编排系统及超融合架构下虚拟机(即kubernetes虚拟机)容器资源混合编排方法,用以解决背景技术中指出的问题。

本发明的一实施例提出一种混合编排系统,所述混合编排系统用于在执行创建虚拟机时,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求通过当前kubernetes虚拟机本身的编排功能进行执行调度操作。

优选的,作为一种可实施方案;所述混合编排系统包括虚拟机管理程序VMM模块、VM-scheduler模块、kubelet模块、VM-operator模块、API-server模块、Kube-scheduler模块。

本发明的一实施例一种超融合架构下虚拟机容器资源混合编排方法,其应用混合编排系统,执行如下操作步骤:

在执行创建虚拟机时,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求通过当前kubernetes虚拟机本身的编排功能进行执行调度操作;

优选的,作为一种可实施方案;所述在执行创建虚拟机时,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求通过当前kubernetes虚拟机本身的编排功能进行执行调度操作,包括:

步骤S101,虚拟机管理程序VMM模块收到用户发送来的VM创建请求,并向VM-scheduler模块发送将要创建的目标虚拟机的规格和目标虚拟机名称信息;

步骤S102,VM-scheduler模块将目标虚拟机的规格和目标虚拟机名称信息转化为VM-POD资源请求,并将所述VM-POD资源请求发送到API-server模块;

步骤S103,API-server模块收到VM-POD资源请求后,转交给VM-operator模块;

步骤S104,VM-operator模块收到VM-POD资源请求后,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求发送到API-server模块;

步骤S105,API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理。

优选的,作为一种可实施方案;所述API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理,主要流程为:

步骤S1051,在预设时间周期内,检查集群内所有物理节点上的可用CPU、内存及存储容量,在所有物理节点中筛选出满足同规格POD描述请求的所有可用的物理节点,确定该可用的物理节点为第一优选级物理节点;所述规格作为第一优选级筛选条件;

步骤S1052,检测当前同规格POD描述请求是否含有规格之外的第二优选级筛选条件;如果存在第二优选级筛选条件,则按照第二优选级筛选条件对第一优选级物理节点继续筛选得到第二优选级物理节点,将第二优选级物理节点作为准目标物理节点;如果没有第二优选级筛选条件,则将第一优选级物理节点作为准目标物理节点;

步骤S1053,将准目标物理节点汇总构建备选可用节点列表;在备选可用节点列表中继续筛选资源占用率最低的物理节点作为目标物理节点;Kube-scheduler模块获取目标物理节点的ID信息,根据所述目标物理节点ID信息通知到对应目标物理节点上的kubelet模块准备创建POD对象,即准备执行POD对象的容器调度操作;

步骤S106,目标物理节点上的kubelet模块创建POD对象成功后,将POD对象创建成功的消息发送到API-server模块;

步骤S107,API-server模块通知VM-operator模块该POD对象已经运行成功,目标物理节点在执行POD对象的容器调度操作时,实时查询自身的目标物理节点的资源参数信息;

步骤S108,VM-operator模块将POD对象的容器调度位置所属的目标物理节点的ID信息及目标物理节点的资源参数信息经由VM-scheduler模块传递给虚拟机管理程序VMM模块;

步骤S109,虚拟机管理程序VMM模块随即根据VM-scheduler模块返回的目标物理节点的ID信息确定目标虚拟机的创建位置,根据目标物理节点的资源参数信息解析到目标虚拟机创建时所占用的目标物理节点的资源;所述虚拟机管理程序VMM模块根据所述目标虚拟机创建时所占用的目标物理节点的资源向当前目标物理节点进行资源申请,并启动当前目标物理节点对应的Cgroup启动目标虚拟机。

优选的,作为一种可实施方案;还包括在迁移虚拟机时执行资源编排操作;

步骤S301,虚拟机管理程序VMM模块收到源虚拟机发来的虚拟机热迁移请求,并向VM-scheduler模块发送将要迁移的目标虚拟机的规格和目标虚拟机名称信息;

步骤S302,VM-scheduler模块将目标虚拟机的规格和目标虚拟机名称信息转化为VM-POD资源请求,并发送所述VM-POD资源请求到API-server模块;

步骤S303,API-server模块收到VM-POD资源请求后,转交给VM-operator模块;

步骤S304,VM-operator模块收到VM-POD资源请求后,将VM-POD资源请求中包含CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求发送到API-server模块;

步骤S305,API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理;

步骤S3051,在预设时间周期内,检查集群内所有物理节点上的可用CPU、内存及存储容量,在所有物理节点中筛选出满足同规格POD描述请求的所有可用的物理节点,确定该可用的物理节点为第一优选级物理节点;所述规格作为第一优选级筛选条件;

步骤S3052,检测当前同规格POD描述请求是否含有规格之外的第二优选级筛选条件;如果存在第二优选级筛选条件,则按照第二优选级筛选条件对第一优选级物理节点继续筛选得到第二优选级物理节点,将第二优选级物理节点作为准目标物理节点;如果没有第二优选级筛选条件,则将第一优选级物理节点作为准目标物理节点;

步骤S3053,将准目标物理节点汇总构建备选可用节点列表;在备选可用节点列表中继续筛选资源占用率最低的物理节点作为目标迁移物理节点;Kube-scheduler模块获取目标迁移物理节点的ID信息,根据所述目标迁移物理节点的ID信息通知到对应目标迁移物理节点上的kubelet模块准备创建POD对象,即准备执行POD对象的容器调度操作;

步骤S306,在目标迁移物理节点上的kubelet模块创建POD对象成功后,将POD对象创建成功的消息发送到API-server模块;

步骤S307,API-server模块通知VM-operator模块的POD对象已经运行成功,目标迁移物理节点在执行POD对象的容器调度操作时,实时查询自身的目标迁移物理节点的资源参数信息;

步骤S308,VM-operator模块调度到所属位置的目标迁移物理节点的ID信息及目标迁移物理节点的资源参数信息经由VM-scheduler模块传递给虚拟机管理程序VMM模块;

虚拟机管理程序VMM模块将源节点处虚拟机VM迁移到目标物理迁移节点的新Cgroup内;在新的Cgroup内创建新虚拟机VM,并保持暂停状态,直至虚拟机管理程序VMM模块将旧虚拟机VM迁移到新虚拟机VM;再关闭旧虚拟机VM,至此迁移完成。

优选的,作为一种可实施方案;在源节点处虚拟机VM迁移到目标物理迁移节点的新Cgroup内之后,还包括:

步骤S311,VM-scheduler模块得知源节点处虚拟机成功迁移后,生成关闭当前的POD对象的API-server模块请求;

步骤S312,API-server模块将关闭当前的POD对象的任务发送给VM-operator模块;

步骤S313,VM-operator模块生成当前的POD对象的任务指令消息发送给API-server模块;

步骤S314,API-server模块转发所述任务指令消息到kubelet模块执行关闭当前的POD对象的操作(或称关闭当前POD对象资源的操作);

步骤S315,待kubelet模块执行关闭当前的POD对象的成功后通知API-server模块;

步骤S316,API-server模块通知VM-operator模块完成虚拟机热迁移操作;

步骤S317,VM-operator模块在完成虚拟机热迁移操作后释放源虚拟机的容器资源。

优选的,作为一种可实施方案;还包括在扩容虚拟机时的执行资源编排操作;

步骤S401,虚拟机管理程序VMM模块收到当前的源虚拟机VM的扩容请求(添加新的CPU、内存、存储等),将所述扩容请求提交到VM-scheduler模块进行调度;

步骤S402,VM-scheduler模块将所述扩容请求所需的新增规格和当前虚拟机VM的规格所反映的规格指标合并后生成一个新的目标虚拟机;根据所述新的目标虚拟机合并后的规格转化为VM-POD资源请求,并记为扩容后VM-POD资源请求,并将所述扩容后VM-POD资源请求发送到API-server模块;

步骤S403,API-server模块收到扩容后VM-POD资源请求后,转交给VM-operator模块;

步骤S404,VM-operator模块收到扩容后VM-POD资源请求后,将扩容后VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求发送到API-server模块;

步骤S405,API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理:

步骤S4051,确定当前的源虚拟机VM所在的物理节点为扩容后的目标物理节点;获取当前的源虚拟机VM所在的节点的ID信息;

步骤S4052,检测目标物理节点是否满足规格要求,如果满足则将创建POD的请求发送到原始目标节点进行创建根据所述目标物理节点ID信息通知到对应目标物理节点上的kubelet模块准备创建扩容的POD对象,即准备执行POD对象的容器调度操作

步骤S406,目标物理节点上的kubelet模块创建扩容的POD对象成功后,将POD对象创建成功的消息发送到API-server模块;

步骤S407,API-server模块通知扩容的POD对象已经运行成功,目标物理节点在执行扩容的POD对象的容器调度操作时,实时查询自身的目标物理节点的资源参数信息;

步骤S408,VM-operator模块将调度扩容的POD对象所属位置的目标物理节点的ID信息及目标物理节点的资源参数信息经由VM-scheduler模块传递给虚拟机管理程序VMM模块;

步骤S409,虚拟机管理程序VMM模块随即根据VM-scheduler模块返回的目标物理节点的ID信息确定目标虚拟机的创建位置,根据资源参数信息解析到目标虚拟机创建时所占用的目标物理节点的资源;所述虚拟机管理程序VMM模块在确定的对应目标物理节点上根据资源参数信息启动对应的Cgroup启动目标虚拟机。

与现有技术相比,本申请实施例至少存在如下方面的技术效果:

本发明实施例提出的方法通过将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求;借助当前kubernetes虚拟机本身的编排功能进行对转化后的同规格POD描述请求执行调度操作;

在容器调度操作时,利用当前kubernetes虚拟机本身的编排功能对同规格POD描述进行调度操作,在此过程中创建的POD对象用来向kubernetes虚拟机声明虚拟机使用的资源和规格。即可令kubernetes虚拟机创建一个与目标虚拟机相同资源规格的POD,顺势利用了虚拟机本身的编排功能节省了运行成本,这样实际运行中使用极少成本就可以实现资源编排操作。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。

图1为现有技术中传统虚拟机架构图;

图2为现有技术中将容器运行在虚拟机内的架构图;

图3为虚拟机和容器分别运行在不同的超融合集群中的架构图;

图4为现有技术中的kubevirt的运行架构图;

图5示出了本发明实施例的一种混合编排系统的架构图;

图6示出了本发明实施例的VM运行在kubernetes虚拟机上为Pod创建的Cgroup中的效果图;

图7示出了本发明实施例的一种超融合架构下虚拟机容器资源混合编排方法中一具体流程图;

图8示出了本发明实施例的一种超融合架构下虚拟机容器资源混合编排方法中另一具体流程图;

图9示出了本发明实施例的一种超融合架构下虚拟机容器资源混合编排方法中再一具体流程图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

实施例一

参照图6,本发明实施例一提供了一种混合编排系统,所述混合编排系统用于在执行创建虚拟机时,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求通过当前kubernetes虚拟机本身的编排功能进行执行调度操作。

所述混合编排系统包括虚拟机管理程序VMM模块100、VM-scheduler模块200、kubelet模块300、VM-operator模块400、API-server模块500、Kube-scheduler模块600;

本发明实施例为了达到虚拟机和Pod容器资源在同一个集群内统一调度管理的目的,设计了上述虚拟机容器混合编排系统(即混合编排系统)。本发明实施例提出的方法通过将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求;借助当前kubernetes虚拟机本身的编排功能进行对转化后的同规格POD描述请求执行调度操作;

在容器调度操作时,利用当前kubernetes虚拟机本身的编排功能对同规格POD描述进行调度操作,在此过程中创建的POD对象用来向kubernetes虚拟机声明虚拟机使用的资源和规格。即可令kubernetes虚拟机创建一个与目标虚拟机相同资源规格的POD,顺势利用了虚拟机本身的编排功能节省了运行成本,这样实际运行中使用极少成本就可以实现资源编排操作。

实施例二

相应地,本发明实施例二提供了一种超融合架构下虚拟机容器资源混合编排方法,其应用实施例一中的混合编排系统,执行如下操作步骤:

在执行创建虚拟机时,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求通过当前kubernetes虚拟机本身的编排功能进行执行调度操作;

需要说明的是,在Linux操作系统上可以同时运行虚拟机和容器,其CPU及内存的资源限制都使用了Cgroup内核功能进行限制管理。Kubernetes虚拟机的kubelet模块使用计算统计Cgroups的方式计算节点资源使用量。在Pod运行后会创建一个Cgroup,任何绑定到该Cgroup的进程的资源限制都是相同且共享的。虚拟机管理程序在启动一个虚拟机时可以指定Cgroup地址。虚拟机如果如果使用Pod所在Cgroup,则虚拟机运行时资源使用就会自然的被kubernetes计算在内。并且可以被kubernetes控制更改,详见图5。

其中,Cgroups:其名称源自控制组群(英语:control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。CRD:定制资源(Custom Resource)是对Kubernetes API的扩展。

Pod是kubernetes系统中的一组(一个或多个)容器(例如Docker容器),这些容器有共享存储、网络、以及怎样运行这些容器的声明。Pod的内容总是共同定位和共同调度,并且在共享的上下文中运行。Pod以特定于应用的“逻辑主机”为模型,它包含一个或多个应用容器,这些容器是相对紧密的耦合在一起;在容器出现之前,在相同的物理机或虚拟机上运行意味着在相同的逻辑主机上运行。

kube-scheduler模块:是Kubernetes集群的默认调度器,并且是集群控制面的一部分。如果你真的希望或者有这方面的需求,kube-scheduler在设计上是允许你自己写一个调度组件并替换原有的kube-scheduler。Kubelet:是kubernetes在每个Node节点上运行的主要“节点代理”。主要负责操作POD创建销毁和编辑,并且向API-server上报节点信息;还可以执行特定于某云服务商的逻辑。

VMM模块:虚拟机管理软件,提供创建删除编辑虚拟机功能,并且记录集群和节点的资源使用情况,这里使用LIBVIRT&QEMU虚拟化管理套件。VMM不记录节点和集群的资源占用情况。

VM-POD:是一种特殊CRD资源。用来向kubernetes声明虚拟机使用的资源和规格。该资源可令kubernetes创建一个与目标VM相同资源规格的POD,但实际运行中不使用任何资源或或使用极少资源。

VM-Operator模块:定义的kubernetes中消费VM-POD资源的处理程序。

VM-scheduler模块:定义的一个通过kubernetes调度虚拟机的程序。

优选的,作为一种可实施方案;参见图7,所述在执行创建虚拟机时,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求通过当前kubernetes虚拟机本身的编排功能进行执行调度操作,包括:

步骤S101,虚拟机管理程序VMM模块收到用户发送来的VM创建请求,并向VM-scheduler模块发送将要创建的目标虚拟机的规格和目标虚拟机名称信息;

步骤S102,VM-scheduler模块将目标虚拟机的规格和目标虚拟机名称信息转化为VM-POD资源请求,并将所述VM-POD资源请求发送到API-server模块;

步骤S103,API-server模块收到VM-POD资源请求后,转交给VM-operator模块;

步骤S104,VM-operator模块收到VM-POD资源请求后,将VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求发送到API-server模块;

需要说明的是,物理机可使用的资源(CPU,内存,存储)是有限的,超融合平台的资源的容器和虚拟机的混合编排,主要需要解决的就是这些有限资源的分配方式。上述规格,即对象运行时使用的资源的描述,对于虚拟机和容器,都可以用使用内存大小,存储对象个数,存储空间大小,CPU使用个数这些指标来描述运行时所需要的资源。使用相同的指标构成的虚拟机和容器的规格描述,使得在同一系统内共同调度和编排虚拟机和容器提供了基础。

本申请实施例在步骤S104执行过程中要转换为相同规格,具有如下技术效果:上述调度行为主要使用了kubernetes的编排功能,在kubernetes中,原生的支持POD资源的规格描述的管理和调度。所以将VM-POD资源请求中虚拟机资源描述转换为同规格POD描述请求后,才能使用kubernetes的调度功能。

步骤S105,API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理。

优选的,作为一种可实施方案;所述API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理(调度过程为Kube-scheduler模块组件提供的原生功能),主要流程为:

步骤S1051,在预设时间周期内,检查集群内所有物理节点上的可用CPU、内存及存储容量,在所有物理节点中筛选出满足同规格POD描述请求的所有可用的物理节点,确定该可用的物理节点为第一优选级物理节点;所述规格作为第一优选级筛选条件;

步骤S1052,检测当前同规格POD描述请求是否含有规格之外的第二优选级筛选条件;如果存在第二优选级筛选条件,则按照第二优选级筛选条件对第一优选级物理节点继续筛选得到第二优选级物理节点,将第二优选级物理节点作为准目标物理节点;如果没有第二优选级筛选条件,则将第一优选级物理节点作为准目标物理节点;

步骤S1053,将准目标物理节点汇总构建备选可用节点列表;在备选可用节点列表中继续筛选资源占用率最低的物理节点作为目标物理节点(最大程度上查询一个优质的物理节点作为目标物理节点,为后续的目标物理节点上的目标虚拟机的创建以及所占用的目标物理节点的资源申请做准备);Kube-scheduler模块获取目标物理节点的ID信息,根据所述目标物理节点ID信息通知到对应目标物理节点上的kubelet模块准备创建POD对象,即准备执行POD对象的容器调度操作;即创建请求发送到目标物理节点的kubelet模块(上述kubelet模块负责操作POD创建、销毁和编辑,并且向API-server模块上报节点信息)上运行;

需要说明的是,上述第二优选级筛选条件为对当前物理节点进行优化限定或是优化制定的筛选条件的总称;即第二优选级筛选条件指定了其他有关可用节点的筛选条件,比如节点的名称满足特定的开头,或者指定了节点CPU指令集支持版本,则进一步的从上一步的筛选结果中继续筛选。完成所有筛选之后,如果备选可用节点列表中超过一个,则找出资源最富裕的节点作为目标物理节点。否则调度会失败,等待一段时间后重试。上一步成功找出目标物理节点后,将目标物理节点的ID信息填入POD对象中,发送到API-server模块,API-server模块可以通过目标物理节点ID信息通知到对应节点上的kubelet模块创建POD对象,即运行容器。

步骤S106,目标物理节点上的kubelet模块创建POD对象成功后,将POD对象创建成功的消息发送到API-server模块;

步骤S107,API-server模块通知VM-operator模块该POD对象已经运行成功,目标物理节点在执行POD对象的容器调度操作时,实时查询自身的目标物理节点的资源参数信息;

步骤S108,VM-operator模块将POD对象的容器调度位置所属的目标物理节点的ID信息及目标物理节点的资源参数信息经由VM-scheduler模块传递给虚拟机管理程序VMM模块;

步骤S109,虚拟机管理程序VMM模块随即根据VM-scheduler模块返回的目标物理节点的ID信息确定目标虚拟机的创建位置,根据目标物理节点的资源参数信息解析到目标虚拟机创建时所占用的目标物理节点的资源;所述虚拟机管理程序VMM模块根据所述目标虚拟机创建时所占用的目标物理节点的资源向当前目标物理节点进行资源申请,并启动当前目标物理节点对应的Cgroup启动目标虚拟机。

需要说明的是,在本申请的技术方案中,上述目标物理节点的ID信息可以让虚拟机管理程序VMM模块知道在哪里创建虚拟机;同时资源参数信息可以让VMM知道在创建虚拟机时从节点申请多少资源。并且将VM与之前创建的同规格VM-POD建立了映射关系。

优选的,作为一种可实施方案;还包括在关闭虚拟机时执行资源编排操作;

步骤S201,虚拟机管理程序VMM模块收到用户发送来的VM关机请求。

步骤S202,虚拟机关机程序关闭节点上的虚拟机。

步骤S203,VM-scheduler模块实时判断虚拟机关机程序是否关闭成功,在得知VM关机成功后,生成关闭VM-POD的API-server模块请求。

步骤S204,API-server模块将VM-POD任务发送给VM-operator模块。

步骤S205,VM-operator模块生成关闭POD的请求发送给API-server模块。

步骤S206,API-server模块转发消息到kubelet模块执行。

步骤S207,kubelet模块执行成功后通知API-server模块。

步骤S208,API-server模块通知VM-operator模块VM-POD完成退出。

步骤S209,VM-operator模块确认后完成关机流程。

优选的,作为一种可实施方案;参见图8,还包括在迁移虚拟机时执行资源编排操作;

步骤S301,虚拟机管理程序VMM模块收到源虚拟机发来的虚拟机热迁移请求,并向VM-scheduler模块发送将要迁移的目标虚拟机的规格和目标虚拟机名称信息;

步骤S302,VM-scheduler模块将目标虚拟机的规格和目标虚拟机名称信息转化为VM-POD资源请求,并发送所述VM-POD资源请求到API-server模块;

步骤S303,API-server模块收到VM-POD资源请求后,转交给VM-operator模块;

步骤S304,VM-operator模块收到VM-POD资源请求后,将VM-POD资源请求中包含CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求发送到API-server模块;

步骤S305,API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理;

步骤S3051,在预设时间周期内,检查集群内所有物理节点上的可用CPU、内存及存储容量,在所有物理节点中筛选出满足同规格POD描述请求的所有可用的物理节点,确定该可用的物理节点为第一优选级物理节点;所述规格作为第一优选级筛选条件;

步骤S3052,检测当前同规格POD描述请求是否含有规格之外的第二优选级筛选条件;如果存在第二优选级筛选条件,则按照第二优选级筛选条件对第一优选级物理节点继续筛选得到第二优选级物理节点,将第二优选级物理节点作为准目标物理节点;如果没有第二优选级筛选条件,则将第一优选级物理节点作为准目标物理节点;

步骤S3053,将准目标物理节点汇总构建备选可用节点列表;在备选可用节点列表中继续筛选资源占用率最低的物理节点作为目标迁移物理节点;Kube-scheduler模块获取目标迁移物理节点的ID信息,根据所述目标迁移物理节点的ID信息通知到对应目标迁移物理节点上的kubelet模块准备创建POD对象,即准备执行POD对象的容器调度操作;

步骤S306,在目标迁移物理节点上的kubelet模块创建POD对象成功后,将POD对象创建成功的消息发送到API-server模块;

步骤S307,API-server模块通知VM-operator模块的POD对象已经运行成功,目标迁移物理节点在执行POD对象的容器调度操作时,实时查询自身的目标迁移物理节点的资源参数信息;

步骤S308,VM-operator模块调度到所属位置的目标迁移物理节点的ID信息及目标迁移物理节点的资源参数信息经由VM-scheduler模块传递给虚拟机管理程序VMM模块;

虚拟机管理程序VMM模块将源节点处虚拟机VM迁移到目标物理迁移节点的新Cgroup内;在新的Cgroup内创建新虚拟机VM,并保持暂停状态,直至虚拟机管理程序VMM模块将旧虚拟机VM迁移到新虚拟机VM;再关闭旧虚拟机VM,至此迁移完成。

优选的,作为一种可实施方案;在源节点处虚拟机VM迁移到目标物理迁移节点的新Cgroup内之后,还包括:

步骤S311,VM-scheduler模块得知源节点处虚拟机成功迁移后,生成关闭当前的POD对象的API-server模块请求;

步骤S312,API-server模块将关闭当前的POD对象的任务发送给VM-operator模块;

步骤S313,VM-operator模块生成当前的POD对象的任务指令消息发送给API-server模块;

步骤S314,API-server模块转发所述任务指令消息到kubelet模块执行关闭当前的POD对象的操作(或称关闭当前POD对象资源的操作);

步骤S315,待kubelet模块执行关闭当前的POD对象的成功后通知API-server模块;

步骤S316,API-server模块通知VM-operator模块完成虚拟机热迁移操作;

步骤S317,VM-operator模块在完成虚拟机热迁移操作后释放源虚拟机的容器资源。

优选的,作为一种可实施方案;参见图9,还包括在扩容虚拟机时的执行资源编排操作;

步骤S401,虚拟机管理程序VMM模块收到当前的源虚拟机VM的扩容请求(添加新的CPU、内存、存储等),将所述扩容请求提交到VM-scheduler模块进行调度;

步骤S402,VM-scheduler模块将所述扩容请求所需的新增规格和当前虚拟机VM的规格所反映的规格指标合并后生成一个新的目标虚拟机;根据所述新的目标虚拟机合并后的规格转化为VM-POD资源请求,并记为扩容后VM-POD资源请求,并将所述扩容后VM-POD资源请求发送到API-server模块;

步骤S403,API-server模块收到扩容后VM-POD资源请求后,转交给VM-operator模块;

步骤S404,VM-operator模块收到扩容后VM-POD资源请求后,将扩容后VM-POD资源请求中包含的CPU、内存及存储信息转换为当前虚拟机的同规格POD描述请求,并将转化后的同规格POD描述请求发送到API-server模块;

步骤S405,API-server模块收到同规格POD描述请求后,交由Kube-scheduler模块进行调度处理:

步骤S4051,确定当前的源虚拟机VM所在的物理节点为扩容后的目标物理节点;获取当前的源虚拟机VM所在的节点的ID信息;

步骤S4052,检测目标物理节点是否满足规格要求,如果满足则将创建POD的请求发送到原始目标节点进行创建根据所述目标物理节点ID信息通知到对应目标物理节点上的kubelet模块准备创建扩容的POD对象,即准备执行POD对象的容器调度操作;即创建请求发送到目标物理节点的kubelet模块(kubelet模块负责操作POD创建、销毁和编辑,并且向API-server模块上报节点信息)上运行;

需要说明的是,上述第二优选级筛选条件为对当前物理节点进行优化限定或是优化制定的筛选条件的总称;即第二优选级筛选条件指定了其他有关可用节点的筛选条件,比如节点的名称满足特定的开头,或者指定了节点CPU指令集支持版本,则进一步的从上一步的筛选结果中继续筛选。完成所有筛选之后,如果备选可用节点列表中超过一个,则找出资源最富裕的节点作为目标物理节点。否则调度会失败,等待一段时间后重试。上一步成功找出目标物理节点后,将目标物理节点的ID信息填入POD对象中,发送到API-server模块,API-server模块可以通过目标物理节点ID信息通知到对应节点上的kubelet模块创建POD对象,即运行容器。

步骤S406,目标物理节点上的kubelet模块创建扩容的POD对象成功后,将POD对象创建成功的消息发送到API-server模块;

步骤S407,API-server模块通知扩容的POD对象已经运行成功,目标物理节点在执行扩容的POD对象的容器调度操作时,实时查询自身的目标物理节点的资源参数信息;

步骤S408,VM-operator模块将调度扩容的POD对象所属位置的目标物理节点的ID信息及目标物理节点的资源参数信息经由VM-scheduler模块传递给虚拟机管理程序VMM模块;

步骤S409,虚拟机管理程序VMM模块随即根据VM-scheduler模块返回的目标物理节点的ID信息确定目标虚拟机的创建位置,根据资源参数信息解析到目标虚拟机创建时所占用的目标物理节点的资源;所述虚拟机管理程序VMM模块在确定的对应目标物理节点上根据资源参数信息启动对应的Cgroup启动目标虚拟机。

关于扩容虚拟机时的资源编排,上述扩容流程复用了迁移逻辑,扩容动作发生在迁移时的第二步,上述VM-scheduler模块生成的新VM-POD规格为用户请求中描述的扩容后大小。

本发明实施例提供的上述技术方案涉及了kubernetes管理下的虚拟机进行热迁移以及热扩容,以及迁移开关机的处理方法。

本发明通利用linux系统中VM和Pod都使用Cgroups进行资源管理的原理,将VM运行在Pod Cgroups中,使得VM资源可以被kubernetes系统监控;再通过引入新型VM-POD CRD资源以及对应处理方法,实现了使用kubernetes系统进行VM资源调度和管理的功能;最后结合上述方法,本发明可以实现在同一个kubernetes环境下管理虚拟机和容器两种资源进而可以根据用户需求最大化的利用超融合环境下的CPU及内存资源,降低多云类型环境的使用成本。

在本申请的一些实施例中,还提供了一种可读存储介质,该可读存储介质可以为非易失性可读存储介质,也可以为易失性可读存储介质。该可读存储介质中存储有指令,当该指令在计算机上运行时,使得包含该种可读存储介质的电子设备执行前述的超融合架构下虚拟机容器资源混合编排方法。

可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。

这里所描述的计可读程序指令可以从可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该可读程序指令,以供存储在各个计算/处理设备中的可读存储介质中。

这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号