CN115943365A - 用于实例化和透明地迁移执行中的容器化进程的方法和系统 - Google Patents

用于实例化和透明地迁移执行中的容器化进程的方法和系统 Download PDF

Info

Publication number
CN115943365A
CN115943365A CN202180050773.9A CN202180050773A CN115943365A CN 115943365 A CN115943365 A CN 115943365A CN 202180050773 A CN202180050773 A CN 202180050773A CN 115943365 A CN115943365 A CN 115943365A
Authority
CN
China
Prior art keywords
machine
container
executing
containerized
computing device
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
Application number
CN202180050773.9A
Other languages
English (en)
Inventor
沈之明
H·韦瑟斯庞
R·范雷内塞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Essotonin Co
Original Assignee
Essotonin Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Essotonin Co filed Critical Essotonin Co
Publication of CN115943365A publication Critical patent/CN115943365A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4868Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with creation or replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

一种用于实例化和透明地迁移正在执行的容器化进程的方法包括由在第一机器上执行的容器引擎接收在第一机器上实例化容器镜像的指令。容器引擎向在第一机器上执行的修改后的容器运行时进程发送在第一机器上实例化容器镜像的指令。修改后的容器运行时进程在第一机器上生成代表实例化的容器镜像的shim进程。shim进程通过服务器代理将指令转发到在第二机器上执行的代理服务器,服务器代理经由网络连接与代理服务器连接。该代理服务器指导容器镜像的实例化,作为容器化进程。在第一机器上执行的调度器组件确定将该容器化进程迁移到第三机器。调度器组件在执行容器化进程期间指导将容器化进程迁移到第三机器。

Description

用于实例化和透明地迁移执行中的容器化进程的方法和系统
背景技术
本公开内容涉及用于实例化和迁移容器化进程的方法。更具体地说,本文描述的方法和系统涉及用于实例化和透明地迁移执行中的容器化进程的功能。
需要迁移正在执行的进程。传统上,由于执行中的进程对底层操作系统的许多依赖性,在进程执行时迁移该进程是困难的,甚至是不可能的。解决这一需求的传统方法是提供一个虚拟机,进程可以在其中执行,并在虚拟机中包括进程所需的所有硬件和软件资源的虚拟化,然后迁移整个进程。然而,传统的方法通常不提供透明地迁移执行中的进程的功能,该进程在虚拟机内拥有的资源少于所有可用资源。传统的容器运行时进程可以迁移传统的容器化进程(由于它们与其他容器化进程共享操作系统内核,因此容器内的可用资源少于容器内的所有资源),但这种迁移通常不是透明的,也不是在执行容器化进程期间“现场”进行的,因为操作系统内核不能被迁移,而且操作系统与其他进程有很深的联系,因此无法以透明方式进行迁移。
发明内容
一种用于实例化和透明地迁移正在执行的容器化进程的方法,包括由在第一机器上执行的容器引擎接收在第一机器上实例化容器镜像的指令。容器引擎向在第一机器上执行的修改后的容器运行时进程发送在第一机器上实例化容器镜像的指令。修改后的容器运行时进程在第一机器上生成代表实例化的容器镜像的shim进程。shim进程通过服务器代理(proxy)将指令转发到在第二机器上执行的代理服务器(agent),服务器代理经由网络连接与代理服务器连接。该代理服务器指导容器镜像的实例化,作为一个容器化进程。在第一机器上执行的调度器组件确定将该容器化进程迁移到第三机器。调度器组件在执行容器化进程期间,指导将容器化进程迁移到第三机器。
附图说明
通过参考结合附图进行的以下描述,上述和本公开的其他目的、方面、特征和优点将变得更加明显和更好地理解,其中:
图1A是描述用于实例化和透明地迁移执行中的容器化进程的系统的实施例的框图;
图1B是描述用于实例化和透明地迁移执行中的容器化进程的系统的实施例的框图;
图1C是描述用于实例化和透明地迁移执行中的容器化进程的系统的实施例的框图;
图1D是描述用于实例化和透明地迁移执行中的容器化进程的系统的实施例的框图;
图2是描述用于实例化和透明地迁移执行中的容器化进程的方法的实施例的流程图;和
图3A-3C是描述与本文描述的方法和系统相关的计算机的实施例的框图。
具体实施方式
本文描述的方法和系统可以提供用于在执行容器化进程期间实例化和透明地迁移执行中的容器化进程的功能。
现在参考图1A,其是用于实例化和透明地迁移执行中的容器化进程的系统的实施例的框图。简而言之,系统100包括容器引擎103、修改后的容器运行时进程105、shim进程107、服务器代理109、代理服务器111、容器113、文件系统115a、文件系统115b、网络端口117a、网络端口117b、容器编排引擎119、调度器组件121、计算设备106a、计算设备106b和计算设备106c。
计算设备106a-b(可以称为计算设备、计算机、机器或计算机)可以是修改后的计算设备的类型或形式(如下面结合图3A-3C的更详细的描述),其被修改为执行用于提供此处描述的功能的指令;这些修改产生了一种新类型的计算设备,该设备为计算机技术中的问题提供了技术解决方案,例如在执行这些进程期间迁移进程的能力,更具体地说,是实例化和透明地将执行中的容器化进程从一个计算设备迁移到另一个设备的能力。
如本领域技术人员将理解的,机器106a-c中的每一个可以是物理机或虚拟机。如本领域技术人员将理解的,机器106b可以是物理机或虚拟机。
机器106b可以包括用于将容器镜像实例化为容器化进程的功能。正如本领域技术人员所理解的那样,传统的容器(及其相关的容器镜像)共享主机计算设备的内核以在容器内运行应用程序;传统的容器通常只包括二进制文件、库和运行时组件-隔离可以被认为是进程级隔离。因此,传统上,容器化进程与在同一台机器上执行的其他容器化进程共享对操作系统内核的访问;然而,这通常会导致安全风险,因为一个容器的安全漏洞会使所有其他容器面临风险。管理这种风险的一些方法包括提供共享的“外核”,该外核极其微小,并为每个容器提供一个库,该库包括私有的、针对容器的操作系统内核,该内核为该特定容器进行了优化,只包括该容器所需的操作系统资源。因此,本文所述的方法和系统提供了实例化和迁移执行中的容器化进程的功能,这些容器化进程包括专用的操作系统内核。本文所述的方法和系统可以提供用于支持操作系统内核的功能,该操作系统内核可以直接映射到容器化进程的地址空间。本文所述的方法和系统可以提供用于支持操作系统内核的功能,该操作系统内核可以在其自身的地址空间中单独运行以实现隔离。
每个计算设备106可以运行一个沙盒。任何一个计算设备106可以运行一个以上的沙盒。不同的沙盒可以有不同的网络连接。不同的沙盒可以有不同的文件系统。不同的沙盒可以有相同的网络连接。不同的沙盒可以有相同的文件系统。
每个计算设备106可以运行一个虚拟机来代替沙盒或补充沙盒。
每个计算设备106可以运行一组或一系列进程,即两个或更多个一起执行的进程。
每个计算设备106可以执行由专用操作系统(OS)内核生成的容器化进程。如果OS内核是与容器化进程隔离的内核,则容器化进程是一个虚拟机;如果OS内核是作为映射到进程的地址空间的库运行,则这样的OS内核可以称为“X-Container”。
现在参考图1C,框图描述了系统100的一个实施例,其中,一个X-Container平台安装在计算设备106b上,第二个X-Container安装在计算设备106c上,每个X-Container提供用于将容器镜像实例化为容器化进程的功能。在一些实施例中,X-Container平台提供用于将容器化进程从一台机器迁移到另一台机器的功能。X-Container平台可以为将操作系统内核作为库运行提供支持。尽管在图1C中描绘为X-Container平台,但如本领域普通技术人员所理解的和如上所述,可以执行虚拟机来代替X-Container。
返回参考图1A,结合图1B和1C,容器引擎103可以作为软件组件提供。容器引擎103可以作为硬件组件提供。计算设备106a可以执行容器引擎103。容器引擎103可以提供用于接收实例化容器镜像的指令并指导容器镜像的实例化的功能。容器引擎103可以提供用于接收执行修改后的容器进程105的指令的功能。
容器镜像可以是包括专用内核的容器镜像。容器镜像可以是包括在用户模式下作为库执行的专用内核的容器镜像。
系统100可以选择性地包括容器编排引擎119。容器编排引擎119可以在计算设备106a上执行。容器编排引擎119可以在计算设备106d(未示出)上执行。容器引擎103可以与容器编排引擎119通信;例如,容器引擎103可以从容器编排引擎119接收用于实例化容器镜像的指令。
系统100可以包括调度器组件121。调度器组件121可以在计算设备106a上执行。调度器组件121可以在计算设备106d(未示出)上执行。容器引擎103可以与调度器组件121通信;例如,容器引擎103可以从容器编排引擎119接收用于将容器化进程从一个计算设备迁移到另一个计算设备的指令。
修改后的容器运行时进程105可以作为软件组件提供。修改后的容器运行时进程105可以作为硬件组件提供。计算设备106a可以执行修改后的容器运行时进程105。容器引擎103可以执行修改后的容器运行时进程105。容器引擎103可以包括用于接收指令以执行修改后的容器运行时进程105的功能。容器引擎103可以包括用于接收指令以执行修改后的容器运行时进程105,而不是执行常规的或以其他未修改的容器运行时进程(未示出)的功能。修改后的容器运行时进程105可以与shim进程107通信。
修改后的容器运行时进程105包括用于从容器引擎103接收在第一机器上实例化容器镜像的指令的功能。修改后的容器运行时进程105包括用于生成shim进程107的功能。修改后的容器运行时进程105可以包括用于调用应用程序接口(API)以生成shim进程107的功能。
shim进程107可以作为软件组件提供。shim进程107可以作为硬件组件提供。计算设备106a可以执行shim进程107。shim进程107可以提供实例化的容器镜像的表示;例如,shim进程107可以从与打算向实例化容器镜像发送数据并且不知道shim进程107不是实例化容器镜像的组件通信。shim进程107可以从容器引擎103接收指令。虽然本领域普通技术人员将理解,shim进程传统上被置于容器引擎和运行时进程之间,但本文描述的方法和系统实现了shim进程,该进程通过服务器代理109提供修改后的运行时进程和远程机器上的代理之间的通信,服务器代理109可以是shim进程107的一部分。
如本领域技术人员将理解的,沙盒通常封装至少一个容器、与至少一个容器相关联的存储资源以及唯一的网络标识——沙盒可以封装至少一个容器化应用程序的实例以及至少一个容器化应用程序所依赖的至少一个资源;然而,如图1A所示,这里描述的方法和系统可以提供用于将沙盒内的组件与在不同的机器106b上执行的容器连接,而不是与托管沙盒的机器106a的功能。
shim进程107可以通过服务器代理109与代理服务器111连接。在机器106b上执行的工作守护进程(未示出)可以负责执行由在机器106a上执行的修改后的容器运行时进程105发送的一个或多个命令。当修改后的容器运行时进程105在机器106a上创建新的沙盒时,修改后的容器执行时105催生等待来自代理服务器111的连接的shim进程107。修改后的容器运行时进程105从机器106a向机器106b上的工作守护进程发送命令,提供包括关于网络配置的元数据、关于存储器配置的元数据以及关于如何将代理服务器111连接到shim进程107的信息。在机器106b上执行的虚拟机,在内部管理网络上连接到机器106a,并且能够从机器106a和工作守护进程接收消息,接收元数据并执行代理服务器111。代理服务器111处理元数据,并且基于处理后的元数据,与机器106a上运行的shim进程107的建立网络连接。在shim进程107和代理服务器111之间建立这样的网络连接允许代理服务器111和shim进程107通信,即使存在容器化进程和相关联的代理服务器111向不同机器106n的迁移。
服务器代理109可以被提供为软件组件。服务器代理109可以被提供为硬件组件。计算设备106a可以执行服务器代理109。服务器代理109可以在计算设备106a的与容器引擎103不同的部分中单独执行;例如,服务器代理109可以在计算设备106a上的沙盒内执行。如图1B所示,shim进程107可以执行服务器代理109(例如,服务器代理109可以是shim进程107的一部分)。参考回图1A,shim进程107可以与服务器代理109通信。服务器代理109包括用于与代理服务器111通信的功能,例如但不限于将容器化进程从一个计算设备迁移到另一个计算设备的指令。服务器代理109可以包括用于经由虚拟化网络与代理服务器111通信的功能。虚拟化网络可以支持迁移。
代理服务器111可以被提供为软件组件。代理服务器111可以被提供为硬件组件。计算设备106b可以执行代理服务器111。代理服务器111可以是在虚拟机内执行的代理服务器。代理服务器111包括用于通过支持迁移的虚拟化网络与服务器代理109通信的功能;例如,代理服务器111可以包括用于接收指令以在第二计算设备106b上实例化容器镜像的功能。代理服务器111可以包括用于将容器镜像实例化为容器化进程的功能。代理服务器111包括用于与服务器代理109通信的功能。代理服务器111可以包括例如用于接收将容器化进程从计算设备106b迁移到计算设备106c(或任何其他计算设备)的指令的功能。代理服务器111可以包括用于在执行容器化进程期间将容器化进程迁移到第三计算设备106c的功能。
容器编排引擎119可以被提供为软件组件。容器编排引擎119可以被提供为硬件组件。计算设备106a可以执行容器编排引擎119。计算设备106d(未示出)可以执行容器编排引擎119。容器编排引擎119包括用于与容器引擎103通信的功能。容器编排引擎119可以是或包括容器编排工具,例如但不限于KUBERNETES、DOCKER SWARM和APACHE MESOS提供的那些。
调度器组件121可以被提供为软件组件。调度器组件121可以被提供为硬件组件。计算设备106a可以执行调度器组件121。计算设备106d(未示出)可以执行调度器组件121。调度器组件121包括用于与容器引擎103通信的功能。调度器组件121可以提供用于管理迁移的功能。调度器组件121可以监视系统100的状态。调度器组件121可以监视为使用一个或多个虚拟机而收取的一个或更多价格。调度器组件121可以基于一个或多个策略来触发迁移。例如,策略可以包括用于优化成本、最小化延迟或提高可用性的策略。
尽管为了便于讨论,容器引擎103、修改后的容器运行时进程105、shim进程107、服务器代理109、代理服务器111、容器编排组件119和调度器组件121在图1中被描述为单独的模块,但是应当理解,这并不将该架构限制于特定的实现方式中。例如,在任何组合中,这些组件中的一些或全部可以被单个电路或软件功能所包含,或者,可替换地分布在多个计算设备上。
现在参考图2,简而言之,流程图描绘了用于实例化和透明地迁移执行中的容器化进程的方法200的一个实施例。方法200包括由在第一机器上执行的容器引擎接收用于实例化第一机器上的容器镜像的指令(202)。方法200包括由容器引擎向在第一机器上执行的修改后的容器运行时进程发送在第一机器上实例化容器镜像的指令(204)。方法200包括由修改后的容器运行时进程在第一机器上生成表示实例化的容器镜像的shim进程(206)。方法200包括由shim进程通过服务器代理将指令转发到在第二机器上执行的代理服务器,服务器代理经由网络连接与代理服务器(208)连接。方法200包括由在第二机器上执行的代理服务器将容器镜像实例化为容器化进程(210)。方法200包括由在第一机器上执行的调度器组件确定将容器化进程迁移到第三机器(212)。方法200包括在执行容器化进程期间,由调度器组件指导将容器化进程迁移到第三机器(214)。
现在更详细地参考图2并结合图1,方法200包括由在第一机器上执行的容器引擎接收在第一机器中实例化容器镜像的指令,该容器镜像包括专用内核(202)。容器引擎103可以从容器编排引擎119接收指令。
方法200包括由容器引擎向在第一机器上执行的修改后的容器运行时进程发送在第一机器上实例化容器镜像的指令(204)。修改后的容器运行时进程105可以被配置为接收在第一机器上实例化容器镜像的指令,但是首先将实例化容器镜像指令发送到调度器组件121,以接收关于实际目的地机器的指令。然后,调度器组件121可以向修改后的容器运行时进程105提供关于在哪一机器上实例化容器镜像的指令-例如,尽管修改后的容器运行时进程105可以从容器引擎接收在第一机器106a上实例化容器镜像的指令。调度器组件121可以指示修改后的容器运行时进程105在第二机器106b上实例化容器镜像(例如,通过提供要在其上实例化镜像的机器的因特网协议(IP)地址);修改后的容器运行时进程105被配置为执行调度器组件121的指令。修改后的容器进程105与由调度器组件121所确定的机器上执行的工作守护进程通信,以启动确定的机器上的虚拟机,设置网络和存储,并将所确定的机器上的代理服务器111与机器106a上的服务器代理109连接。如果调度器组件121随后确定迁移容器化进程(包括该容器化进程的虚拟机中的代理服务器111),调度器组件121将建立具有新的工作守护进程的新的工作机器106(例如,建立与正在执行的工作机器106d(未示出)的连接,或者指示这样的机器的通电和初始化),并调用运行时进程105以执行实际迁移。
方法200包括由修改后的容器运行时进程在第一机器上生成表示实例化的容器镜像的shim进程(206)。一旦实例化,shim进程107可以直接从容器引擎103接收指令。修改后的容器运行时进程105可以向shim进程107发送用于连接到代理服务器111的指令。作为一个示例,修改后的容器运行时进程105可以向shim进程107发送指令,以期望来自代理服务器111的传入连接请求。修改后的容器运行时进程105可以向服务器代理109发送用于连接到代理服务器111的指令。修改后的容器运行时进程105可以向机器106b发送指令,以指示在实例化的容器镜像将在其中运行的虚拟机中初始化代理服务器111;这样的指令可以包括代理服务器111经由服务器代理109连接到shim进程107的指令,并且可以包括代理服务器111建立这样的连接所需的连接信息。
修改后的容器运行时进程105可以开始执行服务器代理109。可选地,shim进程107开始执行服务器代理109。服务器代理109可以是shim进程107的一个组件,且该组件在shim进程107开始执行时开始执行。如上所述,服务器代理109可以是修改后的服务器代理,该修改后的服务器代理包括用于连接到远程机器上的代理服务器111的功能,而传统服务器代理最多只能在代理服务器与服务器代理在同一机器上执行时连接到代理服务器。本文描述的方法和系统提供了服务器代理和代理服务器的去耦合,使得服务器代理和代理服务器可以通过网络连接进行通信。修改后的容器运行时进程105可以在第一计算设备106a上的本地文件系统115a和第二计算设备106b上的远程文件系统115b之间建立网络连接;以这种方式,当容器113执行并改变文件系统115b内的数据时,文件系统115a具有容器113所做的所有数据修改的最新版本。如果系统100将容器113迁移到不同的机器(例如,第三计算设备106c),则文件系统115a保留容器113访问的所有数据的“真实”或最新副本。类似地,修改后的容器运行时进程105可以在计算设备106a上的网络端口和计算设备106b上的网络接口之间建立网络连接,并将寻址到计算设备106c上的网络口117b的指令路由到计算设备106上的网络端口117a。
方法200包括由shim进程通过与代理服务器(208)连接的服务器代理将指令转发到在第二机器上执行的代理服务器。修改后的容器进程105可能已经提供了用于在执行shim进程107时建立代理服务器111和服务器代理109之间的网络连接的指令。在容器化进程和代理服务器111执行的虚拟机(包括网络端口117b和文件系统115b)与计算设备106a上的shim进程107之间建立网络,使得即使在虚拟机迁移到不同的机器106之后,也可以实现每个组件之间的通信,并允许执行中的进程的透明迁移。
方法200包括由在第二机器上执行的代理服务器将容器镜像实例化为容器化进程(210)。在容器化进程不包括专用OS内核的情况下,系统100可以提供默认的OS内核。
方法200包括由在第一机器上执行的调度器组件确定将容器化进程迁移到第三机器(212)。
方法200包括在执行容器化进程期间,由调度器组件指示将容器化进程迁移到第三机器(216)。容器化进程的迁移可以包括代理服务器111的迁移。容器化进程的迁移可以包括与容器化进程相关联的专用OS内核的迁移。在一些实施例中,计算设备106b和计算设备106c各自执行一个虚拟机,并且调度器组件121指导计算设备106a上的虚拟机将容器113迁移到计算设备106d上的虚拟机。调度器组件121可以指示修改后的容器运行时进程105在计算设备106b和计算设备106c之间进行迁移过程。计算设备106b上的虚拟机可以包括用于将容器化进程迁移到另一机器上的虚拟机的功能。因为在与容器化进程相同的虚拟化空间内的代理服务器111通过网络与机器106a上的shim进程107及其服务器代理109连接,所以即使当容器化进程移动到另一机器106c时,这两个组件也能够保持通信。当虚拟机平台迁移包含容器化进程和代理服务器111两者的沙盒时,虚拟机(现在在接收机器106c上执行)重新配置网络,从而透明地保持代理服务器111和shim进程107之间的连接。容器化进程有专用OS内核(无论是否作为库运行),它与执行中的容器化进程一起迁移。容器化进程的迁移包括容器化进程在其中执行的整个虚拟机的迁移,包括专用OS内核和代理服务器111。如图1D所示,当虚拟机迁移到计算设备106c时,网络、文件系统和计算设备106a上的服务器代理之间的连接持续存在,并且容器化进程的执行可以基本上不间断地继续。
因此,本文描述的方法和系统提供了用于在容器化进程仍在执行时实例化和迁移容器化进程的功能。作为使用该功能的场景的一个示例,该功能可以允许“正确调整大小”或垂直缩放;从一个具有八个处理器和两千兆字节内存的容器镜像的实例开始,系统100可以在实例运行时透明地更改该实例,使得它现在运行在为其提供8个处理器和100千兆字节内存的机器上,或者相反,如果实例不需要其在其上实例化的第一机器上可用的所有资源,则可以减少资源。因此,所述方法可以包括监视容器化进程的资源使用并识别提供更有效使用资源的机器的步骤。在这样的实施例中,本文描述的方法和系统提供了用于在工作负载低时进行迁移的功能,并且消除了用户不需要的机器(物理或虚拟)的使用。调度器组件121可以确定第三计算设备106c提供例如用于以比第二机器提供的效率水平更高的效率水平托管容器化进程的功能。调度器组件121可以确定第三计算设备106c提供例如用于以比第二机器提供的优化级别更高的优化级别托管容器化进程的功能。效率和优化的阈值级别可以由用户指定。
在一些实施例中,调度器组件121可以确定用于特定容器化进程的最佳机器是机器的所有者向用户收取的在最佳机器上执行容器化进程比在不同机器上执行的费用少的机器。例如,本领域普通技术人员将理解,存在“现货市场”,其中一台机器(物理或虚拟)的所有者在保证机器的可用性时以一个价格使机器可用,并且在无法保证机器将保持可用时以较低的价格使机器可使用,这通常仅在机器执行的工作负载可以容忍在任何时候终止时才有用;在这样的实施例中,本文所述的方法和系统可以在先前可用的机器指示其将不再可用(可能很少或没有警告)时提供迁移功能,并且可以在不停止执行容器化进程的情况下进行容器化进程迁移,使得现货市场成为更多类型工作负载的可行选择。本文所述的方法和系统还可以提供用于在先前以第一价格可用的机器现在以高于第一价格的第二价格可用时进行迁移的功能。本文描述的方法和系统还可以提供用于在第二机器以低于使用第一机器的价格的第一价格变得可用时,从第一机器迁移到第二机器的功能。
在一些实施例中,本文所述的方法和系统提供了用于将容器化进程从一台机器迁移到第二机器的功能,其中这两台机器都在同一个网络中和/或由一个实体拥有或维护,而且是跨网络以及从第一实体拥有或维护的机器迁移到第二实体拥有或维护的机器(例如,从一个“云”到另一个)。即,计算设备106b可以驻留在与计算设备106c驻留的域不同的域中;每个实体可以由同一实体或不同实体管理。
本文描述的方法和系统可以提供用于维护容器的副本(或“热备份”),以实现高可用性的功能。用于维护容器副本的功能可以透明地执行,而不是要求对提供要复制的容器在其中执行的沙盒的计算设备进行修改。调度器组件121可以指导容器113的副本的生成;例如,调度器组件121可以指定应该生成执行容器113的副本的时间的时间表。计算设备106c可以生成副本的容器125;例如,在计算设备106c上执行的守护进程可以生成副本。如果正在执行的容器113或计算设备106b崩溃、意外终止或以其他方式意外变得不可用,则方法200可以包括以对容器引擎103透明的方式执行先前生成的作为现在不可用的容器113的副本的容器125。作为示例,服务器代理109可以确定容器113停止执行(例如,在期望容器125继续执行的时间);服务器代理109可以向调度器组件121发送告警。调度器组件121可以识别与容器113相关联的先前生成的副本的容器125,并指导副本的执行。容器125开始与代理服务器123的执行,代理123建立与代理109的新连接。与原始容器113的后续通信将切换到容器125。该切换对容器引擎103和与容器通信的其他组件是透明的。
类似地,本文描述的方法和系统可以提供用于为容器生成检查点的功能(例如,上述迁移功能的“离线”版本)。如本领域技术人员将理解的,检查点可以捕获容器在特定时间点的状态,并且在随后的时间,可以“回滚”容器的状态(例如,可以撤消更改)以匹配容器在生成检查点时的状态;副本可以是容器的备份,其始终是最新的,能够单独执行(例如,副本不是将容器置于其过去的状态的变化列表,而是可以独立于原始容器执行的容器副本)。
在一些实施例中,检查点存储在磁盘上(包括例如外部存储设备上),副本存储在存储器中。用于生成容器检查点的功能可以透明地执行,而不需要对应用本身或容器引擎103进行修改。调度器组件121可以指导容器113的检查点的生成(例如,由容器113在其上执行的计算设备);
例如,调度器组件121可以指定应该生成执行容器113的检查点的时间表。通过执行周期性的增量检查点,系统确保即使在需要检查点,而很少或没有高级警告的情况下,也可以执行完整的检查点;例如,在基础设施故障、虚拟机崩溃和其他故障的情况下,或者当用户出于调试或维护目的需要将系统回滚到以前的状态时。如上结合副本的生成和执行所述,调度器组件121可以接收指示正在执行的容器的问题的告警,识别与正在执行的容器相关联的检查点,并恢复容器的检查点以纠正问题。
在一些实施例中,系统100包括非暂时性计算机可读介质,其包括有形地存储在非临时性计算机可读介质上的计算机程序指令,其中所述指令可由至少一个处理器执行,以执行以上结合图1A-D和图2描述的每个步骤。
应当理解的是,上述系统可以提供这些组件中的任何一个或每一个的多个组件,这些组件可以在一台独立的机器上提供,或者在一些实施例中,在分布式系统的多台机器上提供。短语“在一个实施例中”、“在另一个实施例中”等通常意味着短语之后的特定特征、结构、步骤或特征包括在本公开的至少一个实施例中,并且可以包括在本发明的一个以上实施例中。这样的短语可以但不一定指同一实施例。然而,所附权利要求限定了保护范围;这里提到的实施例提供了示例。
在本公开的各个实施例中使用的术语“A或B”、“A或/和B中的至少一个”、“B或A中的至少之一”或“A或A和/或B中的一个或多个”包括与其一起列举的词的任何和所有组合。例如,“A或B”、“A和B中的至少一个”或“A或A或B中的一个”可能意味着(1)包括至少一个A,(2)至少包括一个B,(3)包括A或B,或(4)包括至少一个A和至少一个B。
上述系统和方法可以被实现为使用编程和/或工程技术来生产软件、固件、硬件或其任何组合的方法、装置或制品。上述技术可以在可编程计算机上执行的一个或多个计算机程序中实现,所述可编程计算机包括处理器、处理器可读的存储介质(包括例如易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。程序代码可以应用于使用输入设备输入的输入,以执行所描述的功能并生成输出。输出可以被提供给一个或多个输出设备。
以下权利要求范围内的每个计算机程序可以用任何编程语言实现,例如汇编语言、机器语言、高级过程编程语言或面向对象编程语言。编程语言可以是例如LISP、PROLOG、PERL、C、C++、C#、JAVA、Python、Rust、Go或任何编译或解释的编程语言。
每个这样的计算机程序可以在计算机程序产品中实现,该计算机程序产品有形地体现在机器可读存储设备中以供计算机处理器执行。方法步骤可以由计算机处理器执行在计算机可读介质上有形地体现的程序来执行,以通过对输入进行操作并生成输出来执行本文描述的方法和系统的功能。例如,合适的处理器包括通用和专用微处理器。通常,处理器从只读存储器和/或随机存取存储器接收指令和数据。适合于有形地体现计算机程序指令的存储设备包括例如所有形式的计算机可读设备、固件、可编程逻辑、固件、固件和/或其组合,硬件(例如,集成电路芯片;电子设备;计算机可读非易失性存储单元;非易失存储器,如半导体存储设备,包括EPROM、EEPROM和闪存设备;磁盘,如内部硬盘和可移动磁盘;磁光盘;和CD-ROM)。上述任何一项都可以由专门设计的ASIC(专用集成电路)或FPGA(现场可编程门阵列)补充或并入。计算机通常还可以从诸如内部盘(未示出)或可移动盘之类的存储介质接收程序和数据。这些元件也将在传统的台式或工作站计算机以及其他适合执行实现本文所述方法的计算机程序的计算机中找到,这些计算机可以与任何数字打印引擎或标记引擎、显示监视器或其他能够在纸张、胶片、显示屏幕或其他输出介质上产生彩色或灰度像素的光栅输出装置结合使用。计算机还可以从第二计算机接收程序和数据(包括例如用于存储在非暂时性计算机可读介质上的指令),该第二计算机经由网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号等提供对程序的访问。
现在参考图3A、3B和3C,框图描绘了关于计算设备的附加细节,该计算设备可以被修改以执行用于实现上述方法和系统的新颖的、不明显的功能。
现在参考图3A,描绘了网络环境的实施例。简要概述,网络环境包括一个或多个客户端302a-302n(也通常称为本地机器302、客户端302、客户端节点302、客户端机器302、客户机计算机302、客户端设备302、计算设备302、端点302、服务器302、终端302或终端节点302)经由一个或多个网络304与一个或多个远程机器306a-306n(通常也称为服务器306或计算设备306)通信。
尽管图3A示出了客户端302与远程机器306之间的网络304,但是客户端302和远程机器306可以在同一网络304上。网络304可以是局域网(LAN),例如公司内联网、城域网(MAN)或广域网(WAN),例如因特网或万维网。在一些实施例中,在客户端302和远程机器306之间存在多个网络304。在这些实施例之一中,网络304'(未示出)可以是专用网络,而网络304可以是公共网络。在这些实施例中的另一个中,网络304可以是专用网络,而网络304'可以是公共网络。在又一个实施例中,网络304和304'都可以是专用网络。在又一个实施例中,网络304和304'都可以是公共网络。
网络304可以是任何类型和/或形式的网络,可以包括以下任何一种:点对点网络、广播网络、广域网、局域网、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光网络)网络、SDH(同步数字层次)网络、无线网络、有线网络、以太网、虚拟专用网络(VPN)、软件定义的网络(SDN)、云内的网络,如AWS VPC(虚拟专用云)网络或Azure虚拟网络(VNet)以及RDMA(远程直接内存访问)网络。在一些实施例中,网络304可以包括无线链路,例如红外信道或卫星频带。网络304的拓扑可以是总线、星形或环形网络拓扑。网络304可以是本领域普通技术人员已知的能够支持这里描述的操作的任何这样的网络拓扑。该网络可以包括利用用于在移动设备(通常包括桌子和手持设备)之间通信的任何协议的移动电话网络,包括AMPS、TDMA、CDMA、GSM、GPRS、UMTS或LTE。在一些实施例中,可以经由不同的协议来传输不同类型的数据。在其他实施例中,相同类型的数据可以通过不同的协议传输。
客户端302和远程机器306(通常称为计算设备300或机器300)可以是任何工作站、台式计算机、膝上型或笔记本计算机、服务器、便携式计算机、移动电话、移动智能手机或其他便携式电信设备、媒体播放设备、游戏系统、移动计算设备或任何其他类型和/或形式的计算,其能够在任何类型和形式的网络上进行通信,并且具有足够的处理器功率和存储器容量来执行本文所述的操作。客户端302可以执行、操作或以其他方式提供应用程序,该应用程序可以是任何类型和/或形式的软件、程序或可执行指令,包括但不限于任何类型和/或形式的网络浏览器、基于网络的客户端、客户端服务器应用程序、ActiveX控件、JAVA小程序、网络服务器、数据库、HPC(高性能计算)应用程序,或能够在客户端302上执行的任何其他类型和/或形式的可执行指令。
在一个实施例中,计算设备306提供网络服务器的功能。网络服务器可以是任何类型的网络服务器,包括作为开源网络服务器的网络服务器、执行专有软件的网络服务器,以及基于云的网络服务器,其中第三方托管执行网络服务器功能的硬件。在一些实施例中,网络服务器306包括开源网络服务器,例如由特拉华州APACHE软件基金会维护的APACHE服务器。在其他实施例中,网络服务器执行专有软件,例如由华盛顿州雷蒙德市的Microsoft公司提供的INTERNET INFORMATION SERVICES产品、由加利福尼亚州Redwood Shores市的ORACLE公司提供的ORACLE IPLANET网络服务器产品或由加利福尼亚州雷德伍德Shores市ORACLE公司提供ORACLE WEBLOGIC产品。
在一些实施例中,系统可以包括多个逻辑分组的远程机器306。在这些实施例之一中,远程机器的逻辑组可以被称为服务器场338。在这些实施例的另一个中,服务器场338可以作为单个实体来管理。
如本领域技术人员将理解的,在一些实施例中,计算设备300可以提供虚拟化环境。在这样的实施例中,计算设备300可以包括管理程序层、虚拟化层和硬件层。管理程序层包括管理程序,该管理程序通过在虚拟化层中执行的至少一个虚拟机来分配和管理对硬件层中的多个物理资源(例如,处理器和磁盘)的访问。虚拟化层包括至少一个操作系统和分配给该至少一个系统的多个虚拟资源。虚拟资源可以包括但不限于多个虚拟处理器和虚拟磁盘,以及诸如虚拟存储器和虚拟网络接口的虚拟资源。多个虚拟资源和操作系统可以被称为虚拟机。管理程序可以以模拟操作系统访问物理设备的任何方式向操作系统提供虚拟资源。管理程序可以向任何数量的客户操作系统提供虚拟资源。
在一些实施例中,计算设备执行一种或多种类型的管理程序。在这些实施例中,管理程序可用于仿真虚拟硬件、划分物理硬件、虚拟化物理硬件以及执行提供对计算环境的访问的虚拟机。管理程序可以包括那些由加利福尼亚州帕洛阿尔托的VMWare公司制造的管理程序;XEN管理程序,一种开源产品,其开发由开源Xen.org社区监督;KVM管理程序,一种开源产品,其开发由开源Linux社区监督;微软提供的HyperV、VirtualServer或虚拟PC管理程序,亚马逊Nitro、亚马逊Firecracker等。在一些实施例中,执行创建客户操作系统可以在其上执行的虚拟机平台的管理程序的计算设备被称为主机服务器。在一些实施例中,管理程序在计算设备上执行的操作系统内执行。在其中一个实施例中,执行操作系统和管理程序的计算设备可以被称为具有主机操作系统(在计算设备上执行的操作系统)和客户操作系统(由管理程序提供的计算资源分区内执行的操作系统)。在其他实施例中,管理程序直接与计算设备上的硬件交互,而不是在主机操作系统上执行。在这些实施例之一中,管理程序可以被称为在“裸机”上执行,指的是包括计算设备的硬件。在一些实施例中,管理程序控制在计算设备上执行的虚拟机的处理器调度和存储器分区。在这些实施例之一中,管理程序控制至少一个虚拟机的执行。在这些实施例中的另一个中,管理程序向至少一个虚拟机呈现由计算设备提供的至少一个硬件资源的抽象。在其他实施例中,管理程序控制是否以及如何向虚拟机呈现物理处理器能力。在一个实施例中,客户操作系统与它在其上执行的虚拟机一起形成完全虚拟化的虚拟机,该虚拟机不知道它是虚拟机;这样的机器可以被称为“域U HVM(硬件虚拟机)”。在另一实施例中,完全虚拟化的机器包括模拟基本输入/输出系统(BIOS)的软件,以便在完全虚拟化机器内执行操作系统。在又一实施例中,完全虚拟化的机器可以包括通过与管理程序通信来提供功能的驱动器;在这样的实施例中,驱动程序通常知道它在虚拟化环境中执行。在另一个实施例中,客户操作系统与它在其上执行的虚拟机一起形成半虚拟化虚拟机,该虚拟机知道它是虚拟机;这样的机器可以被称为“域UHVM(硬件虚拟机)”。在另一实施例中,半虚拟化机器包括完全虚拟化机器不包括的附加驱动程序。
图3B和3C描绘了用于实践客户端302或远程机器306的实施例的计算设备400的框图。如图3B和3C所示,每个计算设备300包括中央处理单元321和主存储器单元322。如图3B所示,计算设备300可以包括存储设备328、安装设备316、网络接口318、输入/输出控制器323、显示设备324a-n、键盘326、诸如鼠标的定点设备327以及一个或多个其他输入/输出设备330a-n。存储设备328可以包括但不限于操作系统和软件。如图3C所示,每个计算设备300还可以包括附加的可选元件,例如存储器端口303、桥接器370、一个或多个输入/输出设备330a-n(通常使用附图标记330表示)以及与中央处理单元321通信的高速缓冲存储器340。
中央处理单元321是响应并处理从主存储器单元322获取的指令的任何逻辑电路。在许多实施例中,中央处理单元321由微处理器单元提供,例如:由加利福尼亚州MountainView的Intel公司制造的那些;由伊利诺伊州绍姆堡的Motorola公司制造的那些;由加利福尼亚州圣克拉拉的Transmeta公司制造的那些;由纽约州White Plains的IBM公司制造的那些;或由加利福尼亚州森尼维尔的Advanced Micro Devices制造的那些。其他示例包括RISC-V处理器、SPARC处理器、ARM处理器、用于构建UNIX/LINUX“白”盒的处理器以及用于移动设备的处理器。计算设备300可以基于这些处理器中的任何一个或能够如本文所述操作的任何其他处理器。
主存储器单元322可以是能够存储数据并允许微处理器321直接访问任何存储位置的一个或多个存储器芯片。主存储器322可以基于能够如本文所述操作的任何可用存储器芯片。在图3B所示的实施例中,处理器321经由系统总线350与主存储器322通信。图3C描绘了计算设备300的实施例,其中处理器经由存储器端口303与主存储器322直接通信。图3C还描绘了一个实施例,其中主处理器321经由辅助总线(有时称为背侧总线)与高速缓冲存储器340直接通信。在其他实施例中,主处理器321使用系统总线350与高速缓冲存储器340通信。
在图3B所示的实施例中,处理器321经由本地系统总线350与各种输入/输出设备330通信。可以使用各种总线将中央处理单元321连接到任何输入/输出设备330,包括VESAVL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI Express总线或NuBus。对于输入/输出设备是视频显示器324的实施例,处理器321可以使用高级图形端口(AGP)与显示器324通信。图3C描绘了计算设备300的实施例,其中主处理器321还经由例如HYPERTRANSPORT、RAPIDIO或INFINIBAND通信技术与输入/输出设备330b直接通信。
各种各样的输入/输出设备330a-n中的一个或多个可以存在于计算设备300中或连接到计算设备300,每个输入/输出设备可以具有相同或不同的类型和/或形式。输入设备包括键盘、鼠标、轨迹板、轨迹球、麦克风、扫描仪、相机和绘图板。输出设备包括视频显示器、扬声器、喷墨打印机、激光打印机、3D打印机和染料升华打印机。输入/输出设备可以由如图3B所示的输入/输出控制器323控制。此外,输入/输出设备还可以为计算设备300提供存储和/或安装介质316。在一些实施例中,计算设备300可以提供USB连接(未显示),以接收手持USB存储设备,例如由加州Los Alamitos的Twintech Industry,Inc.制造的USB闪存盘系列设备。
仍然参考图3B,计算设备400可以支持任何合适的安装设备316,例如用于接收软盘(例如3.5英寸、5.25英寸磁盘或ZIP磁盘)的软盘驱动器;CD-ROM驱动器;CD-R/RW驱动器;DVD-ROM驱动器;各种格式的磁带驱动器;USB设备;硬盘驱动器或适合于安装软件和程序的任何其他设备。在一些实施例中,计算设备300可以提供用于在网络304上安装软件的功能。计算设备300还可以包括存储设备,例如一个或多个硬盘驱动器或独立磁盘的冗余阵列,用于存储操作系统和其他软件。或者,计算设备300可以依赖存储器芯片而不是硬盘来存储。
此外,计算设备300可以包括网络接口318以通过各种连接与网络304接口,这些连接包括但不限于标准电话线、LAN或WAN链路(例如802.11、T1、T3、56kb、X.25、SNA、DECNET、RDMA)、宽带连接(例如ISDN、帧中继、ATM、千兆以太网、SONET上的以太网)、无线连接、,虚拟专用网络(VPN)连接或上述任何或全部的某种组合。可以使用各种通信协议(例如,TCP/IP、IPX、SPX、NetBIOS、以太网、ARCNET、SONET、SDH、光纤分布式数据接口(FDDI)、RS232、IEEE802.11、IEEE 802.11a、IEEE 802.11b、IEEE 802.11g、IEEE 802.11n、802.15.4、蓝牙、ZIGBEE、CDMA、GSM、WiMax和直接异步连接)建立连接。在一个实施例中,计算设备300通过任何类型和/或形式的网关或隧道协议与其他计算设备300'通信,例如GRE、VXLAN、IPIP、SIT、ip6tnl、VTI和VTI6、IP6GRE、FOU、GUE、GENEVE、ERSPAN、安全套接字层(SSL)或传输层安全(TLS)。网络接口318可以包括内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适合于将计算设备300连接到能够通信并执行本文所述操作的任何类型的网络的任何其他设备。
在进一步的实施例中,输入/输出设备330可以是系统总线350和外部通信总线之间的桥梁,例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、火线总线、火线800总线、以太网总线、AppleTalk总线、千兆以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线,光纤通道总线或串行连接的小型计算机系统接口总线。
图3B和3C所示类型的计算设备300通常在操作系统的控制下操作,操作系统控制任务的调度和对系统资源的访问。计算设备300可以运行任何操作系统,诸如MICROSOFTWINDOWS操作系统的任何版本、UNIX和LINUX操作系统的不同版本、Macintosh计算机的任何版本的MAC OS、任何嵌入式操作系统、任何实时操作系统、任何开源操作系统、专有操作系统、用于移动计算设备的任何操作系统、或能够在计算设备上运行并执行本文所述操作的任何其他操作系统。典型的操作系统包括但不限于:WINDOWS 3.x、WINDOWS 95、WINDOWS98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT4.0、WINDOWS CE、WINDOWS XP、WINDOWS7、WINDOWS 8、WINDOWS VISTA和WINDOWS 10,所有这些都由华盛顿州雷蒙德的Microsoft公司制造;MAC OS由加利福尼亚州库比蒂诺的Apple公司制造;纽约州艾蒙克IBM公司制造的OS/2;Red Hat Enterprise Linux,一种Linux-variant操作系统,由北卡罗来纳州罗利市的Red Hat公司发行;Ubuntu,由英国伦敦Canonical公司发行的免费操作系统;CentOS,CentOS.org社区发布的免费操作系统;SUSE Linux,由SUSE发行的免费可用操作系统,或任何类型和/或形式的Unix操作系统等。
已经描述了用于实例化和透明地迁移执行中的容器化进程的方法和系统的某些实施例,对于本领域技术人员来说,显然可以使用结合本公开的概念的其他实施例。

Claims (16)

1.一种用于实例化和透明地迁移执行中的容器化进程的方法,所述方法包括:
由在第一机器上执行的容器引擎接收用于实例化第一机器上的容器镜像的指令;
由所述容器引擎向在所述第一机器上执行的修改后的容器运行时进程发送在所述第一机器上实例化所述容器镜像的指令;
由所述修改后的容器运行时进程在所述第一机器上生成代表所述实例化的容器镜像的shim进程;
由所述shim进程通过服务器代理将所述指令转发到在第二机器上执行的代理服务器,所述服务器代理经由网络连接与所述代理服务器连接;
由所述代理服务器指导所述容器镜像的实例化,作为容器化进程;
由在所述第一机器上执行的调度器组件确定将所述容器化进程迁移到第三机器;和
在执行所述容器化进程期间,由所述调度器组件指导将所述容器化进程迁移到所述第三机器。
2.根据权利要求1所述的方法,其中由所述容器引擎接收在所述第一机器上实例化所述容器镜像的指令还包括由所述容器引擎从在所述第一机器上执行的容器编排引擎接收在所述第一机器上实例化所述容器镜像的指令。
3.根据权利要求1所述的方法,还包括由所述调度器组件确定所述第三机器提供用于以比所述第二机器提供的效率水平更高的效率水平托管所述容器化进程的功能。
4.根据权利要求1所述的方法,还包括由所述调度器组件确定所述第三机器提供用于以比所述第二机器提供的优化级别更高的优化级别托管所述容器化进程的功能。
5.一种用于实例化和透明地迁移执行中的容器化进程的系统,包括:
容器引擎,所述容器引擎在第一机器上执行并接收在所述第一机器上实例化容器镜像的指令;
修改后的容器运行时进程,在所述第一机器上执行,并从所述容器引擎接收在所述第一机器上实例化所述容器镜像的指令;
shim进程(i)表示实例化的容器镜像,(ii)响应于所述修改后的容器运行时进程接收到在所述第一机器上实例化所述容器镜像的指令,由所述修改后的容器运行时在所述第一机器上生成,以及(iii)执行服务器代理;
代理服务器(i)在所述第二机器上执行,(ii)经由网络连接与所述第一机器上的服务器代理连接,(iii)经由所述服务器代理从所述shim进程接收在所述第二机器上实例化所述容器镜像的指令,以及(iv)指导将所述容器镜像实例化为容器化进程;和
调度器组件,其在所述第一机器上执行,确定将所述容器化进程迁移到第三机器,并在执行所述容器化进程期间将所述容器化进程迁移到所述第三机器。
6.根据权利要求5所述的系统,其中所述第一机器是物理计算设备。
7.根据权利要求5所述的系统,其中所述第一机器是虚拟计算设备。
8.根据权利要求5所述的系统,其中所述第二机器是物理计算设备。
9.根据权利要求5所述的系统,其中所述第二机器是虚拟计算设备。
10.根据权利要求5所述的系统,其中所述容器镜像包括专用内核。
11.根据权利要求5所述的系统,其中所述容器镜像包括在用户模式下作为库执行的专用内核。
12.根据权利要求5所述的系统,其中所述系统还包括容器编排引擎。
13.根据权利要求12所述的系统,其中所述容器引擎还包括用于从所述容器编排引擎接收在所述第一机器上实例化容器镜像的指令的功能。
14.根据权利要求5所述的系统,其中所述容器引擎还包括用于接收执行所述修改后的容器运行时进程的指令的功能。
15.根据权利要求5所述的系统,其中所述调度器组件确定所述第三机器提供用于以比所述第二机器提供的效率水平更高的效率水平托管所述容器化进程的功能。
16.根据权利要求5所述的系统,其中所述调度器组件确定所述第三机器提供用于以比所述第二机器提供的优化级别更高的优化级别托管所述容器化进程的功能。
CN202180050773.9A 2020-08-17 2021-08-16 用于实例化和透明地迁移执行中的容器化进程的方法和系统 Pending CN115943365A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063066566P 2020-08-17 2020-08-17
US63/066,566 2020-08-17
US202163211200P 2021-06-16 2021-06-16
US63/211,200 2021-06-16
PCT/US2021/046133 WO2022040082A1 (en) 2020-08-17 2021-08-16 Methods and systems for instantiating and transparently migrating executing containerized processes

Publications (1)

Publication Number Publication Date
CN115943365A true CN115943365A (zh) 2023-04-07

Family

ID=80224142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180050773.9A Pending CN115943365A (zh) 2020-08-17 2021-08-16 用于实例化和透明地迁移执行中的容器化进程的方法和系统

Country Status (9)

Country Link
US (2) US11915031B2 (zh)
EP (1) EP4196875A1 (zh)
JP (1) JP2023537849A (zh)
KR (1) KR20230051280A (zh)
CN (1) CN115943365A (zh)
AU (1) AU2021329808A1 (zh)
CA (1) CA3185498A1 (zh)
IL (1) IL300200B1 (zh)
WO (1) WO2022040082A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11915031B2 (en) 2020-08-17 2024-02-27 Exostellar, Inc. Methods and systems for instantiating and transparently migrating executing containerized processes

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024003962A1 (ja) * 2022-06-26 2024-01-04 三菱電機株式会社 コンテナ移行装置、コンテナ移行方法およびコンテナ移行プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10007584B2 (en) 2015-01-28 2018-06-26 Red Hat, Inc. Automated container migration in a platform-as-a-service system
US10706145B2 (en) 2015-10-01 2020-07-07 Twistlock, Ltd. Runtime detection of vulnerabilities in software containers
US10664323B2 (en) 2018-03-07 2020-05-26 Microsoft Technology Licensing, Llc Live migration of virtual machines in distributed computing systems
US20190347127A1 (en) 2018-05-09 2019-11-14 Red Hat, Inc. Service provisioning and orchestration for virtual machine to container migration
US10922123B2 (en) 2018-12-12 2021-02-16 Microsoft Technology Licensing, Llc Container migration in computing systems
US11175939B2 (en) * 2019-05-09 2021-11-16 International Business Machines Corporation Dynamically changing containerized workload isolation in response to detection of a triggering factor
US20230105439A1 (en) 2020-08-17 2023-04-06 Exotanium, Inc. Methods and systems for instantiating and transparently migrating executing containerized processes
WO2022040082A1 (en) 2020-08-17 2022-02-24 Exotanium, Inc. Methods and systems for instantiating and transparently migrating executing containerized processes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11915031B2 (en) 2020-08-17 2024-02-27 Exostellar, Inc. Methods and systems for instantiating and transparently migrating executing containerized processes

Also Published As

Publication number Publication date
EP4196875A1 (en) 2023-06-21
IL300200B1 (en) 2024-02-01
JP2023537849A (ja) 2023-09-06
IL300200A (en) 2023-03-01
WO2022040082A1 (en) 2022-02-24
US20240143378A1 (en) 2024-05-02
US20220050705A1 (en) 2022-02-17
KR20230051280A (ko) 2023-04-17
AU2021329808A1 (en) 2023-02-16
US11915031B2 (en) 2024-02-27
CA3185498A1 (en) 2022-02-24

Similar Documents

Publication Publication Date Title
US10275851B1 (en) Checkpointing for GPU-as-a-service in cloud computing environment
Singh et al. Containers & Docker: Emerging roles & future of Cloud technology
US20190334765A1 (en) Apparatuses and methods for site configuration management
US20190235904A1 (en) Cloning services in virtualized computing systems
US20210224100A1 (en) Virtual machine migration using multiple, synchronized streams of state data
US20110185063A1 (en) Method and system for abstracting non-functional requirements based deployment of virtual machines
US20240143378A1 (en) Methods and systems for instantiating and transparently migrating executing containerized processes
US10887102B2 (en) Intent framework
US10860353B1 (en) Migrating virtual machines between oversubscribed and undersubscribed compute devices
CN109168328B (zh) 虚拟机迁移的方法、装置和虚拟化系统
US10002016B2 (en) Configuration of virtual machines in view of response time constraints
US20230105439A1 (en) Methods and systems for instantiating and transparently migrating executing containerized processes
CN112286633A (zh) 基于CloudStack平台的虚拟机创建方法、装置、设备及存储介质
US20210320938A1 (en) Network security enforcement device
CN113326098B (zh) 支持kvm虚拟化与容器虚拟化的云管平台
US11829792B1 (en) In-place live migration of compute instances for efficient host domain patching
US11354180B2 (en) Secure backwards compatible orchestration of isolated guests
US11520612B2 (en) Virtual machine migration detection by a hosted operating system
CN114217999A (zh) 一种云桌面系统及方法
US10747567B2 (en) Cluster check services for computing clusters
US20200366604A1 (en) Live application and kernel migration using routing table entries
US11960917B2 (en) Live migration and redundancy for virtualized storage
KR102477931B1 (ko) SDN Platform과 SDC Platform간의 연동 이슈 해결을 위한 Automation 시스템 및 그 구현 방법
US20230015103A1 (en) Live updating a virtual machine virtualizing physical resources
Huawei Technologies Co., Ltd. Virtualization Technology

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information
CB02 Change of applicant information

Address after: USA New York

Applicant after: Xingyue Technology

Address before: USA New York

Applicant before: Essotonin Co.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40088971

Country of ref document: HK