CN114968477A - 容器热迁移方法及容器热迁移装置 - Google Patents
容器热迁移方法及容器热迁移装置 Download PDFInfo
- Publication number
- CN114968477A CN114968477A CN202210425633.1A CN202210425633A CN114968477A CN 114968477 A CN114968477 A CN 114968477A CN 202210425633 A CN202210425633 A CN 202210425633A CN 114968477 A CN114968477 A CN 114968477A
- Authority
- CN
- China
- Prior art keywords
- container
- virtual machine
- migrated
- physical machine
- memory data
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45575—Starting, stopping, suspending or resuming 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/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供一种容器热迁移方法及装置;涉及虚拟化技术领域。该方法包括:响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机;所述第一虚拟机与所述待迁移容器一一对应;获取所述第一虚拟机的内存数据和运行状态并保存至本地;将所述第一虚拟机的内存数据和运行状态发送至目的物理机,以使所述目的物理机上的第二虚拟机根据接收到的内存数据和运行状态在目的物理机上恢复所述待迁移容器的运行进程。本公开可以解决了相关技术中容器热迁移时无法恢复内核状态及热迁移过程容器间相互干扰的问题。
Description
技术领域
本公开涉及虚拟化技术领域,具体而言,涉及一种容器热迁移方法、容器热迁移装置、计算机可读存储介质和电子设备。
背景技术
虚拟化是云计算的重要基础,热迁移是提高物理资源利用率的重要手段。而Docker(一个开源的应用容器引擎)定义了一套容器从构建到执行的标准化体系,改变了传统的虚拟化技术,故相关技术中的热迁移过程大多基于Docker容器。
相关技术中,基于Docker容器的热迁移过程,由于共享物理机的硬件资源,会导致容器间互相干扰的问题。此外,还存在无法兼顾用户态和内核态迁移的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种容器热迁移方法、公网IP网络状态探测***、计算机可读存储介质和电子设备,进而在一定程度上解决了相关技术中容器热迁移时无法恢复内核状态及热迁移过程容器间相互干扰的问题。
根据本公开的第一方面,提供了一种容器热迁移方法,包括:
响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机;通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应;
获取所述第一虚拟机的内存数据和运行状态并保存至本地;
将所述第一虚拟机的内存数据和运行状态发送至目的物理机,以使所述目的物理机上的第二虚拟机根据接收到的内存数据和运行状态在目的物理机上恢复所述待迁移容器的运行进程。
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
通过将所述容器热迁移命令添加至kubectl中的容器主动触发接口下形成面向k8s集群的容器热迁移子命令,以使通过调用所述容器主动触发接口的容器热迁移子命令触发容器热迁移过程。
在本公开的一种示例性实施例中,基于前述方案,所述容器热迁移命令包含待迁移容器的应用信息,所述响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机,包括:
当所述源物理机上包含所述待迁移容器的应用信息的多个容器进程时,通过容器IP地址信息或者容器标识信息在所述应用信息的多个容器进程中指定待迁移容器;
基于所述待迁移容器与所述第一虚拟机的一一对应关系,确定所述待迁移容器对应的第一虚拟机。
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
确定所述待迁移容器的运行环境需求;
基于所述待迁移容器的运行环境需求,确定所述目的物理机是否满足所述待迁移容器的运行环境需求;
当所述目的物理机满足所述待迁移容器的运行环境需求时,执行容器热迁移命令。
在本公开的一种示例性实施例中,基于前述方案,所述获取所述第一虚拟机的内存数据和运行状态并保存至本地,包括:
暂停所述第一虚拟机的运行进程,读取所述第一虚拟机当前的内存数据和运行状态并保存至本地。
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
暂停所述第一虚拟机的运行进程,将所述内存数据和运行状态发送过程中产生的脏页数据发送至所述目的物理机,以使所述目的物理机上的第二虚拟机根据所述脏页数据运行所述待迁移容器;所述脏页数据包括所述待迁移容器在所述第一虚拟机中运行过程发生变更的数据。
在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:
响应于容器热迁移命令,确定源物理机上是否存在所述待迁移容器的应用信息;
当源物理机上存在所述待迁移容器的应用信息,通过启动目的物理机上的第二虚拟机,以使所述第二虚拟机接收所述第一虚拟机的内存数据和运行状态,并利用所述第一虚拟机的内存数据和运行状态配置所述第二虚拟机的相应参数。
根据本公开的第二方面,提供一种容器热迁移装置,包括:
确定模块,用于响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机;通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应;
获取模块,用于获取所述第一虚拟机的内存数据和运行状态并保存至本地;
迁移模块,用于将所述第一虚拟机的内存数据和运行状态发送至目的物理机,以使所述目的物理机上的第二虚拟机根据接收到的内存数据和运行状态在目的物理机上恢复所述待迁移容器的运行进程。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
本公开示例性实施例可以具有以下部分或全部有益效果:
在公开示例实施方式所提供的容器热迁移方法中,一方面可以通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应;再通过将第一虚拟机的内存数据和运行状态热迁移至目的物理机中,实现待迁移容器的热迁移,解决了相关技术中无法对容器内核态进行迁移的问题,实现了待迁移容器内核态和运行态的彻底迁移;另一方面避免了热迁移过程中容器之间的相互干扰。此外,基于rust的虚拟机管理器自定义创建的第一虚拟机是微型轻量级的虚拟机,能够保证热迁移过程的快速进行,不影响容器热迁移速率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的一种容器热迁移方法及装置的示例性***架构的示意图。
图2示意性示出了根据本公开的一个实施例的容器热迁移方法的流程图。
图3示意性示出了根据本公开的一个实施例通过rust-vmm创建安全容器的基本原理框图。
图4示意性示出了根据本公开的一个实施例的通过自定义VMM创建一一对应的第一虚拟机和待迁移容器的流程图。
图5示意性示出了根据本公开的一个实施例的容器热迁移方法的实现过程流程图。
图6示意性示出了根据本公开的一个实施例的容器热迁移装置结构框图。
图7示出了适于用来实现本公开实施例的电子设备的计算机***的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
为了方便理解本发明实施例,首先在此介绍本公开实施例描述中引入的几个要素:
容器一般指Linux Container,是一种轻量级的操作***层虚拟化技术,通过Linux内核的Namespace和Cgroup机制来实现。其中,Namesapce实现了对资源的隔离,Cgroup实现了对进程的行为进行限制。通过将应用所需要的二进制,配置文件以及相关依赖库打包到镜像文件,容器技术大大方便了应用的开发和部署。
Docker是容器技术中最常见的一组实现软件,包括了容器的运行以及管理组件。Docker负责容器的创建,镜像管理以及运行容器中的应用程序。
Kubernetes(即k8s)是一个容器调度,编排平台,可以方便地对一个集群中的大量容器实施配置和管理。其中集群中的一个计算主机称为一个节点(node),Docker就运行在每个节点上,管理该节点中运行的容器实例。
图1示出了可以应用本公开实施例的一种容器热迁移方法及装置的示例性应用环境的***架构100的示意图。如图1所示,***架构100可以包括源物理机101,目的物理机102和网络103。源物理机101与目的物理机102之间通过网络103通讯连接。网络103包括但不限于:广域网、城域网或局域网;上述源物理机101以及目的物理机102包括但不限于:巨型机、大型机、中型机、小型机、微型机或其他各种能够运行虚拟机的物理设备。在容器进程不中断的情况下,通过将待迁移容器从源物理机101迁移至目的物理机102,实现用户无感知的容器热迁移过程。
本公开实施例所提供的容器热迁移方法可以在源物理机101中执行,相应地,容器热迁移装置一般设置于源物理机101中。
以下对本公开实施例的技术方案进行详细阐述:
参考图2所示,本公开提供的一种示例实施方式的容器热迁移方法,可以包括以下步骤:
步骤S210,响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机;通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应。
在本示例实施方式中,容器热迁移命令可以包括应用信息,如应用名称,待迁移容器所在源物理机信息和热迁移目的物理机信息等信息。容器热迁移命令可以是集群的管理模块下发,例如通过Kubernetes(k8s)平台下发。容器热迁移命令也可以通过用户触发,例如,可以由软件开发人员进行触发配置。
在本示例实施方式中,第一虚拟机可以通过rust-vmm创建,rust-vmm是用rust编程语言开发的一组轻量级vmm(virtual machine manager,虚拟机管理器)基础组件,通过自定义vmm创建第一虚拟机,再在第一虚拟机上创建容器,使第一虚拟机与容器一一对应。本示例中创建的第一虚拟机是微型轻量化虚拟机,其可以具有内存资源、CPU、输入输出资源和网络资源,第一虚拟机大小为MB级别,一般在几十MB到一百多MB。
举例而言,本示例的rust-vmm相比于传统的qemu(虚拟化模拟器)更加安全和高效,用户可以在rust-vmm的基础上根据自己的需要构建自定义的vmm。参考图3,在用户空间可以创建多个第一虚拟机,再在每个第一虚拟机内根据用户配置参数设置容器,从而运行相应的容器进程。在内核空间通过KVM(Kernel-based Vritual Machine,基于核的虚拟机)构建多个虚拟机,KVM是Linux内核的一套全虚拟化机制。使用KVM,用户可以在一台物理机上虚拟出多个虚拟机,每个虚拟机的资源都是相对隔离的,可以单独运行不同的操作***和软件,互不影响。虚拟机可以提高整个物理机的资源利用率,并且相比物理机,更加方便管理和部署。
举例而言,参考图4,本公开的第一虚拟机与待迁移容器的创建过程可以包括:
步骤S410,根据用户输入的命令行参数,创建轻量级第一虚拟机。在本示例中,第一虚拟机只有运行所需的基本资源,例如,CPU资源、网络资源、内存资源和输入输出资源,其镜像文件为几十MB,启动和传输速度快。
步骤S420,启动第一虚拟机,加载Linux内核文件,并启动内核初始化流程。
步骤S430,内核初始化完成之后,加载用户传入的ramdisk文件。
本示例在ramdisk文件中,存放有创建容器的应用程序接口服务API server的二进制文件及相关脚本。
步骤S440,内核执行第一个用户态进程(相当于传统Linux***中的init进程)。本示例中,执行第一个用户态进程会启动API server,并创建相应的监听套接口(socket)。
步骤S450,用户连接API server的socket,发出创建容器命令,传入容器创建的相关参数,如CPU、内存空间等。
步骤S460,vmm依照容器创建的相关参数设置容器,创建Namespace,设置Cgroup等必要运行环境,以使第一虚拟机与容器一一对应。
在本示例中,通过以上过程,可以在一个第一虚拟机内对应创建一个容器,该容器可以作为本公开的待迁移容器。
步骤S220,获取所述第一虚拟机的内存数据和运行状态并保存至本地。
在本示例实施方式中,可以将第一虚拟机的内存数据和运行状态转换成数据流保存于本地磁盘或内存中,例如,将第一虚拟机的内存数据和运行状态转储成镜像文件存储于本地磁盘或内存中。本示例中对第一虚拟机的内存数据和运行状态的获取方式不做特殊限制。
步骤S230,将所述第一虚拟机的内存数据和运行状态发送至目的物理机,以使所述目的物理机上的第二虚拟机根据接收到的内存数据和运行状态在目的物理机上恢复所述待迁移容器的运行进程。
在本示例实施方式中,目的物理机上可以包括多个虚拟机,第二虚拟机可以是目的物理机上的一个虚拟机,通过接收到内存数据和运行状态设置第二虚拟机的相应数据,以在目的物理机上恢复待迁移容器的运行。
在本示例实施方式所提供的容器热迁移方法中,一方面可以通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应;再通过将第一虚拟机的内存数据和运行状态热迁移至目的物理机中,实现待迁移容器的热迁移,解决了相关技术中无法对容器内核态进行迁移的问题,实现了待迁移容器内核态和运行态的彻底迁移;另一方面避免了热迁移过程中容器之间的相互干扰。此外,基于rust的虚拟机管理器自定义创建的第一虚拟机是微型轻量级的虚拟机,能够保证热迁移过程的快速进行,不影响容器热迁移速率。
在一些实施例中,所述方法还包括:
通过将所述容器热迁移命令添加至kubectl中的容器主动触发接口下形成面向k8s集群的容器热迁移子命令,以使通过调用所述容器主动触发接口的容器热迁移子命令触发容器热迁移过程。
在本示例实施方式中,在k8s层面,扩充OCI(Open Container Initiative)容器主动触发接口,加入容器热迁移子命令,便于在用户界面通过调用容器主动触发接口来触发容器热迁移过程。本示例中,对k8s容器编排工具的接口进行了扩充,使热迁移成了一个独立的子命令,简化了整个迁移操作。通过扩展kubectl命令,加入live-migrate子命令,可以实现对容器以云原生的方式发起热迁移。
在一些实施例中,所述响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机,包括:
当所述源物理机上包含所述待迁移容器的应用信息的多个容器进程时,通过容器IP地址信息或者容器标识信息在所述应用信息的多个容器进程中指定待迁移容器。
在本示例实施方式中,容器热迁移命令可以包括待迁移容器对应的应用信息,如应用名称或应用标识等。容器热迁移命令还可以包括容器迁出端的物理机信息(如容器迁出端的物理机标识)和容器迁入端的物理机信息(如容器迁出端的物理机标识),本公开不以此为限。当源物理机包含一个应用(待迁移容器对应的应用)的多个容器实例,可以将源物理机上该应用的所有容器实例全部列出,例如,可以将与该应用对应的所有容器实例的IP地址和容器ID全部列出;再通过容器IP地址信息或者容器标识信息指定一个容器为待迁移容器。
基于所述待迁移容器与所述第一虚拟机的一一对应关系,确定所述待迁移容器对应的第一虚拟机。
在本示例实施方式中,在创建第一虚拟机和待迁移容器时,第一虚拟机与待迁移容器是意义对应的,也就是一个第一虚拟机内设置一个容器,当待迁移容器确定时,与其对应的第一虚拟机随之确定。
在一些实施例中,所述方法还包括:
确定所述待迁移容器的运行环境需求。
在本示例实施方式中,运行环境需求可以包括CPU资源、内存资源、磁盘空间、IP资源等中的一个或者多个。
基于所述待迁移容器的运行环境需求,确定所述目的物理机是否满足所述待迁移容器的运行环境需求。例如,根据目的物理机的剩余内存资源确定目的物理机是否能够支撑待迁移容器的运行。
当所述目的物理机满足所述待迁移容器的运行环境需求时,执行容器热迁移命令,否则,报错退出。
在一些实施例中,所述获取所述第一虚拟机的内存数据和运行状态并保存至本地,包括:
暂停所述第一虚拟机的运行进程,读取所述第一虚拟机当前的内存数据和运行状态并保存至本地。
在本示例实施方式中,在接到容器热迁移命令后,可以暂停第一虚拟机的运行进程,并读取第一虚拟机当前的内存数据和运行状态。可以将读取的信息保存在第一虚拟机的磁盘中,也可以将读取的信息保存在第一虚拟机的内存数据中,还可以保存至其他存储模块,本示例对此不做特殊限定。数据保存后即可恢复第一虚拟机的运行,由于本公开的第一虚拟机是微型轻量级虚拟机,其镜像文件只有几十MB,故其内存数据和运行状态的数据读取和保存耗时短(秒级),第一虚拟机的暂停时间短,可以实现用户无感知的热迁移过程。
一些实施例中,所述方法还包括:
暂停所述第一虚拟机的运行进程,将所述内存数据和运行状态发送过程中产生的脏页数据发送至所述目的物理机,以使所述目的物理机上的第二虚拟机根据所述脏页数据运行所述待迁移容器;所述脏页数据包括所述待迁移容器在所述第一虚拟机中运行过程发生变更的数据。
在本示例实施方式中,第一虚拟机发送保存的内存数据和运行状态时,第一虚拟机已恢复运行,故在第一虚拟机发送数据的过程中,第一虚拟机运行会导致部分内存数据页发生变化,标记发生变化的内存页数据为脏页数据。暂停第一虚拟机的运行进程,将第一虚拟机数据发送过程产生的脏页数据发送至目的物理机,使第二虚拟机与第一虚拟机的运行进程相同,实现完全的容器热迁移,且用户无感知。
一些实施例中,所述方法还包括:
响应于容器热迁移命令,确定源物理机上是否存在所述待迁移容器的应用信息。
在本示例实施方式中,容器热迁移命令包含待迁移容器对应的应用信息,据此判断源物理机上是否存在该应用信息,若是,则可以进行容器热迁移,否则,可以报错退出。
当源物理机上存在所述待迁移容器的应用信息,通过启动目的物理机上的第二虚拟机,以使所述第二虚拟机接收所述第一虚拟机的内存数据和运行状态,并利用所述第一虚拟机的内存数据和运行状态配置所述第二虚拟机的相应参数。
在本示例实施方式中,目的物理机在收到容器热迁移命令后,启动一个虚拟机即为第二虚拟机,第二虚拟机可以是与本公开第一虚拟机类似的微型轻量级虚拟机(镜像文件大小为MB级)。采用接收的第一虚拟机的内存数据和运行状态配置第二虚拟机,即可在目的物理机的第二虚拟机中恢复待迁移容器运行进程。
以上实施例涉及的相应过程都可以设置于容器热迁移子命令中,通过调用相应接口的容器热迁移子命令即可实现上述实施例的相应过程。
本公开实现了一种面向云原生的安全容器热迁移。借助KVM虚拟化技术,首先保证了容器的安全隔离。其次能够完整地保存和恢复整个容器的运行状态,包括内核态和用户态。最大程度地还原容器进程的运行环境,保证了迁移前后应用状态的一致性。此外,对k8s容器编排工具的接口进行了扩充,使热迁移成了一个独立的子命令,简化了容器热迁移操作。
以下以一个具体示例说明本公开的容器热迁移方法,参考图5所示,本示例提供的容器热迁移方法包括:
步骤S501,源物理机基于rust-vmm创建第一虚拟机。
本示例中,rust-vmm是用rust编程语言开发的一组轻量级vmm基础组件,用户可以在此基础上根据自己的需要构建自定义的vmm。再根据自定义vmm创建第一虚拟机。第一虚拟机是微型轻量级虚拟机,其镜像文件大小是几十MB到一百多MB,保证迁移速度。
步骤S502,源物理机基于KVM配置第一虚拟机的内核状态。
在本示例中,基于KVM在源物理机中创建的多个第一虚拟机,不同第一虚拟机之间的资源都是相对隔离的,可以单独运行不同的操作***和软件,互不影响,且便于管理和维护。
步骤S503,源物理机在第一虚拟机内创建并运行容器,使该容器与第一虚拟机一一对应。
在本示例实施方式中,第一虚拟机内可以根据用户传入的文件API server二进制文件及相关脚本文件创建容器,并根据用户指令运行容器。一个第一虚拟机配置一个容器进程,使得容器热迁移过程可以转换成虚拟机热迁移过程。
步骤S504,源物理机基于容器热迁移命令暂停待迁移容器所在第一虚拟机的运行。
在本示例中,容器热迁移命令包含源物理机信息、目的物理机信息和待迁移应用名称,基于待迁移应用名称,确定待迁移容器及其所在第一虚拟机。本示例中,在执行容器热迁移命令之前,可以先确定源物理机和目的物理机是否满足以下两个条件:第一,源物理机存在待迁移应用名称的实例;第二,目的物理机满足待迁移容器运行环境需求。在源物理机和目的物理机满足以上两个条件时执行容器热迁移命令,否则不执行后续热迁移过程,可以进行报错退出。
步骤S505,目的物理机基于容器热迁移命令启动第二虚拟机。
步骤S506,源物理机获取并保存第一虚拟机的内存数据和运行状态。
本示例中,可以将第一虚拟机的内存数据和运行状态生成对应迁移数据流。
步骤S507,源物理机恢复第一虚拟机的运行,发送第一虚拟机的内存数据和运行状态给目的物理机。
本示例中,源物理机与目的物理机之间通过本地socket或者网络(TCP协议)进行信息传输。
步骤S508,目的物理机的第二虚拟机接收第一虚拟机的内存数据和运行状态,并据此设置第二虚拟机的内存数据和运行状态。
步骤S509,源物理机判断发送数据量是否达到预设阈值,若是则转入步骤S510。
在本示例中,预设阈值可以根据容器的具体配置情况确定,例如可以设置为80%-90%以上。
步骤S510,再次暂停第一虚拟机,将第一虚拟机发送内存数据和运行状态过程中的脏页数据发送给目的物理机。
在本示例中,当发送数据量达到预设阈值,例如,达到待发送数据量的90%,暂停第一虚拟机运行,发送脏页数据,使得脏页数据量较小,第一虚拟机停机时间短,提升用户体验。
步骤S511,目的物理机接收脏页数据,并给源物理机发出迁移结束通知。
步骤S512,源物理机根据收到的迁移结束通知,销毁第一虚拟机对应的IP资源。
步骤S513,目的物理机根据接收数据配置第二虚拟机,使第二虚拟机恢复迁移容器运行。
以上实施例中的容器热迁移命令可以通过扩展kubectl命令,向其中加入live-migrate子命令,实现了云原生层面的容器热迁移。将容器热迁移与k8s容器编排***进行整合,高效地管理迁移流程,方便用户操作。
本公开提供的容器热迁移方法,首先,使用rust-vmm搭建了专为容器定制的自定义vmm,相比传统容器仅依赖linux cgroup和namespace进行资源隔离,本公开采用KVM虚拟化技术,实现了容器间更好的资源隔离,同时用rust语言开发的vmm更加轻量级且安全性更好,使得虚拟机的大小在MB级别,在此基础上,进一步通过第一虚拟机与待迁移容器的一一对应关系,使得容器热迁移过程通过待迁移容器所在的第一虚拟机实例来完成。迁移前将整个第一虚拟机的内存和设备运行状态保存到镜像文件,通过网络传输到目的物理机,再在目的物理机上恢复容器运行,完成容器的热迁移,避免传统容器热迁移过程内核态无法完全恢复的问题。此外,通过扩展kubectl命令,加入live-migrate子命令,实现了云原生层面的容器热迁移,便于用户操作。
此外,本公开方法能够给存在外部终端的容器创建checkpoint,避免相关技术中(如docker–t)不能给存在外部终端的容器创建checkpoint的问题。本公开创建的安全容器,能够避免容器逃逸(即脱离了Namespace或者Cgroup的限制的容器),避免逃逸容器应用直接访问物理机资源,对物理机造成的安全威胁。
进一步的,本示例实施方式中,还提供了一种容器热迁移装置600。该容器热迁移装置600可以应用于物理机。参考图6所示,该容器热迁移装置600可以包括:
确定模块610,可以用于响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机;通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应。
获取模块620,可以用于获取所述第一虚拟机的内存数据和运行状态并保存至本地。
迁移模块630,可以用于将所述第一虚拟机的内存数据和运行状态发送至目的物理机,以使所述目的物理机上的第二虚拟机根据接收到的内存数据和运行状态在目的物理机上恢复所述待迁移容器的运行进程。
在本公开的一种示例性实施例中,装置600还包括:
触发模块,可以用于通过将所述容器热迁移命令添加至kubectl中的容器主动触发接口下形成面向k8s集群的容器热迁移子命令,以使通过调用所述容器主动触发接口的容器热迁移子命令触发容器热迁移过程。
在本公开的一种示例性实施例中,所述容器热迁移命令包含待迁移容器的应用信息,确定模块610还可以用于:
当所述源物理机上包含所述待迁移容器的应用信息的多个容器进程时,通过容器IP地址信息或者容器标识信息在所述应用信息的多个容器进程中指定待迁移容器。
基于所述待迁移容器与所述第一虚拟机的一一对应关系,确定所述待迁移容器对应的第一虚拟机。
在本公开的一种示例性实施例中,装置600还可以包括校验模块,所述校验模块可以用于:
确定所述待迁移容器的运行环境需求。
基于所述待迁移容器的运行环境需求,确定所述目的物理机是否满足所述待迁移容器的运行环境需求。
当所述目的物理机满足所述待迁移容器的运行环境需求时,执行容器热迁移命令。
在本公开的一种示例性实施例中,获取模块620还可以用于:
暂停所述第一虚拟机的运行进程,读取所述第一虚拟机当前的内存数据和运行状态并保存至本地。
在本公开的一种示例性实施例中,装置600还可以包括迁移子模块,迁移子模块可以用于:
暂停所述第一虚拟机的运行进程,将所述内存数据和运行状态发送过程中产生的脏页数据发送至所述目的物理机,以使所述目的物理机上的第二虚拟机根据所述脏页数据运行所述待迁移容器;所述脏页数据包括所述待迁移容器在所述第一虚拟机中运行过程发生变更的数据。
在本公开的一种示例性实施例中,校验模块还可以用于:
响应于容器热迁移命令,确定源物理机上是否存在所述待迁移容器的应用信息。
当源物理机上存在所述待迁移容器的应用信息,通过启动目的物理机上的第二虚拟机,以使所述第二虚拟机接收所述第一虚拟机的内存数据和运行状态,并利用所述第一虚拟机的内存数据和运行状态配置所述第二虚拟机的相应参数。
上述容器热迁移装置中各模块或单元的具体细节已经在对应的容器热迁移方法中进行了详细的描述,因此此处不再赘述。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图2-图5所示的各个步骤等。
需要说明的是,本公开所示的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
图7示出了适于用来实现本公开实施例的电子设备的计算机***的结构示意图。
需要说明的是,图7示出的电子设备的计算机***700仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***操作所需的各种程序和数据。CPU701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的方法和装置中限定的各种功能。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等,均应视为本公开的一部分。
应可理解的是,本说明书公开和限定的本公开延伸到文中和/或附图中提到或明显的两个或两个以上单独特征的所有可替代组合。所有这些不同的组合构成本公开的多个可替代方面。本说明书的实施方式说明了已知用于实现本公开的最佳方式,并且将使本领域技术人员能够利用本公开。
Claims (10)
1.一种容器热迁移方法,其特征在于,包括:
响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机;通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应;
获取所述第一虚拟机的内存数据和运行状态并保存至本地;
将所述第一虚拟机的内存数据和运行状态发送至目的物理机,以使所述目的物理机上的第二虚拟机根据接收到的内存数据和运行状态在目的物理机上恢复所述待迁移容器的运行进程。
2.根据权利要求1所述的容器热迁移方法,其特征在于,所述方法还包括:
通过将所述容器热迁移命令添加至kubectl中的容器主动触发接口下,形成面向k8s集群的容器热迁移子命令,以使通过调用所述容器主动触发接口的容器热迁移子命令触发容器热迁移过程。
3.根据权利要求1所述的容器热迁移方法,其特征在于,所述容器热迁移命令包含待迁移容器的应用信息,所述响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机,包括:
当所述源物理机上包含所述待迁移容器的应用信息的多个容器进程时,通过容器IP地址信息或者容器标识信息在所述应用信息的多个容器进程中指定待迁移容器;
基于所述待迁移容器与所述第一虚拟机的一一对应关系,确定所述待迁移容器对应的第一虚拟机。
4.根据权利要求1所述的容器热迁移方法,其特征在于,所述方法还包括:
确定所述待迁移容器的运行环境需求;
基于所述待迁移容器的运行环境需求,确定所述目的物理机是否满足所述待迁移容器的运行环境需求;
当所述目的物理机满足所述待迁移容器的运行环境需求时,执行容器热迁移命令。
5.根据权利要求1所述的容器热迁移方法,其特征在于,所述获取所述第一虚拟机的内存数据和运行状态并保存至本地,包括:
暂停所述第一虚拟机的运行进程,读取所述第一虚拟机当前的内存数据和运行状态并保存至本地。
6.根据权利要求1-5任一项所述的容器热迁移方法,其特征在于,所述方法还包括:
暂停所述第一虚拟机的运行进程,将所述内存数据和运行状态发送过程中产生的脏页数据发送至所述目的物理机,以使所述目的物理机上的第二虚拟机根据所述脏页数据运行所述待迁移容器;所述脏页数据包括所述待迁移容器在所述第一虚拟机中运行过程发生变更的数据。
7.根据权利要求4所述的容器热迁移方法,其特征在于,所述方法还包括:
响应于容器热迁移命令,确定源物理机上是否存在所述待迁移容器的应用信息;
当源物理机上存在所述待迁移容器的应用信息,通过启动目的物理机上的第二虚拟机,以使所述第二虚拟机接收所述第一虚拟机的内存数据和运行状态,并利用所述第一虚拟机的内存数据和运行状态配置所述第二虚拟机的相应参数。
8.一种容器热迁移装置,其特征在于,包括:
确定模块,用于响应于容器热迁移命令,确定待迁移容器所在源物理机上的第一虚拟机;通过自定义的虚拟机管理器创建第一虚拟机及待迁移容器,以使所述第一虚拟机与所述待迁移容器一一对应;
获取模块,用于获取所述第一虚拟机的内存数据和运行状态并保存至本地;
迁移模块,用于将所述第一虚拟机的内存数据和运行状态发送至目的物理机,以使所述目的物理机上的第二虚拟机根据接收到的内存数据和运行状态在目的物理机上恢复所述待迁移容器的运行进程。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-7中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210425633.1A CN114968477A (zh) | 2022-04-21 | 2022-04-21 | 容器热迁移方法及容器热迁移装置 |
PCT/CN2023/074127 WO2023202179A1 (zh) | 2022-04-21 | 2023-02-01 | 容器热迁移方法及容器热迁移装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210425633.1A CN114968477A (zh) | 2022-04-21 | 2022-04-21 | 容器热迁移方法及容器热迁移装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114968477A true CN114968477A (zh) | 2022-08-30 |
Family
ID=82979035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210425633.1A Pending CN114968477A (zh) | 2022-04-21 | 2022-04-21 | 容器热迁移方法及容器热迁移装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114968477A (zh) |
WO (1) | WO2023202179A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115292051A (zh) * | 2022-09-26 | 2022-11-04 | 城云科技(中国)有限公司 | 一种gpu资源pod的热迁移方法、装置及应用 |
CN116909689A (zh) * | 2023-09-14 | 2023-10-20 | 中航金网(北京)电子商务有限公司 | 虚拟机热迁移方法、装置、存储介质和电子设备 |
WO2023202179A1 (zh) * | 2022-04-21 | 2023-10-26 | 京东科技信息技术有限公司 | 容器热迁移方法及容器热迁移装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138394A (zh) * | 2015-09-21 | 2015-12-09 | 上海爱数软件有限公司 | 一种热迁移kvm虚拟机的方法及*** |
US10387204B2 (en) * | 2017-05-12 | 2019-08-20 | International Business Machines Corporation | Resource pooling in a virtualized cloud container environment |
CN109885377B (zh) * | 2018-11-23 | 2023-04-28 | ***股份有限公司 | 统一资源调度协调器及其创建虚拟机和/或容器的方法、统一资源调度*** |
CN110569111A (zh) * | 2019-09-12 | 2019-12-13 | 天津华云软件有限公司 | 一种基于传统容器的虚拟机实现方法、装置及*** |
CN114968477A (zh) * | 2022-04-21 | 2022-08-30 | 京东科技信息技术有限公司 | 容器热迁移方法及容器热迁移装置 |
-
2022
- 2022-04-21 CN CN202210425633.1A patent/CN114968477A/zh active Pending
-
2023
- 2023-02-01 WO PCT/CN2023/074127 patent/WO2023202179A1/zh unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023202179A1 (zh) * | 2022-04-21 | 2023-10-26 | 京东科技信息技术有限公司 | 容器热迁移方法及容器热迁移装置 |
CN115292051A (zh) * | 2022-09-26 | 2022-11-04 | 城云科技(中国)有限公司 | 一种gpu资源pod的热迁移方法、装置及应用 |
CN115292051B (zh) * | 2022-09-26 | 2023-01-03 | 城云科技(中国)有限公司 | 一种gpu资源pod的热迁移方法、装置及应用 |
CN116909689A (zh) * | 2023-09-14 | 2023-10-20 | 中航金网(北京)电子商务有限公司 | 虚拟机热迁移方法、装置、存储介质和电子设备 |
CN116909689B (zh) * | 2023-09-14 | 2024-01-16 | 中航国际金网(北京)科技有限公司 | 虚拟机热迁移方法、装置、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023202179A1 (zh) | 2023-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11405274B2 (en) | Managing virtual network functions | |
US20210111957A1 (en) | Methods, systems and apparatus to propagate node configuration changes to services in a distributed environment | |
US9661071B2 (en) | Apparatus, systems and methods for deployment and management of distributed computing systems and applications | |
US9910765B2 (en) | Providing testing environments for software applications using virtualization and a native hardware layer | |
US10416996B1 (en) | System and method for translating affliction programming interfaces for cloud platforms | |
CN112416524A (zh) | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 | |
CN114968477A (zh) | 容器热迁移方法及容器热迁移装置 | |
US10686755B2 (en) | Assigning IP addresses and configuration parameters in hyper-converged infrastructure | |
US11599382B2 (en) | Systems and methods for task processing in a distributed environment | |
US20130132950A1 (en) | Automation of virtual machine installation by splitting an installation into a minimal installation and customization | |
US11132187B2 (en) | Bare metal provisioning of software defined infrastructure | |
US20110185063A1 (en) | Method and system for abstracting non-functional requirements based deployment of virtual machines | |
CN109168328B (zh) | 虚拟机迁移的方法、装置和虚拟化*** | |
US11894983B2 (en) | Simulation and testing of infrastructure as a service scale using a container orchestration engine | |
US11119754B1 (en) | Upgrading system components with forward and backward compatibility | |
CN111104201A (zh) | ***迁移方法和装置、电子设备、存储介质 | |
CN115965517B (zh) | 图形处理器资源管理方法及装置、电子设备和存储介质 | |
CN115943365A (zh) | 用于实例化和透明地迁移执行中的容器化进程的方法和*** | |
US20230138867A1 (en) | Methods for application deployment across multiple computing domains and devices thereof | |
CN107885574B (zh) | 一种虚拟机的部署方法、业务节点、控制装置及控制节点 | |
US11269615B2 (en) | Automatically orchestrating deployments of software-defined storage stacks | |
US20240126903A1 (en) | Simulation of edge computing nodes for hci performance testing | |
US20220334863A1 (en) | Storage system, installation method, and recording medium | |
CN115291972A (zh) | 一种K8s集群的环境配置方法、装置及电子设备 | |
KR20230060211A (ko) | 에지 컴퓨팅 환경을 위한 경량 큐브에지 구성 방법 및 장치 |
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 |