KR20230051280A - 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법 및 시스템 - Google Patents

실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20230051280A
KR20230051280A KR1020237009112A KR20237009112A KR20230051280A KR 20230051280 A KR20230051280 A KR 20230051280A KR 1020237009112 A KR1020237009112 A KR 1020237009112A KR 20237009112 A KR20237009112 A KR 20237009112A KR 20230051280 A KR20230051280 A KR 20230051280A
Authority
KR
South Korea
Prior art keywords
machine
running
container
containerized
processes
Prior art date
Application number
KR1020237009112A
Other languages
English (en)
Inventor
지밍 쉔
하킴 웨더스푼
로베르트 반 레네쎄
Original Assignee
엑소태니엄, 아이엔씨.
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 엑소태니엄, 아이엔씨. filed Critical 엑소태니엄, 아이엔씨.
Publication of KR20230051280A publication Critical patent/KR20230051280A/ko

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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)
  • Mobile Radio Communication Systems (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)

Abstract

실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법은, 제1 머신에서 실행중인 컨테이너 엔진에 의해, 상기 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는 단계를 포함한다. 상기 컨테이너 엔진은, 상기 제1 머신에서 실행중인, 변형된 컨테이너 런타임 프로세스로, 상기 제1 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 상기 명령을 전송한다. 상기 변형된 컨테이너 런타임 프로세스는, 상기 제1 머신에서, 상기 인스턴스화된 컨테이너 이미지를 나타내는 심 프로세스를 생성한다. 상기 심 프로세스는, 상기 명령을, 네트워크 연결을 통해 에이전트에 연결되어 있는 프록시를 통해, 제2 머신에서 실행중인 에이전트로 전달한다. 상기 에이전트는, 컨테이너화된 프로세스로서 상기 컨테이너 이미지의 인스턴스화를 지시한다. 상기 제1 머신에서 실행중인 스케쥴러 컴포넌트는, 제3 머신으로 상기 컨테이너화된 프로세스를 마이그레이션하도록 결정한다. 상기 스케쥴러 컴포넌트는 상기 컨테이너화된 프로세스의 실행 중, 상기 제3 머신으로 상기 컨테이너화된 프로세스의 마이그레이션을 지시한다.

Description

실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법 및 시스템
본 개시는 컨테이너화된 프로세스들을 인스턴스화하고 마이그레이션하기 위한 방법들에 관한 것이다. 보다 상세하게, 여기에 기술된 방법들 및 시스템들은 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 기능에 관한 것이다.
실행중인 프로세스들을 마이그레이션할 필요가 있다. 통상적으로, 기본 운영 체제에 대한 실행중인 프로세스의 많은 종속성들로 인해, 불가능하지는 않지만, 프로세스가 실행하는 동안 프로세스를 마이그레이션하는 것은 어렵다. 이 필요를 해결해줄 종래의 한 가지 접근법은 프로세스가 실행될 수 있는 가상 머신을 제공하고 이 가상 머신에 프로세스가 필요로 하는 모든 하드웨어 및 소프트웨어 자원들의 가상화를 포함시킨 다음 전체 프로세스를 마이그레이션하는 것이다. 하지만, 종래의 접근법들은 통상적으로 가상 머신에서 이용가능한 모든 자원들보다 적은 자원을 갖는 실행중인 프로세스의 투명한 마이그레이션을 위한 기능을 제공하지 않는다. 종래의 컨테이너 런타임 프로세스들은 (다른 컨테이너화된 프로세스들과 운영 체제 커널을 공유하기 때문에, 컨테이너에서 이용가능한 모든 자원들보다 적은 자원을 갖는) 종래의 컨테이너화된 프로세스들을 마이그레이션할 수 있지만, 이 마이그레이션은 통상적으로 컨테이너화된 프로세스의 실행 중 투명하지 않거나 또는 "실시간(live)"으로 수행되지 않는다. 운영 체제 커널은 마이그레이션될 수 없고 운영 체제는 다른 프로세스들과 깊이 연결되어 있어 마이그레이션은 투명한 방식으로 수행될 수 없기 때문이다.
실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법은, 제1 머신에서 실행중인 컨테이너 엔진에 의해, 상기 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는 단계를 포함한다. 상기 컨테이너 엔진은, 상기 제1 머신에서 실행중인, 변형된 컨테이너 런타임 프로세스로, 상기 제1 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 상기 명령을 전송한다. 상기 변형된 컨테이너 런타임 프로세스는, 상기 제1 머신에서, 상기 인스턴스화된 컨테이너 이미지를 나타내는 심 프로세스를 생성한다. 상기 심 프로세스는, 상기 명령을, 네트워크 연결을 통해 에이전트에 연결되어 있는 프록시를 통해, 제2 머신에서 실행중인 에이전트로 전달한다. 상기 에이전트는, 컨테이너화된 프로세스로서 상기 컨테이너 이미지의 인스턴스화를 지시한다. 상기 제1 머신에서 실행중인 스케쥴러 컴포넌트는, 제3 머신으로 상기 컨테이너화된 프로세스를 마이그레이션하도록 결정한다. 상기 스케쥴러 컴포넌트는 상기 컨테이너화된 프로세스의 실행 중, 상기 제3 머신으로 상기 컨테이너화된 프로세스의 마이그레이션을 지시한다.
본 개시의 상기 및 다른 목적들, 측면들, 특징들, 및 장점들은 첨부된 도면들과 함께 이하의 상세한 설명을 참조하면 더 명백해지고 더 잘 이해될 것이다.
도 1a는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템의 일 실시예를 나타내는 블록도이다.
도 1b는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템의 일 실시예를 나타내는 블록도이다.
도 1c는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템의 일 실시예를 나타내는 블록도이다.
도 1d는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템의 일 실시예를 나타내는 블록도이다.
도 2는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템의 일 실시예를 나타내는 흐름도이다.
도 3a 내지 도 3c는 여기에 설명된 방법들 및 시스템들과 관련하여 유용한 컴퓨터들의 실시예들을 나타내는 블록도들이다.
여기에 기술된 방법들 및 시스템들은 컨테이너화된 프로세스의 실행 중 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 기능을 제공할 수 있다.
이제 도 1a를 참조하면, 이 블록도는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템의 일 실시예를 보여준다. 간단히 살펴 보면, 시스템(100)은 컨테이너 엔진(103), 변형된 컨테이너 런타임 프로세스(105), 심 프로세스(107), 프록시(109), 에이전트(111), 컨테이너(113), 파일 시스템(115a), 파일 시스템(115b), 네트워크 포트(117a), 네트워크 포트(117b), 컨테이너 오케스트레이션 엔진(119), 스케쥴러 컴포넌트(121), 컴퓨팅 장치(106a), 컴퓨팅 장치(106b), 및 컴퓨팅 장치(106c)를 포함한다.
(컴퓨팅 장치들, 산출기들, 머신들, 또는 컴퓨터들로 지칭될 수 있는) 컴퓨팅 장치들(106a-b)은, (도 3a 내지 도 3c와 관련하여 이하에서 더 상세하게 설명되는 바와 같이) 여기서 기술되는 기능을 제공하기 위한 명령들을 실행하도록 변형된 컴퓨팅 장치의 변형된 종류 또는 형태일 수 있고; 이 변형들은 프로세스들의 실행 중 프로세스들을 마이그레이션하는 능력, 및 보다 구체적으로, 실행중인 컨테이너화된 프로세스들을 하나의 컴퓨팅 장치로부터 다른 컴퓨팅 장치로 인스턴스화하고 투명하게 마이그레이션하는 능력과 같이, 컴퓨터 기술에 뿌리를 둔 문제들에 기술적 해법들을 제공하는 새로운 종류의 컴퓨팅 장치로 귀결된다.
당업자에 의해 이해되는 바와 같이, 머신들(106a-c) 각각은 물리적 머신 또는 가상 머신일 수 있다. 당업자에 의해 이해되는 바와 같이, 머신(106b)은 물리적 머신 또는 가상 머신일 수 있다.
머신(106b)은 컨테이너화된 프로세스로서 컨테이너 이미지를 인스턴스화하기 위한 기능을 포함할 수 있다. 당업자에 의해 이해되는 바와 같이, 종래의 컨테이너들 (및 이와 연관된 컨테이너 이미지들)은 컨테이너에서 애플리케이션을 실행하기 위해 호스트 컴퓨팅 장치의 커널을 공유한다; 종래의 컨테이너는 통상적으로 바이너리들, 라이브러리들, 및 런타임 컴포넌트들만 포함한다 - 격리(isolation)는 프로세스-수준 격리인 것으로 간주될 수 있다. 통상적으로, 그러므로, 컨테이너화된 프로세스들은 운영 체제 커널에의 억세스를 동일한 머신에서 실행중인 다른 컨테이너화된 프로세스들과 공유한다; 하지만, 하나의 컨테이너에서의 보안 취약성이 다른 컨테이너들 모두를 위험에 빠뜨릴 수 있기 때문에, 이것은 통상적으로 보안 위험으로 귀결된다. 이러한 위험을 관리하려는 접근법들은 극히 최소로 공유되는 "엑소커널(exokernel)"을 제공하고 또한 해당 컨테이너에 의해 필요한 운영 체제 자원들만을 포함하도록 특정 컨테이너에 대하여 최적화되는, 전용의 컨테이너-특정 운영 체제 커널을 포함하는 라이브러리를 각 컨테이너에 제공하는 것을 포함한다. 따라서, 여기서 기술되는 방법들 및 시스템들은 전용 운영 체제 커널들을 포함하는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 마이그레이션하기 위한 기능을 제공한다. 여기서 기술되는 방법들 및 시스템들은 컨테이너화된 프로세스의 어드레스 공간에 직접 매핑될 수 있는 운영 체제 커널을 지원하기 위한 기능을 제공할 수 있다. 여기서 기술되는 방법들 및 시스템들은 격리를 위한 그 자체의 어드레스 공간에서 별개로 실행될 수 있는 운영 체제 커널을 지원하기 위한 기능을 제공할 수 있다.
각 컴퓨팅 장치(106)는 샌드박스(sandbox)를 실행할 수 있다. 어떠한 컴퓨팅 장치들(106)이라도 하나 이상의 샌드박스를 실행할 수 있다. 다른 샌드박스들은 다른 네트워크 연결들을 가질 수 있다. 다른 샌드박스들은 다른 파일 시스템들을 가질 수 있다. 다른 샌드박스들은 동일한 네트워크 연결들을 가질 수 있다. 다른 샌드박스들은 동일한 파일 시스템들을 가질 수 있다.
각 컴퓨팅 장치(106)는 샌드박스 대신 또는 이에 추가하여 가상 머신을 실행할 수 있다.
각 컴퓨팅 장치(106)는 한 그룹 또는 번들의 프로세스들, 함께 실행하는 2 또는 그 이상의 프로세스들을 실행할 수 있다.
각 컴퓨팅 장치(106)는 전용 운영 체제(OS) 커널로 생성되는 컨테이너화된 프로세스를 실행할 수 있다. OS 커널이 컨테이너화된 프로세스로부터 격리된 커널이라면, 그때 컨테이너화된 프로세스는 가상 머신이고; OS 커널이 프로세스의 어드레스 공간에 매핑되는 라이브러리로서 실행된다면, 이러한 OS 커널은 "X-컨테이너(X-Container)"로서 지칭될 수 있다.
이제 도 1c를 참조하면, 이 블록도는 X-컨테이너 플랫폼이 컴퓨팅 장치(106b)에 설치되고 제2 X-컨테이너 플랫폼이 컴퓨팅 장치(106c)에 설치된 시스템(100)의 일 실시예를 보여준다. X-컨테이너 플랫폼들 각각은 컨테이너화된 프로세스로서 컨테이너 이미지를 인스턴스화하는 기능을 제공한다. 일부 실시예들에 있어서, X-컨테이너 플랫폼들은 컨테이너화된 프로세스들을 하나의 머신에서 다른 머신으로 마이그레이션하는 기능을 제공한다. X-컨테이너 플랫폼은 라이브러리로서 운영 체제 커널을 실행하기 위한 지원을 제공할 수 있다. 도 1c에서는 X-컨테이너 플랫폼으로서 묘사되었지만, 당업자에 의해 이해되고 상기에서 기술된 바와 같이, 가상 머신이 X-컨테이너 플랫폼 대신 실행될 수 있다.
도 1b 및 도 1c와 함께 도 1a를 다시 참조하면, 컨테이너 엔진(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)은 스케쥴러 컴포넌트(121)로부터, 하나의 컴퓨팅 장치에서 다른 컴퓨팅 장치로 컨테이너화된 프로세스들을 마이그레이션하는 명령들을 수신할 수 있다.
변형된 컨테이너 런타임 프로세스(105)는 소프트웨어로서 제공될 수 있다. 변형된 컨테이너 런타임 프로세스(105)는 하드웨어 컴포넌트로서 제공될 수 있다. 컴퓨팅 장치(106a)는 변형된 컨테이너 런타임 프로세스(105)를 실행할 수 있다. 컨테이너 엔진(103)은 변형된 컨테이너 런타임 프로세스(105)를 실행할 수 있다. 컨테이너 엔진(103)은 변형된 컨테이너 런타임 프로세스(105)를 실행하는 명령들을 수신하는 기능을 포함할 수 있다. 컨테이너 엔진(103)은 기존의 또는 변형되지 않은 컨테이너 런타임 프로세스(미도시)를 실행하는 대신 변형된 컨테이너 런타임 프로세스(105)를 실행하는 명령들을 수신하는 기능을 포함할 수 있다. 변형된 컨테이너 런타임 프로세스(105)는 심 프로세스(107)와 통신할 수 있다.
변형된 컨테이너 런타임 프로세스(105)는 컨테이너 엔진(103)으로부터, 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는 기능을 포함한다. 변형된 컨테이너 런타임 프로세스(105)는 심 프로세스(107)를 생성하는 기능을 포함한다. 변형된 컨테이너 런타임 프로세스(105)는 심 프로세스(107)를 생성하기 위해 API(Application Programming Interface)를 호출하는 기능을 포함할 수 있다.
심 프로세스(107)는 소프트웨어 컴포넌트로서 제공될 수 있다. 심 프로세스(107)는 하드웨어 컴포넌트로서 제공될 수 있다. 컴퓨팅 장치(106a)는 심 프로세스(107)를 실행할 수 있다. 심 프로세스(107)는 인스턴스화된 컨테이너 이미지들의 표현을 제공할 수 있다; 예를 들어, 심 프로세스(107)는, 인스턴스화된 컨테이너 이미지로 데이터를 전송하고자 하고 또한 심 프로세스(107)가 인스턴스화된 컨테이너 이미지가 아닌 것을 알지 못하는 컴포넌트들로부터 통신을 수신할 수 있다. 심 프로세스(107)는 컨테이너 엔진(103)으로부터 명령들을 수신할 수 있다. 당업자는 심 프로세스들이 일반적으로 컨테이너 엔진과 런타임 프로세스 사이에 배치되는 것으로 이해하지만, 여기에 기술된 방법들 및 시스템들은 심 프로세스(107)의 일부일 수 있는, 프록시(109)를 통해, 변형된 런타임 프로세스와 원격 머신 상의 에이전트 간의 통신을 제공하는 심 프로세스를 구현한다.
당업자에 의해 이해되는 바와 같이, 샌드박스는 통상 적어도 하나의 컨테이너, 적어도 하나의 컨테이너와 연관된 저장 자원들, 및 고유한 네트워크 ID를 인캡슐레이션한다(encapsulate) - 샌드박스는 적어도 하나의 컨테이너화된 애플리케이션의 인스턴스 및 적어도 하나의 컨테이너화된 애플리케이션이 종속하는 적어도 하나의 자원의 인스턴스를 인캡슐레이션할 수 있다; 하지만, 도 1a에 도시된 바와 같이, 여기에 기술된 방법들 및 시스템들은 샌드박스 내의 컴포넌트들을 샌드박스를 호스팅하는 머신(106a)과는 다른 머신(106b)에서 실행중인 컨테이너와 연결하는 기능을 제공할 수 있다. .
심 프로세스(107)는 프록시(109)를 통해 에이전트(111)와 연결할 수 있다. 머신(106b)에서 실행중인 워커 데몬(worker daemon, 미도시)은 머신(106a)에서 실행중인 변형된 컨테이너 런타임 프로세스(105)에 의해 보내진 하나 또는 그 이상의 명령들의 실행을 담당할 수 있다. 변형된 컨테이너 런타임 프로세스(105)가 머신(106a) 상에 새로운 샌드박스를 생성할 때, 변형된 컨테이너 런타임 프로세스(105)는 에이전트(111)로부터의 연결을 기다리는 심 프로세스(107)를 생성한다. 변형된 컨테이너 런타임 프로세스(105)는 머신(106a)에서 머신(106b) 상의 워커 데몬으로 명령을 보내어, 네트워크의 설정에 대한 메타데이터, 저장의 설정에 대한 메타데이터 및 에이전트(111)를 심 프로세스(107)에 연결하는 방법에 대한 정보를 포함하는 정보를 제공한다. 내부 관리 네트워크 상에서 머신(106a)에 연결되고 또한 머신(106a) 및 워커 데몬으로부터 메세지들을 수신할 수 있는, 머신(106b)에서 실행중인 가상 머신은 메타데이터를 수신하고 에이전트(111)를 실행한다. 에이전트(111)는 메타데이터를 처리하고 처리된 메타데이터에 기초하여 머신(106a)에서 실행되고 있는 심 프로세스(107)와 네트워크 연결을 설립한다. 심 프로세스(107)와 에이전트(111) 간의 이러한 네트워크 연결의 설립은 컨테이너화된 프로세스와 연관된 에이전트(111)의 다른 머신(106n)으로의 마이그레이션이 있을 때조차도 에이전트(111)와 심 프로세스(107)가 통신하는 것을 허용한다.
프록시(109)는 소프트웨어 컴포넌트로서 제공될 수 있다. 프록시(109)는 하드웨어 컴포넌트로서 제공될 수 있다. 컴퓨팅 장치(106a)는 프록시(109)를 실행할 수 있다. 프록시(109)는 컨테이너 엔진(103)이 아닌 컴퓨팅 장치(106a)의 별개의 부분에서 실행될 수 있다; 예를 들어, 프록시(109)는 컴퓨팅 장치(106a) 상의 샌드박스 내에서 실행될 수 있다. 도 1b에 도시된 바와 같이, 심 프로세스(107)는 프록시(109)를 실행할 수 있다(예. 프록시(109)는 심 프로세스(107)의 부분일 수 있다). 도 1a를 다시 참조하면, 심 프로세스(107)는 프록시(109)와 통신할 수 있다. 프록시(109)는, 예를 들어 이에 한정되지 않고, 하나의 컴퓨팅 장치에서 다른 컴퓨팅 장치로 컨테이너화된 프로세스들을 마이그레이션하는 명령들과 같이, 에이전트(111)와 통신하는 기능을 포함한다. 프록시(109)는 가상 네트워크를 통해 에이전트(111)와 통신하는 기능을 포함할 수 있다. 가상 네트워크는 마이그레이션을 지원할 수 있다.
에이전트(111)는 소프트웨어 컴포넌트로서 제공될 수 있다. 에이전트(111)는 하드웨어 컴포넌트로서 제공될 수 있다. 컴퓨팅 장치(106b)는 에이전트(111)를 실행할 수 있다. 에이전트(111)는 가상 머신 내에서 실행중인 에이전트일 수 있다. 에이전트(111)는 마이그레이션을 지원하는 가상 네트워크를 통해 프록시(109)와 통신하는 기능을 포함한다; 예를 들어, 에이전트(111)는 제2 컴퓨팅 장치(106b) 상에 컨테이너 이미지를 인스턴스화하는 명령들을 수신하는 기능을 포함할 수 있다. 에이전트(111)는 컨테이너화된 프로세스로서 컨테이너 이미지의 인스턴스화를 지시하는 기능을 포함할 수 있다. 에이전트(111)는 프록시(109)와 통신하는 기능을 포함한다. 에이전트(111)는, 예를 들어, 컴퓨팅 장치(106b)에서 컴퓨팅 장치(106c)(또는 기타 다른 컴퓨팅 장치)로 컨테이너화된 프로세스를 마이그레이션하는 명령들을 수신하는 기능을 포함할 수 있다. 에이전트(111)는 컨테이너화된 프로세스의 실행 중 컨테이너화된 프로세스를 제3 컴퓨팅 장치(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)는 하나 또는 그 이상의 정책들(polices)에 기초하여 마이그레이션을 트리거할 수 있다. 정책들은, 예를 들어 비용 최적화, 지연 최소화, 또는 가용성 증가를 위한 정책들을 포함할 수 있다.
논의의 편이를 위해, 컨테이너 엔진(103), 변형된 컨테이너 런타임 프로세스(105), 심 프로세스(107), 프록시(109), 에이전트(111), 컨테이너 오케스트레이션 컴포넌트(119), 및 스케쥴러 컴포넌트(121)가 도 1에 별개의 모듈들로 도시되어 있지만, 이것이 특정 구현으로 아키텍쳐를 제한하지 않음이 이해되어야 한다. 예를 들어, 이 컴포넌트들 중 일부 또는 그 모두가, 어떠한 조합으로든, 하나의 회로 또는 소프트웨어 기능에 의해 포함되거나, 또는 그렇지 않으면, 복수의 컴퓨팅 장치들에 걸쳐 분산될 수 있다.
도 2를 이제 참조하여, 간단히 살펴 보면, 이 흐름도는 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법(200)의 일 실시예를 보여준다. 방법(200)은 제1 머신에서 실행중인 컨테이너 엔진에 의해, 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는 단계를 포함한다(202). 방법(200)은 컨테이너 엔진에 의해, 제1 머신에서 실행중인, 변형된 컨테이너 런타임 프로세스로, 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 전송하는 단계를 포함한다(204). 방법(200)은 변형된 컨테이너 런타임 프로세스에 의해, 제1 머신에서, 인스턴스화된 컨테이너 이미지를 나타내는 심 프로세스를 생성하는 단계를 포함한다(206). 방법(200)은 심 프로세스에 의해, 네트워크 연결을 통해 에이전트에 연결된 프록시를 통해 제2 머신에서 실행중인 에이전트로, 명령을 전달하는 단계를 포함한다(208). 방법(200)은 제2 머신에서 실행중인 에이전트에 의해, 컨테이너화된 프로세스로서 컨테이너 이미지의 인스턴스화를 지시하는 단계를 포함한다(210). 방법(200)은 제1 머신에서 실행중인 스케쥴러 컴포넌트에 의해, 제3 머신으로 컨테이너화된 프로세스를 마이그레이션하도록 결정하는 단계를 포함한다(212). 방법(200)은 스케쥴러 컴포넌트에 의해, 컨테이너화된 프로세스의 실행 중, 제3 머신으로 컨테이너화된 프로세스의 마이그레이션을 지시하는 단계를 포함한다(214).
이제 도 2를 도 1과 연결하여 더 상세하게 참조하면, 방법(200)은 제1 머신에서 실행중인 컨테이너 엔진에 의해, 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는 단계를 포함한다(202). 컨테이너 엔진(103)은 컨테이너 오케스트레이션 엔진(119)으로부터 명령을 수신할 수 있다.
방법(200)은 컨테이너 엔진에 의해, 제1 머신에서 실행중인 변형된 컨테이너 런타임 프로세스로, 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 전송하는 단계(204)를 포함한다. 변형된 컨테이너 런타임 프로세스(105)는 제1 머신 상에 컨테이너 이미지들을 인스턴스화하는 명령들을 수신하지만, 컨테이너 이미지를 인스턴스화하는 명령을 스케쥴러 컴포넌트(121)로 먼저 전송하여 실제 목적지 머신에 대한 명령을 수신하도록 구성될 수 있다. 스케쥴러 컴포넌트(121)는 그후 변형된 컨테이너 런타임 프로세스(105)에게 컨테이너 이미지를 인스턴스화하는 머신에 대한 명령을 제공할 수 있다 - 예를 들어, 변형된 컨테이너 런타임 프로세스(105)가 컨테이너 엔진으로부터 제1 머신(106a) 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신할 수 있지만, 스케쥴러 컴포넌트(121)는 변형된 컨테이너 런타임 프로세스(105)에게 제2 머신(106b) 상에 컨테이너 이미지를 인스턴스화하도록 명령할 수 있다(예. 이미지를 인스턴스화할 머신의 IP(Internet Protocol) 어드레스를 제공함으로써); 변형된 컨테이너 런타임 프로세스(105)는 스케쥴러 컴포넌트(121)의 명령들을 실행하도록 구성된다. 변형된 컨테이너 런타임 프로세스(105)는 스케쥴러 컴포넌트(121)에 의해 식별되는 머신에서 실행중인 워커 데몬과 통신하여, 식별된 머신에서 가상 머신을 시작하고, 네트워크 및 저장부를 설정하고, 식별된 머신 상의 에이전트(111)를 머신(106a) 상의 프록시(109)와 연결한다. 스케쥴러 컴포넌트(121)가 이후에 컨테이너화된 프로세스를 마이그레이션하도록 결정해야 한다면(그 컨테이너화된 프로세스의 가상 머신 내의 에이전트(111)를 포함하여), 스케쥴러 컴포넌트(121)는 새로운 워커 데몬으로 새로운 워커 머신(106)을 설립(예. 실행중인 워커 머신(106d)(미도시)에 연결을 설립하거나, 또는 이러한 머신을 켜고 초기화를 지시)하고 런타임 프로세스(105)를 호출하여 실제 마이그레이션을 수행할 것이다.
방법(200)은 변형된 컨테이너 런타임 프로세스에 의해, 제1 머신에서, 인스턴스화된 컨테이너 이미지를 나타내는 심 프로세스를 생성하는 단계를 포함한다(206). 인스턴스화되면, 심 프로세스(107)는 컨테이너 엔진(103)으로부터 직접 명령들을 수신할 수 있다. 변형된 컨테이너 런타임 프로세스(105)는 에이전트(111)에 연결하기 위해 심 프로세스(107)에게 명령을 전송할 수 있다. 일 예로서, 변형된 컨테이너 런타임 프로세스(105)는 심 프로세스(107)에게 에이전트(111)로부터 착신 연결 요청(incoming connection request)을 기대하도록 명령을 전송할 수 있다. 변형된 컨테이너 런타임 프로세스(105)는 에이전트(111)에 연결하기 위해 프록시(109)에게 명령을 전송할 수 잇다. 변형된 컨테이너 런타임 프로세스(105)는 머신(106b)에게 인스턴스화된 컨테이너 이미지가 실행될 가상 머신에서 에이전트(111)를 초기화하도록 지시하는 명령을 전송할 수 있다; 이러한 명령은 에이전트(111)에게 프록시(109)를 통해 심 프로세스(107)에 연결하는 명령을 포함할 수 있고 또한 에이전트(111)가 이러한 연결을 설립하는 데 필요한 연결 정보를 포함할 수 있다.
변형된 컨테이너 런타임 프로세스(105)는 프록시(109)의 실행을 시작할 수 있다. 또는, 심 프로세스(107)가 프록시(109)의 실행을 시작한다. 프록시(109)는 심 프로세스(107)가 실행을 시작할 때 실행을 시작하는 심 프로세스(107)의 컴포넌트일 수 있다. 상기에서 설명된 바와 같이, 프록시(109)는 에이전트가 프록시와 동일한 머신에서 실행할 때에만, 기껏해야, 에이전트에 연결할 수 있는 종래의 프록시들과는 대조적으로, 원격 머신 상의 에이전트(111)에 연결하는 기능을 포함하는 변형된 프록시일 수 있다. 여기서 기술되는 방법들 및 시스템들은 프록시와 에이전트의 결합해제(de-coupling)를 제공하여 프록시와 에이전트가 네트워크 연결을 통해 통신할 수 있다. 변형된 컨테이너 런타임 프로세스(105)는 제1 컴퓨팅 장치(106a) 상의 로컬 파일 시스템(115a)과 제2 컴퓨팅 장치(106b) 상의 원격 파일 시스템(115b) 간에 네트워크 연결을 설립할 수 있다; 이러한 방식으로, 컨테이너(113)가 실행하여 파일 시스템(115b) 내의 데이터를 변경할 때, 파일 시스템(115a)은 컨테이너(113)에 의한 모든 데이터 변형들의 최신 버전을 가진다. 시스템(100)이 컨테이너(113)를 다른 머신(예. 제3 컴퓨팅 장치(106c))으로 마이그레이션해야 한다면, 파일 시스템(115a)은 컨테이너(113)에 의해 억세스되는 모든 데이터의 "진본(true)" 또는 가장 최신 복사본(copy)을 유지한다. 유사하게, 변형된 컨테이너 런타임 프로세스(105)는 컴퓨팅 장치(106a) 상의 네트워크 포트와 컴퓨팅 장치(106b) 상의 네트워크 포트 간에 네트워크 연결을 설립할 수 있고 또한 컴퓨팅 장치(106b) 상의 네트워크 포트(117b)를 어드레싱하는 명령들을 컴퓨팅 장치(106a) 상의 네트워크 포트(117a)로 라우팅한다.
방법(200)은 심 프로세스에 의해, 명령을 네트워크 연결을 통해 에이전트에 연결된 프록시를 통해 제2 머신에서 실행중인 에이전트로 전달하는 단계를 포함한다(208). 변형된 컨테이너 런타임 프로세스(105)는 심 프로세스(107)를 실행할 때 에이전트(111)와 프록시(109) 간에 네트워크 연결을 설립하는 명령들을 제공할 수 있다. (네트워크 포트(117b) 및 파일 시스템(115b)를 포함하는) 컨테이너화된 프로세스와 에이전트(111)가 실행중인 VM과 컴퓨팅 장치(106a) 상의 심 프로세스(107) 간의 네트워크의 설립은 가상 머신의 다른 머신(106)으로의 마이그레이션 후에도 각 컴포넌트들 간 통신을 가능하게 할 수 있고 또한 실행중인 프로세스의 투명한 마이그레이션을 허용할 수 있다.
방법(200)은 제2 머신에서 실행중인 에이전트에 의해, 컨테이너화된 프로세스로서 컨테이너 이미지의 인스턴스화를 지시하는 단계를 포함한다(210). 컨테이너화된 프로세스가 전용 OS 커널을 포함하지 않는 경우에 있어서, 시스템(100)은 디폴트 OS 커널을 제공할 수 있다.
방법(200)은 제1 머신에서 실행중인 스케쥴러 컴포넌트에 의해, 제3 머신으로 컨테이너화된 프로세스를 마이그레이션하도록 결정하는 단계를 포함한다(212).
방법(200)은 컨테이너화된 프로세스의 실행 중, 스케쥴러 컴포넌트에 의해, 제3 머신으로 컨테이너화된 프로세스의 마이그레이션을 지시하는 단계를 포함한다(216). 컨테이너화된 프로세스의 마이그레이션은 에이전트(111)의 마이그레이션을 포함할 수 있다. 컨테이너화된 프로세스의 마이그레이션은 컨테이너화된 프로세스와 연관된 전용 OS 커널의 마이그레이션을 포함할 수 있다. 일부 실시예들에 있어서, 컴퓨팅 장치(106b) 및 컴퓨팅 장치(106c) 각각은 가상 머신을 실행하고 스케쥴러 컴포넌트(121)는 컴퓨팅 장치(106b) 상의 가상 머신에게 컴퓨팅 장치(106c) 상의 가상 머신으로 컨테이너(113)를 마이그레이션하도록 명령한다. 스케쥴러 컴포넌트(121)는 변형된 컨테이너 런타임 프로세스(105)에게 컴퓨팅 장치(106b)와 컴퓨팅 장치(106c) 간 마이그레이션 프로세스를 수행하도록 명령할 수 있다. 컴퓨팅 장치(106b) 상의 가상 머신은 컨테이너화된 프로세스를 다른 머신 상의 가상 머신으로 마이그레이션하는 기능을 포함할 수 있다. 컨테이너화된 프로세스와 동일한 가상 공간 내의 에이전트(111)는 네트워크를 통해 머신(106a) 상의 심 프로세스(107) 및 그 프록시(109)와 연결되기 때문에, 2 개의 컴포넌트들은 컨테이너화된 프로세스가 다른 머신(106c)으로 이동된 때에도 통신을 유지할 수 있을 것이다. 가상 머신 플랫폼이 컨테이너화된 프로세스 및 에이전트(111) 모두를 담고 있는 샌드박스를 마이그레이션할 때, 가상 머신(이제 수신 머신(106c)에서 실행중인)은 네트워크를 재설정하여 에이전트(111)와 심 프로세스(107) 간의 연결이 투명하게 유지된다. 컨테이너화된 프로세스는 전용 OS 커널을 가지고(라이브러리로서 실행되는지 여부에 상관없이), 이것은 실행중인 컨테이너화된 프로세스와 함께 마이그레이션한다. 컨테이너화된 프로세스의 마이그레이션은 전용 OS 커널 및 에이전트(111)를 포함하여, 컨테이너화된 프로세스가 실행하는 전체 가상 머신의 마이그레이션을 포함한다. 도 1d에 도시된 바와 같이, 가상 머신이 컴퓨팅 장치(106c)로 마이그레이션할 때, 컴퓨팅 장치(106a) 상의 네트워크, 파일 시스템, 및 프록시 간 연결들은 지속되고 컨테이너화된 프로세스의 실행은 실질적으로 중단 없이 계속될 수 있다.
여기에 기술된 방법들 및 시스템들은 이로써 컨테이너화된 프로세스들이 여전히 실행하고 있는 동안 컨테이너화된 프로세스들을 인스턴스화하고 마이그레이션하는 기능을 제공한다. 이 기능을 이용하는 시나리오 중 단지 하나의 예로서, 이에 한정되지는 않지만, 이 기능은 "라이트사이징(right sizing)" 또는 수직적 확장(vertical scaling)을 허용할 수 있다; 8 개의 프로세서 및 2 기가 메모리를 갖는 컨테이너 이미지의 인스턴스에서 시작하면, 시스템(100)은 인스턴스가 실행되고 있어 이제 8 개의 프로세서들 및 100 기가 메모리 - 또는, 반대로, 인스턴스가 인스턴스화되는 제1 머신 상에서 이용가능한 자원들 모두를 요구하지 않는다면 더 적은 자원들 - 을 이에 제공하는 머신 상에서 실행되고 있는 동안 인스턴스를 투명하게 변경할 수 있다. 그러므로, 방법들은 컨테이너화된 프로세스에 의한 자원 사용을 감시하고 또한 자원들의 더 효율적인 사용을 제공하는 머신을 식별하는 단계들을 포함할 수 있다. 이러한 실시예들에 있어서, 여기에 기술된 방법들 및 시스템들은 작업부하가 낮을 때 마이그레이션하고 또한 사용자들이 필요로 하지 않는 (물리적 또는 가상)머신들의 사용을 제거하는 기능을 제공한다. 스케쥴러 컴포넌트(121)는 예를 들어, 제3 컴퓨팅 장치(106c)가 제2 머신에 의해 제공되는 효율 수준보다 더 높은 효율 수준에서 컨테이너화된 프로세스를 호스팅하는 기능을 제공하도록 결정할 수 있다. 스케쥴러 컴포넌트(121)는 예를 들어, 제3 컴퓨팅 장치(106c)가 제2 머신에 의해 제공되는 최적화 수준보다 더 높은 최적화 수준에서 컨테이너화된 프로세스를 호스팅하는 기능을 제공하도록 결정할 수 있다. 효율 및 최적화의 임계 수준들은 사용자들에 의해 규정될 수 있다.
일부 실시예들에 있어서, 스케쥴러 컴포넌트(121)는 특정 컨테이너화된 프로세스에 대한 최적 머신은 머신의 소유자가 다른 머신 상에서보다 최적 머신 상에서 컨테이너화된 프로세스를 실행하기 위해 더 적은 비용을 사용자에게 부과하는 것으로 결정할 수 있다. 예를 들어, 당업자들이 이해하는 바와 같이, 하나의 머신(물리적 또는 가상)의 소유자들이 머신의 이용가능성에 대한 보장이 있을 때 하나의 가격에서 머신을 이용가능하게 만들고 또한 머신이 이용가능하게 남아 있을 것이라는 보장이 없을 때 더 낮은 가격에서 머신을 이용가능하게 만드는 "현물 시장들(spot markets)"이 존재한다. 이것은 통상적으로 머신에 의해 실행되는 작업부하가 어떠한 지점에서든 종결되는 것을 용인할 수 있을 때에만 유용하다; 이러한 실시예들에 있어서, 여기에 기술된 방법들 및 시스템들은 이전에 이용가능했던 머신이 더 이상 이용가능하지 않을 것이고(가능하면 거의 또는 전혀 경고 없이) 또한 컨테이너화된 프로세스의 마이그레이션이 컨테이너화된 프로세스의 실행 중단 없이 발생할 수 있다고 표시될 때 마이그레이션 기능을 제공할 수 있는데, 이것은 현물 시장을 더 많은 유형들의 작업부하들에 대한 실행가능한 옵션으로 만든다. 여기에 기술된 방법들 및 시스템들은 또한 이전에 제1 가격에서 이용가능했던 머신이 이제 제1 가격보다 더 높은 제2 가격에서 이용가능할 때 마이그레이션하는 기능을 제공할 수 있다. 여기에 기술된 방법들 및 시스템들은 또한 제2 머신이 제1 머신을 이용하는 가격보다 더 낮은, 제1 가격에서 이용가능하게 될 때 제1 머신에서 제2 머신으로 마이그레이션하는 기능을 제공할 수 있다.
일부 실시예들에 있어서, 여기에 기술된 방법들 및 시스템들은 양 머신들이 동일한 네트워크에 있고 및/또는 단일 실체(entity)에 의해 소유 또는 관리되는, 하나의 머신에서 제2 머신으로 뿐만 아니라, 네트워크들에 걸쳐서 제1 실체에 의해 소유 또는 관리되는 머신들에서 제2 실체에 의해 소유 또는 관리되는 머신들로(예. 하나의 "클라우드"에서 다른 클라우드로) 컨테이너화된 프로세스들을 마이그레이션하는 기능을 제공한다. 즉, 컴퓨팅 장치(106b)는 컴퓨팅 장치(106c)가 있는 도메인과 다른 도메인에 있을 수 있다; 각 실체는 동일한 실체에 의해 또는 다른 실체에 의해 관리될 수 있다.
여기에 기술된 방법들 및 시스템들은 높은 이용가능성을 위해 컨테이너의 복제본(replica)(또는 "핫 백업(hot backup)")을 유지하는 기능을 제공할 수 있다. 컨테이너 복제본을 유지하는 기능은 복제될 컨테이너가 실행하는 샌드박스를 제공하는 컴퓨팅 장치에 변형을 필요로 하는 대신, 투명하게 실행할 수 있다. 스케쥴러 컴포넌트(121)는 컨테이너(113)의 복제본의 생성을 지시할 수 있다; 예를 들어, 스케쥴러 컴포넌트(121)는 실행중인 컨테이너(113)의 복제본이 생성되어야 하는 시간 스케쥴을 규정할 수 있다. 컴퓨팅 장치(106c)는 복제본 컨테이너(125)를 생성할 수 있다; 예를 들어, 컴퓨팅 장치(106c)에서 실행중인 데몬은 복제본을 생성할 수 있다. 실행중인 컨테이너(113) 또는 컴퓨팅 장치(106b)가 충돌, 예기치 않게 종료, 또는 그렇지 않다면 예기치 않게 이용불가하게 된다면, 방법(200)은 이제-이용불가한 컨테이너(113)의 이전에-생성된 복제본 컨테이너(125)를 컨테이너 엔진(103)에 투명한 방식으로 실행하는 단계를 포함할 수 있다. 예로써, 프록시(109)는 컨테이너(113)가 실행을 중단했다고 결정할 수 있다(예. 컨테이너(125)가 실행을 계속할 것으로 예상되었을 때); 프록시(109)는 스케쥴러 컴포넌트(121)로 경고를 전송할 수 있다. 스케쥴러 컴포넌트(121)는 컨테이너(113)와 연관된, 이전에-생성된 컨테이너 복제본(125)을 식별하고 복제본의 실행을 지시할 수 있다. 컨테이너(125)는 에이전트(123)를 이용해 실행을 시작하는데, 에이전트는 프록시(109)와 새로운 연결을 설립한다. 원본 컨테이너(113)와의 후속 통신들은 컨테이너(125)로 전환될 것이다. 이 전환은 컨테이너 엔진(103) 및 컨테이너와 통신하는 다른 컴포넌트들에 투명하게 발생한다.
유사하게, 여기에 기술된 방법들 및 시스템들은 컨테이너에 대한 체크포인트를 생성하는 기능을 제공할 수 있다(예. 상기에서 기술된 마이그레이션 기능의 "오프라인(offline)" 버전). 당업자에 의해 이해되는 바와 같이, 체크포인트는 특정 시점에서 컨테이너의 상태를 캡쳐할 수 있고 또한 후속하는 시간에서 컨테이너의 상태는 체크포인트의 생성 시점에 있었던 컨테이너의 상태에 일치하도록 "롤백(rolled back)"될 수 있다(예. 변경들이 취소될 수 있다); 복제본은 별개로 실행될 수 있는, 항상 최신인, 컨테이너의 백업일 수 있다(예. 컨테이너를 과거의 상태로 만들기 위해 수행할 변경들의 목록 대신, 복제본은 원본(original)과는 독립적으로 실행할 수 있는 컨테이너의 복사본(copy)이다.) 일부 실시예들에 있어서, 체크포인트들은 (예를 들어, 외부 저장 장치를 포함하여) 디스크에 저장되고 또한 복제본들은 메모리에 저장된다. 컨테이너 체크포인트를 생성하는 기능은, 애플리케이션 그 자체 또는 컨테이너 엔진(103)에 변경을 요구하는 대신, 투명하게 실행할 수 있다. 스케쥴러 컴포넌트(121)는 컨테이너(113)의 체크포인트의 생성을 지시할 수 있다(예. 컨테이너(113)가 실행하는 컴퓨팅 장치에 의해); 예를 들어, 스케쥴러 컴포넌트(121)는 실행중인 컨테이너(113)의 체크포인트가 생성되어야 하는 시간의 스케쥴을 규정할 수 있다. 정기적인, 증분의 체크포인트들을 수행함으로써, 시스템은 거의 또는 전혀 사전 경보 없이 체크포인트가 필요한 경우에서조차도 전체 체크포인트가 실행을 위해 이용가능함을 보장한다; 예를 들어, 기반시설 장애들, 가상 머신 충돌들, 및 기타 장애들의 경우에, 또는 디버깅 또는 유지보수를 목적으로 사용자가 시스템을 이전 상태로 롤백할 필요가 있을 때. 복제본들의 생성 및 실행과 연결하여 상기에서 기술된 바와 같이, 스케쥴러 컴포넌트(121)는 실행중인 컨테이너의 문제를 표시하는 경보를 수신하고, 실행중인 컨테이너와 연관된 체크포인트를 식별하고, 또한 문제를 바로잡기 위해 컨테이너의 체크포인트를 복원할 수 있다.
일부 실시예들에 있어서, 시스템(100)은 비일시적인 컴퓨터-판독 매체 상에 유형적으로 저장되는 컴퓨터 프로그램 명령들을 포함하는, 비일시적인, 컴퓨터-판독가능 매체를 포함하고, 여기서 명령들은 도 1a 내지 도 1d 및 도 2와 연결하여 상기에서 설명된 단계들 각각을 수행하는 적어도 하나의 프로세서에 의해 실행가능하다.
상기에서 기술된 시스템들은 그 컴포넌트들 중 하나 또는 그 각각의 복수의 컴포넌트들을 제공할 수 있고 이 컴포넌트들은 스탠드얼론 머신 또는, 일부 실시예들에 있어서 분산 시스템 내의 복수의 머신들에 제공될 수 있음이 이해되어야 한다. 구절들 '일 실시예에 있어서,'다른 실시예에 있어서' 등은 일반적으로 이 구절을 따르는 특정한 특징, 구조, 단계, 또는 특성이 본 개시의 적어도 일 실시예에 포함되고 또한 본 개시의 하나 이상의 실시예에 포함될 수 있음을 의미한다. 이러한 구절은, 반드시 그렇지 않지만, 동일한 실시예를 언급할 수 있다. 하지만, 보호의 범위는 첨부된 청구항들에 의해 정의된다; 여기에 언급된 실시예들은 예들을 제공한다.
본 개시의 다양한 실시예들에서 사용된 용어들 "A 또는 B", "A 또는/및 B 중 적어도 하나", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", 또는 "A 또는/및 B 중 하나 또는 그 이상"은 열거된 단어들의 어떤 하나 및 모든 조합들을 포함한다. 예를 들어, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나"는 (1) 적어도 하나 A를 포함하고, (2) 적어도 하나 B를 포함하고, (3) A 또는 B 둘 중 하나를 포함하고, 또는 (4) 적어도 하나 A 및 적어도 하나 B 모두를 포함하는 것을 의미할 수 있다.
여기에 기술된 시스템들 및 방법들은 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 생성하는 프로그래밍 및/또는 엔지니어링 기술들을 이용해, 방법, 장치, 또는 제조 물품으로 구현될 수 있다. 상기에 기술된 기술들은 프로세서, 프로세서에 의해 판독가능한 저장 매체(예를 들어, 휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함하여), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함하는 프로그래밍가능한 컴퓨터에서 실행하는 하나 또는 그 이상의 컴퓨터 프로그램들로 구현될 수 있다. 프로그램 코드는 입력 장치를 이용해 입력되는 입력에 적용되어 설명된 기능들을 수행하고 출력을 생성할 수 있다. 출력은 하나 또는 그 이상의 출력 장치들로 제공될 수 있다.
이하의 청구항들의 범위 내의 각 컴퓨터 프로그램은, 어셈블리 언어, 기계어, 고급 절차적 프로그래밍 언어, 또는 객체-지향 프로그래밍 언어와 같은, 어떠한 프로그래밍 언어로든 구현될 수 있다. 프로그래밍 언어는, 예를 들어, LISP, PROLOG, PERL, C, C++, C#, JAVA, Python, Rust, Go, 또는 컴파일되거나 또는 해석된 프로그래밍 언어일 수 있다.
이러한 컴퓨터 프로그램 각각은 컴퓨터 프로세서에 의한 실행을 위해 기계-판독가능 저장 장치에 유형적으로 구현되는 컴퓨터 프로그램 제품으로 구현될 수 있다. 방법 단계들은 입력에 대하여 작동하여 출력을 생성함으로써 여기에 기술된 방법들 및 시스템들의 기능들을 수행하는 컴퓨터-판독가능 매체에 유형적으로 구현되는 프로그램을 실행하는 컴퓨터 프로세서에 의해 수행될 수 있다. 적절한 프로세스들은, 예를 들어, 범용 및 특수 목적 마이크로프로세서들을 포함한다. 일반적으로, 프로세서는 명령들 및 데이터를 ROM(read-only memory) 및/또는 RAM(random access memory)으로부터 수신한다. 컴퓨터 프로그램 명령들을 유형적으로 구현하기에 적절한 저장 장치들은, 예를 들어, 컴퓨터-판독가능 장치들, 펌웨어, 프로그램가능 로직, 하드웨어의 모든 형태들을 포함한다(예. 집적 회로 칩; 전자 장치들; 컴퓨터-판독가능 비휘발성 저장 유닛; EPROM, EEPROM, 및 플래쉬 메모리 장치들을 포함하여, 반도체 메모리 장치와 같은, 비휘발성 메모리; 내부 하드 디스크들 및 제거가능한 디스크들과 같은 자기 디스크들; 광자기 디스크들; 및 CD-ROM들). 상기 중 어느 것이라도 특별히 설계된 ASICs(application-specific integrated circuits) 또는 FPGAs(Field-Programmable Gate Arrays)에 의해 공급되거나 또는 이에 통합될 수 있다. 컴퓨터는 또한 일반적으로 프로그램들 및 데이터를 내부 디스크(미도시) 또는 제거가능한 디스크와 같은 저장 매체로부터 수신할 수 있다. 이 요소들은 또한 종래의 데스크탑 또는 워크스테이션 컴퓨터 뿐만 아니라 여기에 기술된 방법들을 구현하는 컴퓨터 프로그램들을 실행하기에 적절한 기타 컴퓨터들에서 발견될 것이고, 이것은 디지털 인쇄 엔진 또는 마킹 엔진, 디스플레이 모니터, 또는 종이, 필름, 디스플레이 화면, 또는 기타 출력 매체 상에 색상 또는 그레이스케일 픽셀들을 생성할 수 있는 기타 래스터 출력 장치와 함께 사용될 수 있다. 컴퓨터는 또한 프로그램들 및 데이터(예를 들어, 비일시적 컴퓨터-판독가능 매체 상에 저장을 위한 명령들을 포함하여)를 네트워크 전송 선로, 무선 전송 매체, 공간을 통해 전파하는 신호들, 무선 전파, 적외선 신호들, 등을 통해 프로그램들에 억세스를 제공하는 제2 컴퓨터로부터 수신할 수 있다.
이제 도 3a, 도 3b, 및 도 3c를 참조하면, 블록도들은 여기에 설명된 방법들 및 시스템들을 구현하기 위해 신규하고 비자명한 기능을 실행하도록 변형될 수 있는 컴퓨팅 장치들에 관한 추가적인 상세사항을 보여준다.
이제 도 3a를 참조하면, 네트워크 환경의 일 실시예가 도시되어 있다. 간단히 살펴 보면, 네트워크 환경은 하나 또는 그 이상의 네트워크들(304)을 통해 하나 또는 그 이상의 원격 머신들(306a-306n (또한 일반적으로 서버(들)(306) 또는 컴퓨팅 장치(들)(306)로 지칭됨)과 통신하는, 하나 또는 그 이상의 클라이언트들(302a-302n (또한 일반적으로 로컬 머신(들)(302), 클라이언트(들)(302), 클라이언트 노드(들)(302), 클라이언트 머신(들)(302), 클라이언트 컴퓨터(들)(302), 클라이언트 장치(들)(302), 컴퓨팅 장치(들)(302), 종단점(들)(302), 또는 종단점 노드(들)(302)로 지칭됨)을 포함한다.
도 3a가 클라이언트들(302)과 원격 머신들(306) 간의 네트워크(304)를 보여주지만, 클라이언트들(302)과 원격 머신들(306)은 동일한 네트워크(304) 상에 있을 수 있다. 네트워크(304)는 회사 인트라넷과 같은, LAN(local area network), MAN(metropolitan area network), 또는 인터넷 또는 WWW(World Wide Web)과 같은, WAN(wide area network)일 수 있다. 일부 실시예들에 있어서, 클라이언트들(302)과 원격 머신들(306) 간에 복수의 네트워크들(304)이 있다. 이 실시예들 중 하나에 있어서, 네트워크(304')(미도시)는 사설 네트워크일 수 있고 네트워크(304)는 공중 네트워크일 수 있다. 이 실시예들 중 다른 하나에 있어서, 네트워크(304)는 사설 네트워크일 수 있고 네트워크(304')는 공중 네트워크일 수 있다. 또 다른 실시예에 있어서, 네트워크들(304 및 304')은 모두 사설 네트워크들일 수 있다. 또 다른 실시예에 있어서, 네트워크들(304 및 304')은 모두 공중 네트워크들일 수 있다.
네트워크(304)는 어떠한 유형 및/또는 형태의 네트워크일 수 있고 또한 이하 중 어느 것이라도 포함할 수 있다: 점대점 네트워크(point to point network), 방송 네트워크, WAN(wide area network), LAN(local area network), 통신 네트워크, 데이터 통신 네트워크, 컴퓨터 네트워크, ATM(Asynchronous Transfer Mode) 네트워크, SONET(Synchronous Optical Network) 네트워크, SDH(Synchronous Digital Hierarchy) 네트워크, 무선 네트워크, 유선 네트워크, 이더넷, VPN(virtual private network), SDN(software-defined network), AWS VPC(Virtual Private Cloud) 네트워크 또는 Azure VNet(Virtual Network)과 같은, 클라우드 내의 네트워크, 및 RDMA(Remote Direct Memory Access) 네트워크. 일부 실시예들에 있어서, 네트워크(304)는 적외선 채널 또는 위성 대역과 같은 무선 링크를 포함할 수 있다. 네트워크(304)의 토폴로지는 버스, 스타, 또는 링 네트워크 토폴로지일 수 있다. 네트워크(304)는 여기에 기술된 작동들을 지원할 수 있는 당업자에게 알려진 이러한 네트워크 토폴로지라면 어느 것이라도 될 수 있다. 네트워크는 AMPS, TDMA, CDMA, GSM, GPRS, UMTS, 또는 LTE를 포함하여, 이동 장치들(일반적으로 태블릿 및 핸드헬드 장치들을 포함하는) 간에 통신하는 데 사용되는 프로토콜 또는 프로토콜들을 이용하는 이동 전화 네트워크들을 포함할 수 있다. 일부 실시예들에 있어서, 다른 유형들의 데이터는 다른 프로토콜들을 통해 전송될 수 있다. 다른 실시예들에 있어서, 동일한 유형들의 데이터는 다른 프로토콜들을 통해 전송될 수 있다.
클라이언트(302) 및 원격 머신(306)(일반적으로 컴퓨팅 장치들(300) 또는 머신들(300)로 지칭됨)은 워크스테이션, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 서버, 휴대용 컴퓨터, 이동 전화, 이동 스마트폰, 또는 기타 휴대용 통신 장치, 미디어 재생 장치, 게이밍 시스템, 이동 컴퓨팅 장치, 또는 어떠한 유형 및 형태의 네트워크 상에서도 통신할 수 있고 또한 여기에 설명된 작동들을 수행하기에 충분한 프로세서 파워 및 메모리 용량을 가지는, 기타 유형 및/또는 형태의 컴퓨팅, 통신 또는 미디어 장치일 수 있다. 클라이언트(302)는 애플리케이션을 실행, 작동 또는 그렇지 않다면 제공할 수 있는데, 애플리케이션은 이에 한정되지 않지만 어떠한 유형 및/또는 형태의 웹 브라우저, 웹-기반 클라이언트, 클라이언트-서버 애플리케이션, 액티브X(ActiveX) 제어, JAVA 애플릿, 웹서버, 데이터베이스, HPC(high performance computing) 애플리케이션, 데이터 처리 애플리케이션, 또는 클라이언트(302)에서 실행할 수 있는 기타 유형 및/또는 형태의 실행가능한 명령들을 포함하는, 어떠한 유형 및/또는 형태의 소프트웨어, 프로그램, 또는 실행가능한 명령들일 수 있다.
일 실시예에 있어서, 컴퓨팅 장치(306)는 웹 서버의 기능을 제공한다. 웹 서버는 오픈-소스 웹 서버들인 웹 서버들, 전속적 소프트웨어(proprietary software)를 실행하는 웹 서버들, 및 제3자가 웹 서버의 기능을 실행하는 하드웨어를 호스팅하는 클라우드-기반 웹 서버들을 포함하여, 어떠한 유형의 웹 서버라도 될 수 있다. 일부 실시예들에 있어서, 웹 서버(306)는 델라웨어의 아파치 소프트웨어 재단에 의해 관리되는 APACHE 서버들과 같은, 오픈-소스 웹 서버를 포함한다. 다른 실시예들에 있어서, 웹 서버는 워싱턴주 레드몬드의 마이크로소프트 사에 의해 제공되는 INTERNET INFORMATION SERVICES 제품들, 캘리포니아주 레드우드 쇼어의 오라클 사에 의해 제공되는 ORACLE IPLANET 웹 서버 제품들, 또는 캘리포니아주 레드우드 쇼어의 오라클 사에 의해 제공되는 ORACLE WEBLOGIC 제품들과 같은, 전속적 소프트웨어를 실행한다.
일부 실시예들에 있어서, 시스템은 복수의, 논리적으로-그룹핑되는 원격 머신들(306)을 포함할 수 있다. 이 실시예들 중 하나에 있어서, 원격 머신들의 논리적 그룹은 서버 팜(server farm, 338)으로 지칭될 수 있다. 이 실시예들 중 다른 하나에 있어서, 서버 팜(338)은 단일 실체로서 관리될 수 있다.
당업자에 의해 이해되는 바와 같이, 일부 실시예들에 있어서, 컴퓨팅 장치(300)는 가상화 환경을 제공할 수 있다. 이러한 실시예들에 있어서, 컴퓨팅 장치(300)는 하이퍼바이저 층, 기상화 층, 및 하드웨어 층을 포함할 수 있다. 하이퍼바이저 층은 가상화 층에서 실행하는 적어도 하나의 가상 머신에 의해 하드웨어 층(예. 프로세서(들) 및 디스크(들))의 많은 물리적 자원들에 억세스를 할당하고 관리하는 하이퍼바이저를 포함한다. 가상화 층은 적어도 하나의 운영 체제 및 적어도 하나의 운영 체제에 할당되는 복수의 가상 자원들을 포함한다. 가상 자원들은, 이에 한정되지 않지만, 복수의 가상 프로세서들 및 가상 디스크들 뿐만 아니라, 가상 메모리 및 가상 네트워크 인터페이스들과 같은 가상 자원들을 포함할 수 있다. 복수의 가상 자원들 및 운영 체제는 가상 머신으로 지칭될 수 있다. 하이퍼바이저는 물리적 장치에 억세스를 갖는 운영 체제를 시뮬레이션하는 방식으로 가상 자원들을 운영 체제에 제공할 수 있다. 하이퍼바이저는 가상 자원들을 다수의 게스트 운영 체제들에 제공할 수 있다. 일부 실시예들에 있어서, 컴퓨팅 장치는 하나 또는 그 이상의 유형들의 하이퍼바이저들을 실행한다. 이 실시예들에 있어서, 하이퍼바이저들은 가상 하드웨어를 에뮬레이션하고, 물리적 하드웨어를 분할하고, 물리적 하드웨어를 가상화하고, 컴퓨팅 환경들에 억세스를 제공하는 가상 머신들을 실행하는 데 사용될 수 있다. 하이퍼바이저들은 캘리포니아주 팔로알토의 VMWare 사에 의해 제조되는 것들; 오픈 소스 Xen.org 커뮤니티에 의해 개발이 감독되는 오픈 소스 제품인, XEN 하이퍼바이저; 오픈 소스 Linux 커뮤니티에 의해 개발이 감독되는 오픈 소스 제품인, KVM 하이퍼바이저; 마이크로소프트, 아마존 니트로, 아마존 파이어크랙커 등에 의해 제공되는 가상서버 또는 가상 PC 하이퍼바이저들인, HyperV을 포함할 수 있다. 일부 실시예들에 있어서, 게스트 운영 체제들이 실행할 수 있는 가상 머신 플랫폼을 생성하는 하이퍼바이저를 실행하는 컴퓨팅 장치는 호스트 서버로 지칭된다. 일부 실시예들에 있어서, 하이퍼바이저는 컴퓨팅 장치에서 실행하는 운영 체제 내에서 실행한다. 이 실시예들 중 하나에 있어서, 운영 체제 및 하이퍼바이저를 실행하는 컴퓨팅 장치는 호스트 운영 체제(컴퓨팅 장치에서 실행하는 운영 체제), 및 게스트 운영 체제(하이퍼바이저에 의해 제공되는 컴퓨팅 자원 분할(computing resource partition) 내에서 실행하는 운영 체제)를 가진다고 말할 수 있다. 다른 실시예들에 있어서, 하이퍼바이저는 호스트 운영 체제에서 실행하는 대신, 컴퓨팅 장치 상의 하드웨어와 직접 상호작용한다. 이 실시예들 중 하나에 있어서, 하이퍼바이저는 하드웨어가 컴퓨팅 장치를 포함하는 것을 참고하여, "베어 메탈(bare metal)"에서 실행되는 것으로 말할 수 있다. 일부 실시예들에 있어서, 하이퍼바이저는 컴퓨팅 장치에서 실행하는 가상 머신에 대한 프로세서 스케쥴링 및 메모리 분할을 제어한다. 이 실시예들 중 하나에 있어서, 하이퍼바이저는 적어도 하나의 가상 머신의 실행을 제어한다. 이 실시예들 중 다른 하나에 있어서, 하이퍼바이저는 컴퓨팅 장치에 의해 제공되는 적어도 하나의 하드웨어 자원의 추상화(abstraction)로 적어도 하나의 가상 머신을 제시한다. 다른 실시예들에 있어서, 하이퍼바이저는 물리적 프로세서 능력들이 가상 머신에 제공되는지 여부 및 어떻게 제공되는지를 제어한다. 일 실시예에 있어서, 게스트 운영 체제는, 이를 실행하는 가상 머신과 함께, 이것이 가상 머신인지 알지 못하는, 완전-가상화된(fully-virtualized) 가상 머신을 형성한다; 이러한 머신은 "Domain U HVM (Hardware Virtual Machine)"로서 지칭될 수 있다. 다른 실시예에 있어서, 완전-가상화된 머신은 완전-가상화된 머신 내에서 운영 체제를 실행하기 위해 BIOS(Basic Input/Output System)를 에뮬레이션하는 소프트웨어를 포함한다. 또 다른 실시예에 있어서, 완전-가상화된 머신은 하이퍼바이저와 통신함으로써 기능을 제공하는 드라이버를 포함할 수 있다; 이러한 일 실시예에 있어서, 드라이버는 통상 가상화된 환경 내에서 실행하고 있음을 알고 있다. 다른 실시예에 있어서, 게스트 운영 체제는, 이를 실행하는 가상 머신과 함께, 이것이 가상 머신임을 알고 있는, 준가상화된(paravirtualized) 가상 머신을 형성한다; 이러한 머신은 "Domain U PV virtual machine"로서 지칭될 수 있다. 다른 실시예에 있어서, 준가상화된 머신은 완전-가상화된 머신을 포함하지 않는 추가적인 드라이버들을 포함한다.
도 3b 및 도 3c는 클라이언트(302) 또는 원격 머신(306)의 일 실시예를 실행하는 데 유용한 컴퓨팅 장치(400)의 블록도를 보여준다. 도 3b 및 도 3c에 도시된 바와 같이, 각 컴퓨팅 장치(300)는 중앙 처리 유닛(321), 및 메인 메모리 유닛(322)을 포함한다. 도 3b에 도시된 바와 같이, 컴퓨팅 장치(300)는 저장 장치(328), 설치 장치(316), 네트워크 인터페이스(318), I/O 컨트롤러(323), 디스플레이 장치들(324a-n), 키보드(326), 마우스와 같은, 포인팅 장치(327), 및 하나 또는 그 이상의 기타 I/O 장치들(330a-n)을 포함할 수 있다. 저장 장치(328)는 이에 한정되지 않지만, 운영 체제 및 소프트웨어를 포함할 수 있다. 도 3c에 도시된 바와 같이, 각 컴퓨팅 장치(300)는 또한 중앙 처리 유닛(321)과 통신하는 메모리 포트(303), 브릿지(370), 하나 또는 그 이상의 입/출력 장치들(330a-n)(일반적으로 참조부호 330을 이용하여 지칭됨), 및 캐쉬 메모리(340)와 같은, 추가적인 선택 요소들을 포함할 수 있다.
중앙 처리 유닛(321)은 메인 메모리 유닛(322)으로부터 가져온 명령들에 응답하고 처리하는 논리 회로부이다. 많은 실시예들에 있어서, 중앙 처리 유닛(321)은 이하와 같은, 마이크로프로세서 유닛에 의해 제공된다: 캘리포니아주 마운틴 뷰의 인텔 사에 의해 제조되는 것들; 일리노이주 샴버그의 모토롤라 사에 의해 제조되는 것들; 캘리포니아주 산타 클라라의 트랜스메타 사에 의해 제조되는 것들; 뉴욕주 화이트 플레인즈의 IBM에 의해 제조되는 것들; 또는 캘리포니아주 써니베일의 AMD에 의해 제조되는 것들. 다른 예들은 RISC-V 프로세서들, SPARC 프로세서들, ARM 프로세서들, UNIX/LINUX "화이트(white)" 박스들을 만드는 데 사용되는 프로세서들, 및 이동 장치들을 위한 프로세서들을 포함한다. 컴퓨팅 장치(300)는 이런 프로세서들, 또는 여기에 기술된 바대로 작동할 수 있는 기타 프로세서에 기초할 수 있다.
메인 메모리 유닛(322)은 데이터를 저장할 수 있고 또한 마이크로프로세서(321)에 의해 저장 위치가 직접 억세스되는 것을 허용할 수 있는 하나 또는 그 이상의 메모리 칩들일 수 있다. 메인 메모리(322)는 여기에 기술된 바대로 작동할 수 있는 이용가능한 메모리 칩들에 기초할 수 있다. 도 3b에 도시된 실시예에 있어서, 프로세서(321)는 시스템 버스(350)를 통해 메인 메모리(322)와 통신한다. 도 3c는 프로세서가 메모리 포트(303)를 통해 메인 메모리(322)와 직접 통신하는 컴퓨팅 장치(300)의 일 실시예를 보여준다. 도 3c는 또한 메인 프로세서(321)가 종종 이면 버스(backside bus)로 지칭되는, 2차 버스를 통해 캐쉬 메모리(340)와 직접 통신하는 일 실시예를 보여준다. 다른 실시예들에 있어서, 메인 프로세서(321)는 시스템 버스(350)를 이용해 캐쉬 메모리(340)와 통신한다.
도 3b에 도시된 실시예에 있어서, 프로세서(321)는 로컬 시스템 버스(350)을 통해 다양한 I/O 장치들(330)과 통신한다. 다양한 버스들은 중앙 처리 유닛(321)을 I/O 장치들(330)에 연결하는 데 사용될 수 있고, VESA VL 버스, ISA 버스, EISA 버스, MCA(MicroChannel Architecture) 버스, PCI 버스, PCI-X 버스, PCI-익스프레스(PCI-Express) 버스 또는 누버스(NuBus)를 포함한다. I/O 장치가 비디오 디스플레이(324)인 실시예에서, 프로세서(321)는 디스플레이(324)와 통신하기 위해 AGP(Advanced Graphics Port)를 사용할 수 있다. 도 3c는 메인 프로세서(321) 역시 예를 들어, HYPERTRANSPORT, RAPIDIO, 또는 INFINIBAND 통신 기술을 통해, I/O 장치(330b)와 직접 통신하는 컴퓨팅 장치(300)의 일 실시예를 보여준다.
매우 다양한 I/O 장치들(330a-n) 중 하나 또는 그 이상이 컴퓨팅 장치(300)에 존재하거나 또는 이에 연결될 수 있고, 그 각각은 동일하거나 또는 다른 유형 및/또는 형태일 수 있다. 입력 장치들은 키보드들, 마우스들, 트랙패드들, 트랙볼들, 마이크들, 스캐너들, 카메라들, 및 드로잉 태블릿들을 포함한다. 출력 장치들은 비디오 디스플레이들, 스피커들, 잉크젯 프린터들, 레이저 프린터들, 3D 프린터들, 및 염료승화 프린터들을 포함한다. I/O 장치들은 도 3b에 도시된 바와 같이 I/O 컨트롤러(323)에 의해 제어될 수 있다. 나아가, I/O 장치는 또한 컴퓨팅 장치(300)를 위해 저장부 및/또는 설치 매체(316)를 제공할 수 있다. 일부 실시예들에 있어서, 컴퓨팅 장치(300)는 캘리포니아주 로스 알라미토스의 트윈테크 산업 사에 의해 제조되는 장치들의 USB 플래시 드라이브 라인과 같은 핸드헬드 USB 저장 장치들을 수신하기 위해 USB 연결들(미도시)을 제공할 수 있다.
여전히 도 3b를 참조하면, 컴퓨팅 장치(400)는 3.5-인치, 5.25-인치 디스크들 또는 ZIP 디스크들과 같은 플로피 디스크들을 수신하기 위한 플로피 디스크 드라이브; CD-ROM 드라이브; CD-R/RW 드라이브; DVD-ROM 드라이브, 다양한 형식들의 테이프 드라이브들; USB 장치, 하드-드라이브 또는 소프트웨어 및 프로그램들을 설치하기에 적절한 기타 장치와 같은, 적절한 설치 장치(316)를 지원할 수 있다. 일부 실시예들에 있어서, 컴퓨팅 장치(300)는 네트워크(304)을 거쳐 소프트웨어를 설치하는 기능을 제공할 수 있다. 컴퓨팅 장치(300)는 운영 체제 및 기타 소프트웨어를 저장하기 위한, 하나 또는 그 이상의 하드 디스크 드라이브들 또는 RAID(redundant arrays of independent disks)와 같은, 저장 장치를 더 포함할 수 있다. 또는, 컴퓨팅 장치(300)는 하드 디스크들 대신 저장을 위해 메모리 칩들에 의존할 수 있다.
나아가, 컴퓨팅 장치(300)는 이에 한정되지는 않지만, 표준 전화 선로들, LAN 또는 WAN 링크들(예. 802.11, T1, T3, 56kb, X.25, SNA, DECNET, RDMA), 광대역 연결들(예. ISDN, 프레임 릴레이(Frame Relay), ATM, 기가비트 이더넷(Gigabit Ethernet), EOE(Ethernet-over-SONET)), 무선 연결들, VPN(virtual private network) 연결들, 또는 상기 중 일부 또는 모두의 조합을 포함하는, 다양한 연결들을 통해 네트워크(304)에 인터페이스하는 네트워크 인터페이스(318)를 포함할 수 있다. 연결들은 다양한 통신 프로토콜들을 이용해 설립될 수 있다(예. TCP/IP, IPX, SPX, NetBIOS, 이더넷, ARCNET, SONET, SDH, FDDI(Fiber Distributed Data Interface), RS232, IEEE 802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, 802.15.4, 블루투스, 지그비(ZIGBEE), CDMA, GSM, 와이맥스(WiMax), 및 직접 비동기 연결들(direct asynchronous connections)). 일 실시예에 있어서, 컴퓨팅 장치(300)는 GRE, VXLAN, IPIP, SIT, ip6tnl, VTI 및 VTI6, IP6GRE, FOU, GUE, GENEVE, ERSPAN, SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)와 같은 유형 및/또는 형태의 게이트웨이 또는 터널링 프로토콜을 통해 다른 컴퓨팅 장치들(300')과 통신한다. 네트워크 인터페이스(318)는 내장 네트워크 어댑터, 네트워크 인터페이스 카드, PCMCIA 네트워크 카드, 카드 버스 네트워크 어댑터, 무선 네트워크 어댑터, USB 네트워크 어댑터, 모뎀, 또는 통신할 수 있고 또한 여기에 기술된 작동들을 수행할 수 있는 유형의 네트워크에 컴퓨팅 장치(300)를 인터페이스하기에 적절한 기타 장치를 포함할 수 있다.
다른 실시예들에 있어서, I/O 장치(330)는 시스템 버스(350)와 USB 버스, 애플 데스크탑 버스, RS-232 직렬 연결, SCSI 버스, FireWire 버스, FireWire 800 버스, 이더넷 버스, 애플토크 버스, 기가비트 이더넷 버스, ATM 버스, HIPPI 버스, 수퍼 HIPPI 버스, SerialPlus 버스, SCI/LAMP 버스, FibreChannel 버스, 또는 SAS(Serial Attached SCSI(small computer system interface)) 버스와 같은, 외부 통신 버스 사이의 브릿지일 수 있다.
도 3b 및 도 3c에 도시된 종류의 컴퓨팅 장치(300)는 통상적으로 운영 체제들의 제어 하에서 작동하는데, 운영 체제들이 작업들의 스케쥴링 및 시스템 자원들에 억세스를 제어한다. 컴퓨팅 장치(300)는 MICROSOFT WINDOWS 운영 체제들의 버전들, UNIX 및 LINUX 운영 체제들의 다른 릴리즈들, 매킨토시 컴퓨터들을 위한 MAC OS의 버전들, 임베디드 운영 체제, 실시간 운영 체제, 오픈 소스 운영 체제, 전속적 운영 체제, 이동 컴퓨팅 장치들을 위한 운영 체제들, 또는 컴퓨팅 장치에서 실행하여 여기에 기술된 작동들을 수행할 수 있는 기타 운영 체제와 같은 운영 체제를 실행할 수 있다. 전형적인 운영 체제들은 이에 한정되지 않지만, 이하를 포함한다: 그 중에서도, WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE, WINDOWS XP, WINDOWS 7, WINDOWS 8, WINDOWS VISTA, 및 WINDOWS 10 이 모두는 워싱턴주 레드몬드의 마이크로소프트 사에 의해 제조되고; 캘리포니아주 쿠퍼티노의 애플 사에 의해 제조되는 MAC OS; 뉴욕주 아몽크의 IBM에 의해 제조되는 OS/2; 노스캐롤라이나주 랄리의 레드햇 사에 의해 배포되는 리눅스-변형 운영 체제인, 레드햇 기업용 리눅스; 영국 런던의 캐노니컬 사에 의해 배포되는 무료 운영 체제인, Ubuntu; centos.org 커뮤니티에 의해 배포되는 무료 운영 체제인, CentOS; SUSE에 의해 배포되는 무료 운영 체제인, SUSE Linux 또는 UNIx 운영 체제의 유형 및/또는 형태.
실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법들 및 시스템들의 특정 실시예들을 설명하였지만, 본 개시의 개념들을 포함하는 다른 실시예들 또한 사용될 수 있음이 당업자에게는 명백할 것이다.

Claims (16)

  1. 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법에 있어서,
    제1 머신에서 실행중인 컨테이너 엔진에 의해, 상기 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는 단계;
    상기 컨테이너 엔진에 의해, 상기 제1 머신에서 실행중인, 변형된 컨테이너 런타임 프로세스로, 상기 제1 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 상기 명령을 전송하는 단계;
    상기 변형된 컨테이너 런타임 프로세스에 의해, 상기 제1 머신에서, 상기 인스턴스화된 컨테이너 이미지를 나타내는 심 프로세스를 생성하는 단계;
    상기 심 프로세스에 의해, 상기 명령을, 네트워크 연결을 통해 에이전트에 연결되어 있는 프록시를 통해, 제2 머신에서 실행중인 에이전트로 전달하는 단계;
    상기 에이전트에 의해, 컨테이너화된 프로세스로 상기 컨테이너 이미지의 인스턴스화를 지시하는 단계;
    상기 제1 머신에서 실행중인 스케쥴러 컴포넌트에 의해, 제3 머신으로 상기 컨테이너화된 프로세스를 마이그레이션하도록 결정하는 단계; 및
    상기 스케쥴러 컴포넌트에 의해, 상기 컨테이너화된 프로세스의 실행 중, 상기 제3 머신으로 상기 컨테이너화된 프로세스의 마이그레이션을 지시하는 단계를 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법.
  2. 제 1 항에 있어서, 상기 컨테이너 엔진에 의해, 상기 제1 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 상기 명령을 수신하는 단계는, 상기 컨테이너 엔진에 의해, 상기 제1 머신에서 실행중인 컨테이너 오케스트레이션 엔진으로부터, 상기 제1 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 상기 명령을 수신하는 단계를 더 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법.
  3. 제 1 항에 있어서, 상기 스케쥴러 컴포넌트에 의해, 상기 제2 머신에 의해 제공되는 효율 수준보다 높은 효율 수준에서 상기 제3 머신이 상기 컨테이너화된 프로세스를 호스팅하기 위한 기능을 제공한다고 결정하는 단계를 더 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법.
  4. 제 1 항에 있어서, 상기 스케쥴러 컴포넌트에 의해, 상기 제2 머신에 의해 제공되는 최적화 수준보다 높은 최적화 수준에서 상기 제3 머신이 상기 컨테이너화된 프로세스를 호스팅하기 위한 기능을 제공한다고 결정하는 단계를 더 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법.
  5. 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템에 있어서,
    제1 머신에서 실행중이고 또한 상기 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는, 컨테이너 엔진;
    상기 제1 머신에서 실행중이고 또한 상기 컨테이너 엔진으로부터, 상기 제1 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 상기 명령을 수신하는, 변형된 컨테이너 런타임 프로세스;
    (ⅰ) 상기 인스턴스화된 컨테이너 이미지를 나타내고, (ⅱ) 상기 변형된 컨테이너 런타임 프로세스에 의한 상기 제1 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 상기 명령의 수신에 응답하여 상기 변형된 컨테이너 실행에 의해 상기 제1 머신 상에 생성되고, 또한 (ⅲ) 프록시를 실행하는, 심 프로세스;
    (ⅰ) 제2 머신에서 실행중이고, (ⅱ) 네트워크 연결을 통해 상기 제1 머신 상의 상기 프록시에 연결되고, (ⅲ) 상기 프록시를 통해 상기 심 프로세스로부터, 상기 제2 머신 상에 상기 컨테이너 이미지를 인스턴스화하는 명령을 수신하고, 또한 (ⅳ) 컨테이너화된 프로세스로서 상기 컨테이터 이미지의 인스턴스화를 지시하는, 에이전트; 및
    상기 제1 머신에서 실행중이고, 상기 컨테이너화된 프로세스를 제3 머신으로 마이그레이션하도록 결정하고, 또한 상기 컨테이너화된 프로세스의 실행 중, 상기 제3 머신으로 상기 컨테이너화된 프로세스의 마이그레이션을 지시하는, 스케쥴러 컴포넌트를 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  6. 제 5 항에 있어서, 상기 제1 머신은 물리적 컴퓨팅 장치인,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  7. 제 5 항에 있어서, 상기 제1 머신은 가상 컴퓨팅 장치인,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  8. 제 5 항에 있어서, 상기 제2 머신은 물리적 컴퓨팅 장치인,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  9. 제 5 항에 있어서, 상기 제2 머신은 가상 컴퓨팅 장치인,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  10. 제 5 항에 있어서, 상기 컨테이너 이미지는 전용 커널을 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  11. 제 5 항에 있어서, 상기 컨테이너 이미지는 사용자 모드에서 라이브러리로서 실행중인 전용 커널을 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  12. 제 5 항에 있어서, 상기 시스템은 컨테이너 오케스트레이션 엔진을 더 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  13. 제 12 항에 있어서, 상기 컨테이너 엔진은 상기 컨테이너 오케스트레이션 엔진으로부터, 상기 제1 머신 상에 컨테이너 이미지를 인스턴스화하는 명령을 수신하는 기능을 더 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  14. 제 5 항에 있어서, 상기 컨테이너 엔진은 상기 변형된 컨테이너 런타임 프로세스를 실행하는 명령을 수신하는 기능을 더 포함하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  15. 제 5 항에 있어서, 상기 스케쥴러 컴포넌트는 상기 제2 머신에 의해 제공되는 효율 수준보다 높은 효율 수준에서 상기 제3 머신이 상기 컨테이너화된 프로세스를 호스팅하기 위한 기능을 제공한다고 결정하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
  16. 제 5 항에 있어서, 상기 스케쥴러 컴포넌트는 상기 제2 머신에 의해 제공되는 최적화 수준보다 높은 최적화 수준에서 상기 제3 머신이 상기 컨테이너화된 프로세스를 호스팅하기 위한 기능을 제공한다고 결정하는,
    실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 시스템.
KR1020237009112A 2020-08-17 2021-08-16 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법 및 시스템 KR20230051280A (ko)

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
KR20230051280A true KR20230051280A (ko) 2023-04-17

Family

ID=80224142

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237009112A KR20230051280A (ko) 2020-08-17 2021-08-16 실행중인 컨테이너화된 프로세스들을 인스턴스화하고 투명하게 마이그레이션하기 위한 방법 및 시스템

Country Status (9)

Country Link
US (2) US11915031B2 (ko)
EP (1) EP4196875A4 (ko)
JP (1) JP2023537849A (ko)
KR (1) KR20230051280A (ko)
CN (1) CN115943365A (ko)
AU (1) AU2021329808A1 (ko)
CA (1) CA3185498A1 (ko)
IL (1) IL300200B2 (ko)
WO (1) WO2022040082A1 (ko)

Families Citing this family (3)

* 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
JP7527523B2 (ja) 2022-06-26 2024-08-02 三菱電機株式会社 コンテナ移行装置、コンテナ移行方法およびコンテナ移行プログラム
CN118502920A (zh) * 2024-07-16 2024-08-16 北京师范大学珠海校区 边缘辅助车载网络中的多用户层感知容器调度方法及终端

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7761573B2 (en) * 2005-12-07 2010-07-20 Avaya Inc. Seamless live migration of virtual machines across optical networks
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
JP7545895B2 (ja) 2018-04-11 2024-09-05 コーネル ユニヴァーシティ ソフトウェアコンテナの性能および分離を改善するための方法およびシステム
US20190347127A1 (en) 2018-05-09 2019-11-14 Red Hat, Inc. Service provisioning and orchestration for virtual machine to container migration
US10831394B2 (en) * 2018-08-27 2020-11-10 International Business Machines Corporation Live upgrade of storage device driver using shim application
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
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
EP4196875A4 (en) 2024-10-23
IL300200B1 (en) 2024-02-01
CA3185498A1 (en) 2022-02-24
IL300200A (en) 2023-03-01
US20240143378A1 (en) 2024-05-02
US11915031B2 (en) 2024-02-27
IL300200B2 (en) 2024-06-01
WO2022040082A1 (en) 2022-02-24
JP2023537849A (ja) 2023-09-06
US20220050705A1 (en) 2022-02-17
AU2021329808A1 (en) 2023-02-16
CN115943365A (zh) 2023-04-07
EP4196875A1 (en) 2023-06-21

Similar Documents

Publication Publication Date Title
US10579409B2 (en) Live migration of virtual machines with memory state sharing
US11915031B2 (en) Methods and systems for instantiating and transparently migrating executing containerized processes
US8301746B2 (en) Method and system for abstracting non-functional requirements based deployment of virtual machines
US9507586B2 (en) Virtual machine based controller and upgrade mechanism
US12056513B2 (en) Virtual machine migration using multiple, synchronized streams of state data transferring via file descriptors
US20230105439A1 (en) Methods and systems for instantiating and transparently migrating executing containerized processes
US10860353B1 (en) Migrating virtual machines between oversubscribed and undersubscribed compute devices
US10809935B2 (en) System and method for migrating tree structures with virtual disks between computing environments
US20210320938A1 (en) Network security enforcement device
US10133749B2 (en) Content library-based de-duplication for transferring VMs to a cloud computing system
CN114281444B (zh) 一种实施云桌面客户端的布置方法
US11829792B1 (en) In-place live migration of compute instances for efficient host domain patching
JP7563857B2 (ja) ホスト・オペレーティング・システムによる仮想マシン移行の検出
CN114217999A (zh) 一种云桌面系统及方法
US11055115B1 (en) Virtual machine conversion in distributed system of remote desktops
US9104634B2 (en) Usage of snapshots prepared by a different host
CN114465765B (zh) 一种云桌面系统的客户端安全管理系统及方法
CN114500564B (zh) 一种云桌面系统的客户端硬件适配方法
CN114281443B (zh) 一种云桌面系统及方法
US20240143847A1 (en) Securely orchestrating containers without modifying containers, runtime, and platforms
CN114461244B (zh) 一种云桌面系统的客户端硬件更新方法
US11513782B1 (en) Unrestricted to restricted computing framework
US11960917B2 (en) Live migration and redundancy for virtualized storage
US20230131665A1 (en) Updating virtual images of computing environments
El-Refaey et al. CLOUD COMPUTING

Legal Events

Date Code Title Description
A201 Request for examination