KR20230073338A - 오프로드 컨테이너 실행 환경 - Google Patents

오프로드 컨테이너 실행 환경 Download PDF

Info

Publication number
KR20230073338A
KR20230073338A KR1020237014834A KR20237014834A KR20230073338A KR 20230073338 A KR20230073338 A KR 20230073338A KR 1020237014834 A KR1020237014834 A KR 1020237014834A KR 20237014834 A KR20237014834 A KR 20237014834A KR 20230073338 A KR20230073338 A KR 20230073338A
Authority
KR
South Korea
Prior art keywords
container
control plane
processor
computing device
runtime
Prior art date
Application number
KR1020237014834A
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 KR20230073338A publication Critical patent/KR20230073338A/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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/45591Monitoring or debugging support
    • 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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Abstract

컨테이너 실행 환경에 대한 다양한 실시예들이 개시된다. 일 실시예에서, 컴퓨팅 디바이스 상에서 실행되는 가상 머신 인스턴스에서 컨테이너가 실행된다. 하드웨어 상호연결 인터페이스를 통해 컴퓨팅 디바이스에 동작가능하게 결합된 오프로드 디바이스에서 가상 머신 인스턴스와 별도로 컨테이너 제어 평면이 실행된다. 오프로드 디바이스 상에서 실행되는 컨테이너 제어 평면을 사용하여 컨테이너가 관리된다.

Description

오프로드 컨테이너 실행 환경
관련 출원 교차 참조
본 출원은 "OFFLOADED CONTAINER EXECUTION ENVIRONMENT"라는 명칭으로 2021년 9월 30일에 출원된 동시 계류 중인 미국 특허출원 제17/491,388호의 우선권, 및 그 이익을 주장하며, 이 특허출원은 그 전문이 본원에서 제시된 바와 같이 원용된다.
운영 체제 레벨 가상화에서, 운영 체제 커널은 하나 이상의 격리된 사용자 공간 인스턴스를 지원한다. 다양한 구현예들에서, 이러한 사용자 공간 인스턴스는 컨테이너, 구역, 가상 전용 서버, 파티션, 가상 환경, 가상 커널, 제일(jail) 등으로 칭해질 수 있다. 운영 체제 레벨 가상화는 하이퍼바이저 위에 하나 이상의 운영 체제를 실행하는 가상 머신과는 대조적이다.
본 개시의 많은 양태들은 다음의 도면들을 참조하여 더 잘 이해될 수 있다. 도면들에서의 구성요소들은 반드시 일정한 축척으로 도시된 것은 아니며, 대신에 본 개시의 원리들을 명확하게 도시하는 것에 중점을 둔다. 또한, 도면들에서, 동일한 참조 번호들은 여러 도면들에 걸쳐 대응하는 부분들을 나타낸다.
도 1a 내지 도 1c는 본 개시의 다양한 실시예들에 따른 컨테이너 실행 환경의 예들의 도면들이다.
도 2는 본 개시의 다양한 실시예들에 따른 네트워크 환경의 개략적인 블록도이다.
도 3은 본 개시의 다양한 실시예들에 따른 오프로드 디바이스를 갖는 컴퓨팅 디바이스의 개략적인 블록도이다.
도 4는 본 개시의 다양한 실시예들에 따른 도 2의 네트워크 환경에서 클라우드 제공자 네트워크의 부분들로서 구현되는 기능의 일례를 도시한 흐름도이다.
도 5는 본 개시의 다양한 실시예들에 따른 도 2의 네트워크 환경에서 클라우드 제공자 네트워크에서 실행되는 마이그레이션 서비스의 부분들로서 구현되는 기능의 일례를 도시한 흐름도이다.
도 6은 본 개시의 다양한 실시예들에 따른 도 2의 네트워크 환경에서 채용되는 클라우드 제공자 네트워크의 하나의 예시적인 도해를 제공하는 개략적인 블록도이다.
본 개시는 클라우드 제공자 네트워크들에서 디플로이될 수 있는 컨테이너 실행 환경에 관한 것이다. 더 구체적으로, 본 개시는 가상 컴퓨트 서비스에서 컨테이너 들에 대한 자체적인 지원을 가능하게 하기 위해, 오프로드 디바이스가 부착되는 서버 상에서 실행되는 컨테이너의 컨테이너 런타임 및 오케스트레이션 에이전트를 실행하기 위한 오프로드 디바이스의 사용에 관한 것이다. 컨테이너들은 클라우드 컴퓨팅 내에서 점점 더 인기를 얻고 있는 컴퓨팅 양식이다. 컨테이너는 애플리케이션이 실행되는 컴퓨팅 환경으로부터 애플리케이션을 추상화하는 소프트웨어 애플리케이션의 논리적 패키징을 나타낸다. 예를 들어, 소프트웨어 애플리케이션의 컨테이너화된 버전은 애플리케이션이 적합한 컨테이너 엔진(예를 들어, DOCKER 또는 KUBERNETES 컨테이너 엔진)을 호스팅하는 임의의 인프라구조 상에서 일관되게 실행될 수 있도록 소프트웨어 코드 및 그 코드에 의해 사용되는 임의의 종속성을 포함한다. 기존의 소프트웨어 애플리케이션들은 소프트웨어 애플리케이션을 적절한 방식으로 패키징하고 애플리케이션이 컨테이너 엔진에서 실행될 수 있게 하기 위해 사용되는 다른 아티팩트들(예를 들어, 컨테이너 이미지, 컨테이너 파일, 다른 구성들)을 생성함으로써 "컨테이너화"될 수 있다.
가상 머신 인스턴스들이 클라우드 제공자 네트워크들 및 다른 컴퓨팅 환경들에서 수년 동안 이용가능해 왔지만, 개발자들은 이제 컴퓨터 자원들을 패키징하고 디플로이하여 애플리케이션들을 일정 스케일로 실행하기 위해 컨테이너들로 이동하고 있다. 컨테이너들은 시스템 하드웨어 레벨 가상화 대신에 운영 체제 레벨 가상화를 구현한다. 게스트 운영 체제를 포함하는 가상 머신 인스턴스들과는 대조적으로, 컨테이너들은 호스트 운영 체계를 공유하고 단지 애플리케이션들 및 그 종속성만을 포함한다. 이에 따라, 컨테이너들은 훨씬 더 경량이고, 컨테이너 이미지들은 크기가 기가바이트일 수 있는 가상 머신 이미지들과는 대조적으로 크기가 메가바이트일 수 있다. 이러한 이유로, 컨테이너들은 통상적으로 가상 머신 인스턴스들보다 훨씬 더 빠르게(예를 들어, 수 분 대신 수 밀리초) 론칭되고, 컨테이너들이 요구에 따라 론칭되고 종결되는 단기적 용례들에 대해 더 효율적이다.
클라우드 제공자 네트워크들은 탄력적인 유틸리티 컴퓨팅 모델 하에서 컨테이너 실행 환경들을 서비스로서 제공한다. 예를 들어, 클라우드 제공자 네트워크는 컨테이너들이 고객 요청 시에 신속하게 론칭될 수 있도록 물리적 또는 가상 머신 인스턴스들의 풀을 활성으로 유지할 수 있다. 그러나, 이들 컨테이너 실행 환경은 유연성을 제한할 수 있는 동작 제한을 가질 수 있다. 일부 경우들에서, 컨테이너 실행 환경은 컨테이너들이 스테이트풀(stateful)이 아니라 스테이트리스(stateless)일 것을 요구할 수 있다. 즉, 스테이트리스 컨테이너는 컨테이너 실행 환경이 수정된 상태를 갖는 컨테이너의 이미지를 직렬화 또는 업데이트하지 않기 때문에 그 자체 내의 애플리케이션들에 대한 상태를 추적할 수 없다. 결과적으로, 컨테이너 상태는 하나의 시스템에서 다른 시스템으로 컨테이너를 전달할 때 보존될 수 없다. 또한, 컨테이너 실행 환경은 운영 체제, 컨테이너 런타임, 컨테이너 오케스트레이션 에이전트, 및/또는 다른 구성요소들에 대한 라이브 업데이트 또는 마이그레이션을 지원하지 않을 수 있다. 라이브 업데이트 또는 마이그레이션에 대한 지원의 결여는 컨테이너 실행 환경이 업데이트되도록 컨테이너 인스턴스가 종결될 것임을 의미한다.
본 개시의 다양한 실시예들은 스테이트풀 컨테이너들을 허용하고 라이브 마이그레이션을 지원할 수 있는 컨테이너 실행 환경을 도입한다. 컨테이너 실행 환경은 컨테이너를 실행하는 운영 체제 및 머신 인스턴스와 별도로, 컨테이너 런타임 및/또는 컨테이너 오케스트레이션 에이전트를 포함하는 컨테이너 제어 평면을 실행한다. 이는 일부 실시예들에서 컨테이너 제어 평면이 다수의 가상 머신들 내의 컨테이너들에 사용될 수 있게 한다. 일 구현예에서, 컨테이너 제어 평면은 운영 체제 및 컨테이너가 실행되는 프로세서와 별도인 전용 하드웨어 프로세서에 의해 실행된다. 다른 구현예에서, 컨테이너 제어 평면은 운영 체제 및 컨테이너 인스턴스가 실행되는 제2 가상 머신과 상이한 제1 가상 머신 인스턴스에서 실행된다. 설명되는 바와 같이, 이러한 배열은 컨테이너 제어 평면 구성요소들이 컨테이너 인스턴스를 종결하지 않고 업데이트될 수 있게 한다. 또한, 컨테이너 실행 환경은 컨테이너 이미지를 보다 신속하게 로딩하고 스테이트풀 컨테이너 인스턴스들이 이미지들로서 지속될 수 있게 하는 블록 데이터 저장 서비스를 포함할 수 있다.
당업자가 본 개시에 비추어 이해할 바와 같이, 특정 실시예들은 다음 중 일부 또는 전부를 포함하는 특정 이점들을 달성하는 것이 가능하다: (1) 프로세서 코어들을 분리하기 위해 고객들에 의해 사용되는 프로세서 코어들로부터 백엔드 컨테이너 실행 기능을 전달함으로써 클라우드 제공자 네트워크의 컴퓨터 용량을 증가시킴으로써, 고객들에 의해 사용되는 프로세서 코어들에 대한 자원들을 해제하는 것; (2) 컨테이너들이 스테이트풀이고 지속 상태가 될 수 있게 함으로써 컨테이너 실행 환경의 기능을 개선하는 것; (3) 컨테이너 인스턴스들을 종결하지 않고 컨테이너 실행 구성요소들의 라이브 업데이트를 지원함으로써 컨테이너 수행 환경의 기능을 개선시키는 것; (4) 다수의 가상 머신 인스턴스들에서 실행되는 컨테이너들 사이에 컨테이너 런타임 및 컨테이너 오케스트레이션 에이전트를 공유함으로써 클라우드 제공자 네트워크의 성능을 개선시키는 것,(5) 고객이 액세스할 수 있는 메모리로부터 컨테이너 제어 평면을 격리함으로써 컴퓨터 시스템 보안을 개선시키는 것; (6) 컨테이너 제어 평면이 실행되는 메모리와 구분하여 고객이 액세스할 수 있는 메모리를 암호화된 상태로 유지할 수 있는 기밀 컴퓨팅을 허용함으로써 컴퓨터 시스템의 유연성과 보안을 개선하는 것 등.
컨테이너는 본원에서 지칭될 때, 코드 및 그 모든 종속성을 패키징하여, 애플리케이션(다양한 컨테이너 서비스들에서 태스크, 팟, 또는 클러스터로도 지칭됨)이 컴퓨팅 환경마다 신속하고 신뢰성 있게 실행될 수 있다. 컨테이너 이미지는 애플리케이션 프로세스를 실행하는 데 필요한 모든 것: 코드, 런타임, 시스템 툴, 시스템 라이브러리 및 설정을 포함하는 독립형의 실행가능 소프트웨어 패키지이다. 컨테이너 이미지들은 런타임 시에 컨테이너들이 된다. 이에 따라, 컨테이너들은 애플리케이션 계층의 추상화이다(이는 각 컨테이너가 상이한 소프트웨어 애플리케이션 프로세스를 시뮬레이션하는 것을 의미함). 각 컨테이너가 격리된 프로세스들을 실행하지만, 다수의 컨테이너들은 예를 들어, 동일한 가상 머신 내에서 론칭됨으로써, 공통 운영 체제를 공유할 수 있다. 대조적으로, 가상 머신들은 하드웨어 계층의 추상화이다(이는 각 가상 머신이 소프트웨어를 실행할 수 있는 물리적 머신을 시뮬레이션한다는 것을 의미함). 가상 머신 기술은 많은 서버들(이들 각각은 가상 머신으로 칭해짐)의 등가물을 실행하기 위해 하나의 물리적 서버를 사용할 수 있다. 다수의 가상 머신들이 하나의 물리적 머신 상에서 실행될 수 있지만, 각 가상 머신은 통상적으로 운영 체제의 그 자신의 사본뿐만 아니라 애플리케이션들 및 그 관련 파일들, 라이브러리들, 및 종속성을 갖는다. 가상 머신은 일반적으로 컴퓨트 인스턴스 또는 간단히 "인스턴스"로 지칭된다. 일부 컨테이너들은 컨테이너 에이전트를 실행하고 있는 인스턴스들 상에서 실행될 수 있고, 일부 컨테이너들은 베어 메탈 서버들 상에서 실행될 수 있다.
컨테이너들은 다음의 몇 가지 기초가 되는 커널 프리미티브들로 구성된다: 네임스페이스들(컨테이너가 대화하도록 허용되는 다른 자원들), cgroup(컨테이너가 사용하도록 허용되는 자원들의 양), 및 LSM(Linux Security Module ― 컨테이너가 행하도록 허용되는 것). "컨테이너 런타임"으로 지칭되는 툴은 이들 피스들을 격리된 보안 실행 환경으로 구성하는 것을 가능하게 한다. 컨테이너 엔진으로도 지칭되는 컨테이너 런타임은 이미지 전송, 이미지 저장, 컨테이너 실행 및 감독, 및 네트워크 접속과 같은 기능들을 수행하는 컨테이너의 완전한 컨테이너 라이프사이클을 관리하고, 최종 사용자의 관점에서 컨테이너 런타임이 컨테이너를 실행한다. 컨테이너 에이전트는 일부 구현예들에서 컨테이너 인스턴스들이 클러스터에 연결할 수 있게 하기 위해 사용될 수 있다. 컨테이너 제어 평면은 본원에서 설명될 때, 컨테이너 런타임 및, 일부 실시예들에서, 컨테이너 에이전트를 포함할 수 있다.
이제 도 1a를 참조하면, 다양한 실시예들에 따른 컨테이너 실행 환경(100a)의 일례가 도시되어 있다. 도 1a에서, 머신 인스턴스(103)가 운영 체제 커널(106) 및 복수의 컨테이너 인스턴스들(112a 및 112b)을 실행한다. 컨테이너 인스턴스들(112)은 "컨테이너들"로 지칭될 수 있다. 컨테이너 인스턴스들(112)은 컨테이너 인스턴스들(112)의 팟 또는 그룹에 대응할 수 있다. 컨테이너 제어 평면(114)은 컨테이너 오케스트레이션 에이전트에 의해 구현되는 오케스트레이션으로, 컨테이너 런타임을 통해 컨테이너 인스턴스들(112)에 운영 체제 레벨 가상화를 제공함으로써 컨테이너 인스턴스들(112)을 관리한다.
컨테이너 제어 평면(114)이 컨테이너 인스턴스들(112)과 동일한 머신 인스턴스(103)에서 실행되기 보다는, 컨테이너 제어 평면(114)은 머신 인스턴스(103)가 실행되는 동일한 컴퓨팅 디바이스 내의 특수 목적 컴퓨팅 하드웨어에 대응하는 오프로드 디바이스(118)에서 대신 실행된다. 오프로드 디바이스(118)는 컨테이너 제어 평면(114)이 머신 인스턴스(103)의 프로세서 및 메모리 자원들을 사용하지 않도록 컨테이너 제어 평면(114)을 실행할 별도의 프로세서 및 메모리를 가질 수 있다. 대신에, 인터페이스(121a 및 121b)는 오프로드 디바이스(118)에서 실행되는 컨테이너 제어 평면(114)과, 머신 인스턴스(103)에서 실행되는 운영 체제 커널(106) 및 컨테이너 인스턴스들(112) 사이에서 호출 및 응답을 발신하기 위해 경량 애플리케이션 프로그래밍 인터페이스(API) 심(shim)을 제공한다. 일부 구현예들에서, 시스템 보안은 컨테이너 인스턴스들(112)을 저장하는 메모리의 보안 손상은 그 메모리에 격리될 것이고, 오프로드 디바이스(118) 내의 컨테이너 제어 평면(114)으로 연장되지 않을 것이라는 점에서 오프로드 디바이스(118)를 사용함으로써 향상된다.
또한, 각 판독/기록 계층들(124a 및 124b)은 대응하는 컨테이너 인스턴스들(112a 및 112b)이 각 컨테이너 이미지(127a 및 127b)를 포함하는 블록 데이터 저장 서비스와 같은 데이터 저장으로부터 판독하고 데이터 저장에 기록할 수 있게 한다. 컨테이너 인스턴스들(112) 내부의 상태가 수정되거나 변경됨에 따라, 수정된 상태를 갖는 컨테이너 인스턴스들은 컨테이너 이미지들(127)로서 직렬화되고 저장될 수 있음으로써, 컨테이너 인스턴스들(112)이 스테이트리스가 아니라 스테이트풀이 될 수 있게 한다.
이제 도 1b를 참조하면, 다양한 실시예들에 따른 컨테이너 실행 환경(100b)의 다른 예가 도시되어 있다. 도 1b는 도 1a와는 대조적으로, 각 운영 체제 커널들(106a 및 106b) 및 하나 이상의 각 컨테이너 인스턴스(112a 및 112b)를 각각 실행할 수 있는 복수의 머신 인스턴스들(103a 및 103b)을 갖는 컨테이너 실행 환경(100b)이 도시되어 있다. 예를 들어, 머신 인스턴스들(103)은 동일한 컴퓨팅 디바이스 상에서 또는 상이한 컴퓨팅 디바이스들 상에서 실행될 수 있다. 오프로드 디바이스(118)에서 실행되는 단일 컨테이너 제어 평면(114)은 머신 인스턴스들(103a 및 103b) 둘 모두에서 컨테이너 인스턴스들(112)에 대한 운영 체제 레벨 가상화를 수행할 수 있다. 일부 경우들에서, 머신 인스턴스들(103)은 클라우드 제공자 네트워크의 상이한 고객들 또는 계정들에 대응할 수 있고, 머신 인스턴스들(103)은 테넌시 경계이다.
이제 도 1c를 참조하면, 다양한 실시예들에 따른 컨테이너 실행 환경(100c)의 다른 예가 도시되어 있다. 도 1a 및 도 1b에서와 같이 오프로드 디바이스(118)에서 컨테이너 제어 평면(114)을 실행하는 대신에, 컨테이너 실행 환경(100c)은 상이한 머신 인스턴스(103c)에서 컨테이너 제어 평면(114)을 실행한다. 머신 인스턴스들(103a 및 103c)은 동일한 컴퓨팅 디바이스에서 또는 상이한 컴퓨팅 디바이스들에서 실행될 수 있다. 일 구현예에서, 머신 인스턴스(103c)는 클라우드 제공자 네트워크 기판에 대응할 수 있다. 다음의 논의에서, 시스템 및 그 구성요소들의 일반적인 설명이 제공되고, 그 동작의 논의가 이어진다.
도 2를 참조하면, 다양한 실시예들에 따른 네트워크 환경(200)이 도시되어 있다. 네트워크 환경(200)은 네트워크(209)를 통해 서로 데이터 통신하는 클라우드 제공자 네트워크(203)와 하나 이상의 클라이언트 디바이스(206)를 포함한다. 네트워크(209)는 예를 들어, 인터넷, 인트라넷, 엑스트라넷, 광역 네트워크(WAN), 근거리 네트워크(LAN), 유선 네트워크, 무선 네트워크, 케이블 네트워크, 위성 네트워크, 또는 다른 적합한 네트워크 등, 또는 둘 이상의 이러한 네트워크들의 임의의 조합을 포함한다.
클라우드 제공자 네트워크(203)(때때로 간단히 "클라우드"로 지칭됨)는 가상화되거나 베어 메탈(bare-metal)일 수 있는 (컴퓨트, 저장, 및 네트워킹 자원들, 애플리케이션들, 및 서비스들과 같은) 네트워크 액세스가능 컴퓨팅 자원들의 풀을 지칭한다. 클라우드는 고객 커맨드들에 응답하여 프로그램가능하게 프로비저닝되고 릴리즈될 수 있는 구성가능한 컴퓨팅 자원들의 공유 풀에 대한 편리한 온 디맨드 네트워크 액세스를 제공할 수 있다. 이들 자원들은 가변 로드로 조정하기 위해 동적으로 프로비저닝되고 재구성될 수 있다. 이에 따라, 클라우드 컴퓨팅은 공개적으로 액세스가능한 네트워크(예를 들어, 인터넷, 셀룰러 통신 네트워크)를 통해 서비스들로서 전달되는 애플리케이션들과 이들 서비스들을 제공하는 클라우드 제공자 데이터 센터들에서의 하드웨어 및 소프트웨어 양자 모두로서 고려될 수 있다.
클라우드 제공자 네트워크(203)는 네트워크를 통해 사용자들에게 온 디맨드, 스케일러블 컴퓨팅 플랫폼들을 제공하여, 예를 들어, 사용자들이 (선택사항으로서 로컬 저장소를 갖는, 중앙 처리 유닛(CPU) 및 그래픽 처리 유닛(GPU) 중 하나 또는 둘 모두의 사용을 통해 컴퓨팅 인스턴스들을 제공하는) 컴퓨트 서버들 및 (지정된 컴퓨트 인스턴스들에 대한 지속적인 가상 블록 저장을 제공하는) 블록 데이터 저장 서비스들(212)의 사용을 통해 스케일러블 "가상 컴퓨팅 디바이스들" 자유롭게 사용할 수 있게 할 수 있다. 이러한 가상 컴퓨팅 디바이스들은 하드웨어(다양한 유형들의 프로세서들, 로컬 메모리, 랜덤 액세스 메모리(RAM), 하드 디스크, 및/또는 솔리드 스테이트 드라이브(SSD) 저장소), 운영 체제의 선택, 네트워킹 능력, 및 사전 로딩된 애플리케이션 소프트웨어를 포함하는 개인용 컴퓨팅 디바이스의 속성들을 갖는다. 각 가상 컴퓨팅 디바이스는 또한 그 콘솔 입력 및 출력(예를 들어, 키보드, 디스플레이, 및 마우스)을 가상화할 수 있다. 이 가상화는 사용자들이 개인 컴퓨팅 디바이스처럼 자신들의 가상 컴퓨팅 디바이스를 구성하고 사용하기 위해, 사용자들이 브라우저, API, SDK(software development kit) 등과 같은 컴퓨터 애플리케이션을 사용하여 자신들의 가상 컴퓨팅 디바이스에 연결할 수 있게 한다. 사용자가 이용가능한 고정된 양의 하드웨어 자원들을 소유하는 개인용 컴퓨팅 디바이스들과 달리, 가상 컴퓨팅 디바이스들과 연관된 하드웨어는 사용자가 요구하는 자원들에 따라 스케일링 업 또는 다운될 수 있다.
위에서 나타내어진 바와 같이, 사용자들은 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)(215)를 사용하여 가상 컴퓨팅 디바이스 및 다른 클라우드 제공자 네트워크(203) 자원들 및 서비스들에 연결할 수 있다. API(215)는 클라이언트 디바이스(206)와 서버 사이의 인터페이스 및/또는 통신 프로토콜을 참조하여서, 클라이언트가 미리 정의된 포맷으로 요청을 행한다면, 클라이언트가 특정 포맷으로 응답을 수신하거나 정의된 동작이 개시되게 한다. 클라우드 제공자 네트워크 상황에서, API들(215)은 고객들이 클라우드 제공자 네트워크(203)로부터 데이터를 획득하거나 클라우드 제공자 네트워크(203) 내에서 동작들을 야기할 수 있게 함으로써 클라우드 인프라스트럭처에 액세스하는 고객들을 위한 게이트웨이를 제공하여, 클라우드 제공자 네트워크(203)에서 호스팅되는 자원들 및 서비스들과 상호작용하는 애플리케이션들의 개발을 가능하게 한다. API들(215)은 또한 클라우드 제공자 네트워크(203)의 상이한 서비스들이 서로 데이터를 교환할 수 있게 할 수 있다. 사용자들은 자신들의 사용을 위해 및/또는 그들의 고객들 또는 클라이언트들에 의한 사용을 위해 네트워크 기반 서비스들을 제공하기 위해 그들의 가상 컴퓨팅 시스템들을 디플로이하기를 선택할 수 있다.
클라우드 제공자 네트워크(203)는 기판으로 지칭되는 물리적 네트워크(예를 들어, 판금 박스, 케이블, 랙 하드웨어)를 포함할 수 있다. 기판은 제공자 네트워크의 서비스들을 실행하는 물리적 하드웨어를 포함하는 네트워크 패브릭으로서 고려될 수 있다. 기판은 클라우드 제공자 네트워크(203)의 나머지로부터 격리될 수 있으며, 예를 들어, 기판 네트워크 어드레스로부터, 클라우드 제공자의 서비스들을 실행하는 생산 네트워크에서의 어드레스로, 또는 고객 자원들을 호스팅하는 고객 네트워크로 라우팅하는 것이 가능하지 않을 수 있다.
클라우드 제공자 네트워크(203)는 또한 기판 상에서 실행되는 가상 컴퓨팅 자원들의 오버레이 네트워크를 포함할 수 있다. 적어도 일부 실시예들에서, 네트워크 기판 상의 하이퍼바이저들 또는 다른 디바이스들 또는 프로세스들은 캡슐화 프로토콜 기술을 사용하여 제공자 네트워크 내의 상이한 호스트들 상의 클라이언트 자원 인스턴스들 사이에서 네트워크 기판을 통해 네트워크 패킷들(예를 들어, 클라이언트 IP 패킷들)을 캡슐화하고 라우팅할 수 있다. 캡슐화 프로토콜 기술은 오버레이 네트워크 경로들 또는 루트들을 통해 네트워크 기판 상의 엔드포인트들 사이에서 캡슐화된 패킷들(네트워크 기판 패킷들로도 지칭됨)을 라우팅하기 위해 네트워크 기판 상에서 사용될 수 있다. 캡슐화 프로토콜 기술은 네트워크 기판 상에 오버레이된 가상 네트워크 토폴로지를 제공하는 것으로 간주될 수 있다. 이와 같이, 네트워크 패킷들은 오버레이 네트워크(예를 들어, 가상 사설 클라우드(virtual private cloud, VPC)로 지칭될 수 있는 가상 네트워크, 보안 그룹으로 지칭될 수 있는 포트/프로토콜 방화벽 구성들)에서의 구성들에 따라 기판 네트워크를 따라 라우팅될 수 있다. 맵핑 서비스(도시되지 않음)가 이들 네트워크 패킷들의 라우팅을 조정할 수 있다. 맵핑 서비스는 분산형 기판 컴퓨팅 디바이스들이 패킷들을 발신할 곳을 룩업할 수 있도록 오버레이 인터넷 프로토콜(IP)과 네트워크 식별자의 조합을 기판 IP에 맵핑하는 지역 분산형 룩업 서비스일 수 있다.
예시하자면, 각 물리적 호스트 디바이스(예를 들어, 컴퓨트 서버, 블록 저장 서버, 객체 저장 서버 및 제어 서버)는 기판 네트워크에서의 IP 어드레스를 가질 수 있다. 하드웨어 가상화 기술은 다수의 운영 체제들이 호스트 컴퓨터 상에서, 예를 들어, 컴퓨팅 서버 상의 가상 머신(VM)들로서 동시에 실행될 수 있게 할 수 있다. 호스트 상의 하이퍼바이저, 또는 가상 머신 모니터(virtual machine monitor, VMM)는 호스트 상의 다양한 VM들 사이에서 호스트의 하드웨어 자원들을 할당하고, VM들의 실행을 모니터링한다. 각 VM은 오버레이 네트워크에서의 하나 이상의 IP 어드레스를 제공받을 수 있고, 호스트 상의 VMM은 호스트 상의 VM들의 IP 어드레스를 인식할 수 있다. VMM들(및/또는 네트워크 기판 상의 다른 디바이스들 또는 프로세스들)은 캡슐화 프로토콜 기술을 사용하여 클라우드 제공자 네트워크(203) 내의 상이한 호스트들 상의 가상 자원 인스턴스들 사이에서 네트워크 기판을 통해 네트워크 패킷들(예를 들어, 클라이언트 IP 패킷들)을 캡슐화하고 라우팅할 수 있다. 캡슐화 프로토콜 기술은 오버레이 네트워크 경로들 또는 루트들을 통해 네트워크 기판 상의 엔드포인트들 사이에서 캡슐화된 패킷들을 라우팅하기 위해 네트워크 기판 상에서 사용될 수 있다. 캡슐화 프로토콜 기술은 네트워크 기판 상에 오버레이된 가상 네트워크 토폴로지를 제공하는 것으로 간주될 수 있다. 캡슐화 프로토콜 기술은 엔드포인트들 사이에서 패킷들을 라우팅하기 위해 클라우드 제공자 네트워크(203) 상의 다양한 프로세스들에 의해 액세스될 수 있는 IP 오버레이 어드레스들(예를 들어, 고객들에게 보이는 IP 어드레스들)을 기판 IP 어드레스들(고객들에게 보이지 않는 IP 어드레스)에 맵핑하는 맵핑 디렉토리를 유지하는 맵핑 서비스를 포함할 수 있다.
클라우드 제공자 네트워크 기판의 트래픽 및 동작들은 다양한 실시예들에서 크게 두 개의 카테고리들: 논리 제어 평면을 통해 반송되는 제어 평면 트래픽 및 논리 데이터 평면을 통해 반송되는 데이터 평면 동작들로 세분될 수 있다. 데이터 평면은 분산 컴퓨팅 시스템을 통한 사용자 데이터의 이동을 나타내지만, 제어 평면은 분산 컴퓨팅 시스템을 통한 제어 신호들의 이동을 나타낸다. 제어 평면은 일반적으로 하나 이상의 제어 서버에 걸쳐 분산되고 이들에 의해 구현되는 하나 이상의 제어 평면 구성요소 또는 서비스를 포함한다. 제어 평면 트래픽은 일반적으로 다양한 고객들에 대한 격리된 가상 네트워크들을 확립하는 것, 자원 사용 및 상태를 모니터링하는 것, 요청된 컴퓨트 인스턴스가 론칭될 특정 호스트 또는 서버를 식별하는 것, 필요에 따라 추가적인 하드웨어를 프로비저닝하는 것 등과 같은 운영 동작들을 포함한다. 데이터 평면은 클라우드 제공자 네트워크(203) 상에서 구현되는 고객 자원들(예를 들어, 컴퓨팅 인스턴스들, 컨테이너들, 블록 저장소 볼륨들, 데이터베이스들, 파일 저장소)을 포함한다. 데이터 평면 트래픽은 일반적으로 자원들로 그리고 이들로부터 고객 데이터를 전송하는 것과 같은 비운영 동작들을 포함한다.
제어 평면 구성요소들은 통상적으로 데이터 평면 서버와 별개의 서버 세트 상에 구현되고, 제어 평면 트래픽 및 데이터 평면 트래픽은 별개/별도 네트워크들을 통해 발신될 수 있다. 일부 실시예들에서, 제어 평면 트래픽 및 데이터 평면 트래픽은 상이한 프로토콜들에 의해 지원될 수 있다. 일부 실시예들에서, 클라우드 제공자 네트워크(203)를 통해 발신된 메시지들(예를 들어, 패킷들)은 트래픽이 제어 평면 트래픽인지 또는 데이터 평면 트래픽인지를 표시하기 위한 플래그를 포함한다. 일부 실시예들에서, 트래픽의 페이로드가 그 유형(예를 들어, 제어 또는 데이터 평면)을 결정하기 위해 검사될 수 있다. 트래픽 유형들을 구별하기 위한 다른 기술들이 가능하다.
데이터 평면은 하나 이상의 컴퓨팅 디바이스(221)를 포함할 수 있으며, 이는 베어 메탈(예를 들어, 단일 테넌트)일 수 있거나, 하나 이상의 고객에 대한 다수의 VM들 또는 머신 인스턴스들(224) 또는 마이크로VM들을 실행하기 위해 하이퍼바이저에 의해 가상화될 수 있다. 이들 컴퓨팅 서버들은 클라우드 제공자 네트워크(203)의 가상 컴퓨팅 서비스(또는 "하드웨어 가상화 서비스")를 지원할 수 있다. 가상 컴퓨팅 서비스는 제어 평면의 일부일 수 있어, 고객들이 API(215)를 통해 커맨드들을 발행하여 그 애플리케이션들에 대한 컴퓨트 인스턴스들(예를 들어, VM들, 컨테이너들)을 론칭 및 관리할 수 있게 한다. 가상 컴퓨팅 서비스는 다양한 컴퓨터 및/또는 메모리 자원을 갖는 가상 컴퓨트 인스턴스들을 제공할 수 있다. 일 실시예에서, 가상 컴퓨트 인스턴스들의 각각은 몇몇 인스턴스 유형 중 하나에 대응할 수 있다. 인스턴스 유형은 그 하드웨어 유형, 컴퓨터 자원들(예를 들어, CPU들 또는 CPU 코어들의 수, 유형, 및 구성), 메모리 자원들(로컬 메모리의 용량, 유형, 및 구성), 스토리지 자원들(예를 들어, 로컬로 액세스가능한 스토리지의 용량, 유형, 및 구성), 네트워크 자원들(예를 들어, 그것의 네트워크 인터페이스 및/또는 네트워크 성능들의 특성들), 및/또는 다른 적합한 서술적인 특질들에 의해 특징지어질 수 있다. 인스턴스 유형 선택 기능을 사용하여, 인스턴스 유형은 예를 들어, 고객으로부터 입력에 (적어도 부분적으로) 기초하여, 고객에 대해 선택될 수 있다. 예를 들어, 고객은 인스턴스 유형들의 미리 정의된 세트로부터 인스턴스 유형을 선택할 수 있다. 다른 예로서, 고객은 인스턴스 유형의 원하는 자원들 및/또는 인스턴스가 실행할 워크로드의 요건들을 지정할 수 있고, 인스턴스 유형 선택 기능은 그러한 지정에 기초하여 인스턴스 유형을 선택할 수 있다.
데이터 평면은 또한 하나 이상의 블록 스토어 서버를 포함할 수 있으며, 이는 고객 데이터의 볼륨들을 저장하기 위한 영구 저장뿐만 아니라, 이들 볼륨들을 관리하기 위한 소프트웨어를 포함한다. 이들 블록 저장 서버들은 클라우드 제공자 네트워크(203)의 블록 데이터 저장 서비스(212)를 지원할 수 있다. 블록 데이터 저장 서비스(212)는 제어 평면의 일부일 수 있어, 고객들이 API(215)를 통해 커맨드들을 발행하여 컴퓨트 인스턴스들 상에서 실행되는 그 애플리케이션들에 대한 볼륨들을 생성하고 관리할 수 있게 한다. 블록 저장 서버들은 데이터가 블록들로서 저장되는 하나 이상의 서버를 포함한다. 블록은 최대 길이의 블록 크기를 갖는, 보통 일부 정수의 레코드들을 포함하는 바이트 또는 비트 시퀀스이다. 블록화된 데이터는 통상적으로 데이터 버퍼에 저장되고, 한 번에 전체 블록을 판독 또는 기록한다. 일반적으로, 볼륨은 사용자를 대신하여 유지되는 데이터 세트와 같은 데이터의 논리적 세트에 대응할 수 있다. 예를 들어, 1 GB 내지 1 테라바이트(TB) 또는 그 이상의 크기 범위의 개별 하드 드라이브로서 취급될 수 있는 사용자 볼륨들은 블록 저장 서버들 상에 저장된 하나 이상의 블록으로 만들어진다. 개별 하드 드라이브로서 취급되지만, 볼륨은 하나 이상의 기본 물리적 호스트 디바이스 상에서 구현되는 하나 이상의 가상 디바이스로서 저장될 수 있다는 것이 이해될 것이다. 볼륨들은 작은 횟수(예를 들어, 16 이하)로 파티셔닝될 수 있으며, 각 파티션은 상이한 호스트에 의해 호스팅된다.
볼륨의 데이터는 볼륨의 다수의 복제본들(이러한 복제본들은 컴퓨팅 시스템 상의 볼륨을 집합적으로 나타낼 수 있음)을 제공하기 위해 클라우드 제공자 네트워크(203) 내의 다수의 디바이스들 사이에서 복제될 수 있다. 분산 컴퓨팅 시스템에서 볼륨의 복제본들은 예를 들어, 사용자가 블록 레벨에서 일차 복제본에 동기화되는 볼륨의 일차 복제본 또는 볼륨의 이차 복제본 중 어느 하나에 액세스할 수 있게 함으로써, 자동 페일오버 및 복구를 유리하게 제공할 수 있어서, 일차 또는 이차 복제본 중 어느 하나의 장애는 볼륨의 정보에 대한 액세스를 저해하지 않는다. 일차 복제본의 역할은 볼륨에서 판독 및 기록(때때로 "입력 출력 동작", 또는 간단히 "I/O 동작"으로 지칭됨)을 가능하게 하고, 임의의 기록을 이차 복제본으로 (비동기 복제가 또한 사용될 수 있지만, 바람직하게는 I/O 경로에서 동기적으로) 전파하는 것일 수 있다.
이차 복제본은 일차 복제본과 동기적으로 업데이트될 수 있고, 페일오버 동작들 동안 끊김 없는 전환을 제공할 수 있으며, 이에 의해 이차 복제본은 일차 복제본의 역할을 가정하고, 전자의 일차측은 이차측으로서 지정되거나 새로운 대체 이차 복제본이 프로비저닝된다. 본원의 특정 예들이 일차 복제본 및 이차 복제본을 논의하지만, 논리적 볼륨은 다수의 이차 복제본들을 포함할 수 있다는 것이 이해될 것이다. 컴퓨트 인스턴스는 클라이언트를 통해 그 I/O를 볼륨으로 가상화할 수 있다. 클라이언트는 컴퓨트 인스턴스가 원격 데이터 볼륨(예를 들어, 네트워크를 통해 액세스되는 물리적으로 별도의 컴퓨팅 디바이스 상에 저장된 데이터 볼륨)에 연결하고, 원격 데이터 볼륨에서 I/O 동작들을 수행할 수 있게 하는 명령어들을 나타낸다. 클라이언트는 컴퓨트 인스턴스의 처리 유닛들(예를 들어, CPU들 또는 GPU들)을 포함하는 서버의 오프로드 디바이스 상에서 구현될 수 있다.
데이터 평면은 또한 클라우드 제공자 네트워크(203) 내의 다른 유형의 저장을 나타내는 하나 이상의 객체 저장 서버에 대한 저장 서비스들을 포함할 수 있다. 객체 저장 서버들은 버킷들로 지칭되는 자원들 내의 객체들로서 데이터가 저장되는 하나 이상의 서버를 포함하고, 클라우드 제공자 네트워크(203)의 관리 객체 저장 서비스를 지원하기 위해 사용될 수 있다. 각 객체는 통상적으로, 저장되는 데이터, 저장된 객체를 분석하는 것과 관련하여 객체 저장 서버들에 대한 다양한 능력들을 가능하게 하는 가변량의 메타데이터, 및 객체를 검색하기 위해 사용될 수 있는 전역 고유 식별자 또는 키를 포함한다. 각 버킷은 소정의 사용자 계정과 연관된다. 고객들은 그 버킷들 내에 원하는 만큼 많은 객체들을 저장할 수 있고, 그 버킷들에서 객체들을 기입, 판독 및 삭제할 수 있으며, 그 버킷들 및 그 안에 포함된 객체들에 대한 액세스를 제어할 수 있다. 또한, 위에서 설명된 영역들 중 상이한 영역들에 걸쳐 분산된 다수의 상이한 객체 저장 서버들을 갖는 실시예들에서, 사용자들은 예를 들어, 레이턴시를 최적화하기 위해 버킷이 저장되는 영역(또는 영역들)을 선택할 수 있다. 고객들은 VM들을 론칭하기 위해 사용될 수 있는 머신 이미지들, 및 볼륨의 데이터의 시점 뷰를 나타내는 스냅샷들을 포함하여, 다양한 유형들의 객체들을 저장하기 위해 버킷들을 사용할 수 있다.
컴퓨팅 디바이스들(221)은 가상 머신(VM) 인스턴스들, 컨테이너들, 서버리스 기능들 등을 포함할 수 있는 다양한 형태들의 할당된 컴퓨팅 용량(227)을 가질 수 있다. VM 인스턴스들은 VM 이미지로부터 인스턴스화될 수 있다. 이를 위해, 고객들은 가상 머신 인스턴스가 다른 유형들의 컴퓨팅 디바이스들(221)과는 대조적으로 특정 유형의 컴퓨팅 디바이스(221)에서 론칭되어야 함을 지정할 수 있다. 다양한 예들에서, 하나의 VM 인스턴스가 특정 컴퓨팅 디바이스(221) 상에서 단독으로 실행될 수 있거나, 복수의 VM 인스턴스들이 특정 컴퓨팅 디바이스(221) 상에서 실행될 수 있다. 또한, 특정 컴퓨팅 디바이스(221)는 상이한 유형들의 VM 인스턴스들을 실행할 수 있으며, 이는 컴퓨팅 디바이스(221)를 통해 이용가능한 상이한 양의 자원들을 제공할 수 있다. 예를 들어, 일부 유형들의 VM 인스턴스들은 다른 유형들의 VM 인스턴스들보다 더 많은 메모리 및 처리 능력을 제공할 수 있다.
클라우드 제공자 네트워크(203)는 복수의 영역들(230)로서 형성될 수 있으며, 여기서 영역(230)은 클라우드 제공자가 하나 이상의 데이터 센터를 갖는 별개의 지리적 영역이다. 각 영역(230)은 예를 들어, 섬유 통신 연결과 같은 사설 고속 네트워크를 통해 서로 연결된 두 개 이상의 가용 구역(availability zone, AZ)들(233)을 포함할 수 있다. 가용 구역(233)은 별도의 전력, 별도의 네트워킹, 및 다른 가용 구역들에 대한 별도의 냉각을 갖는 하나 이상의 데이터 센터 설비를 포함하는 격리된 장애 도메인을 지칭한다. 클라우드 제공자는 자연 재해, 광범위한 정전, 또는 다른 예상치 못한 이벤트가 동시에 하나보다 많은 가용 구역을 오프라인으로 취하지 않도록 서로 충분히 멀리 떨어진 영역(230) 내에 가용 구역들(233)을 위치시키려고 시도할 수 있다. 고객들은 공개적으로 액세스가능한 네트워크(예를 들어, 인터넷, 셀룰러 통신 네트워크, 통신 서비스 제공자 네트워크)를 통해 클라우드 제공자 네트워크(203)의 가용 구역들(233) 내의 자원들에 접속할 수 있다. 전환 센터들(Transit Center, TC)은 고객들을 클라우드 제공자 네트워크(203)에 링크시키는 주요 백본 위치들이고, 다른 네트워크 제공자 시설들(예를 들어, 인터넷 서비스 제공자들, 원격통신 제공자들)에 함께 위치될 수 있다. 각 영역(230)은 리던던시를 위해 두 개 이상의 TC들을 동작시킬 수 있다. 영역들(230)은 글로벌 네트워크에 연결되며, 이는 각 영역(230)을 적어도 하나의 다른 영역에 연결하는 전용 네트워킹 인프라구조(예를 들어, 클라우드 서비스 제공자에 의해 제어되는 파이버 연결들)를 포함한다. 클라우드 제공자 네트워크(203)는 에지 위치들 및 지역 에지 캐시 서버들에 의해 이들 영역들(230)의 외부에 있지만 이들과 네트워킹된 접속 포인트(points of presence, PoP)들로부터 콘텐츠를 전달할 수 있다. 컴퓨팅 하드웨어의 이러한 구획화 및 지리적 분산은 클라우드 제공자 네트워크(203)가 고도의 장애 내성 및 안정성을 갖는 글로벌 스케일로 낮은 레이턴시 자원 액세스를 고객들에게 제공할 수 있게 한다.
다양한 애플리케이션들 및/또는 다른 기능이 다양한 실시예들에 따라 클라우드 제공자 네트워크(203)에서 실행될 수 있다. 클라우드 제공자 네트워크(203) 상에서 실행되는 구성요소들은 예를 들어, 하나 이상의 인스턴스 관리기(236), 하나 이상 컨테이너 오케스트레이션 서비스(239), 하나 이상으로 마이그레이션 서비스(242), 및 본원에서 상세히 논의되지 않은 다른 애플리케이션들, 서비스들, 프로세스들, 시스템들, 엔진들, 또는 기능을 포함한다. 인스턴스 관리자(236)는 컨테이너 실행 환경(100)(도 1a 내지 도 1c)을 제공하기 위해 클라우드 제공자 네트워크(203)에서 머신 인스턴스들(224)의 풀을 관리하기 위해 실행된다. 인스턴스 관리자(236)는 컨테이너 실행 환경(100)의 사용을 모니터링하고, 요구대로 머신 인스턴스들(224)의 양을 스케일링 업 또는 다운할 수 있다. 일부 실시예들에서, 인스턴스 관리자(236)는 또한 클라우드 제공자 네트워크(203) 내의 기판 머신 인스턴스들(245) 및/또는 오프로드 디바이스들(118)을 관리할 수 있다. 이는 요구대로 기판 머신 인스턴스들(245)의 양을 스케일링 업 또는 다운하는 것, 요구에 기초하여 컨테이너 런타임(246) 및 컨테이너 오케스트레이션 에이전트(248)와 같은 컨테이너 제어 평면(114) 내의 구성요소들의 추가적인 인스턴스들을 디플로이하는 것, 또는 컨테이너 제어 평면(114)의 구성요소들을 더 높은 또는 더 낮은 용량의 기판 머신 인스턴스(245)들로 또는 오프로드 디바이스들(118)로 그리고 이들로부터 이동시키는 것을 수반할 수 있다.
컨테이너 오케스트레이션 서비스(239)는 프로비저닝, 디플로이먼트, 스케일링 업, 스케일링 다운, 네트워킹, 로드 밸런싱, 및 다른 기능들을 포함하는 컨테이너 인스턴스들(112)의 라이프사이클을 관리하도록 실행된다. 컨테이너 오케스트레이션 서비스들(239)은 컨테이너 인스턴스(112)와 동일한 머신 인스턴스(224) 상에 통상적으로 디플로이되는 컨테이너 오케스트레이션 에이전트들(248)에 의해 이들 기능들을 실현한다. 다양한 실시예들에서, 컨테이너 오케스트레이션 에이전트들(248)은 예를 들어, 기판 머신 인스턴스(245) 또는 오프로드 디바이스(118) 상에서, 컨테이너 인스턴스(112)가 실행되는 머신 인스턴스들(224)과 별도의 컴퓨팅 용량(227) 상에 배치된다. 상용 컨테이너 오케스트레이션 서비스들(239)의 비제한적인 예들은 KUBERNETES, APACHE MESOS, DOCKER 오케스트레이션 툴들 등을 포함한다. 컨테이너 오케스트레이션 서비스(239)의 개별 인스턴스는 컨테이너 오케스트레이션 에이전트(들)(248)를 통해 클라우드 제공자 네트워크(203)의 단일 고객 또는 다수의 고객들에 대한 컨테이너 인스턴스들(112)을 관리할 수 있다.
마이그레이션 서비스(242)는 컨테이너 런타임(246) 및 컨테이너 오케스트레이션 에이전트(248)와 같은 컨테이너 제어 평면(114)의 구성요소들의 라이브 업데이트 및 마이그레이션을 관리하기 위해 실행된다. 컨테이너 런타임(246) 및 컨테이너 오케스트레이션 에이전트(248)의 새로운 또는 업데이트된 버전들이 이용가능해짐에 따라, 마이그레이션 서비스(242)는 영향을 받은 컨테이너 인스턴스들(112)을 재부팅하거나 종결하지 않고 이전 버전들을 대체한다.
블록 데이터 저장 서비스(212)는 머신 인스턴스들(224)에 블록 데이터 서비스를 제공한다. 다양한 실시예들에서, 블록 데이터 저장 서비스(212)는 컨테이너 이미지들(127), 머신 이미지들(251), 및/또는 다른 데이터를 저장한다. 컨테이너 이미지들(127)은 애플리케이션들 및 그 종속성을 포함하는, 고객들에 의해 생성된 컨테이너 구성들에 대응한다. 컨테이너 이미지(127)는 하나 이상의 유형의 운영 체제와 호환될 수 있다. 일부 경우들에서, 컨테이너 이미지들(127)은 컨테이너 인스턴스(112)의 수정된 상태로 업데이트될 수 있다. 일부 구현예들에서, 컨테이너 이미지들(127)은 OCI(Open Container Initiative)로부터의 Image Specification과 호환가능하다.
머신 이미지(251)는 운영 체제 및 지원 애플리케이션들 및 구성들을 포함하여, 물리적 또는 가상 머신 시스템 이미지에 대응한다. 머신 이미지들(251)은 클라우드 제공자에 의해 생성될 수 있고, 고객들에 의해 수정되지 않을 수 있다. 머신 이미지(251)는 머신 인스턴스들(224) 또는 기판 머신 인스턴스들(245)로 인스턴스화되는 것이 가능하다.
머신 인스턴스들(224)은 컨테이너 실행 환경들(100)에 대한 컨테이너 실행을 수행한다. 다양한 예들에서, 머신 인스턴스들(224)은 운영 체제 커널(106), 하나 이상의 컨테이너 제어 평면 인터페이스(253), 이를테면 컨테이너 런타임 인터페이스(254) 및/또는 컨테이너 오케스트레이션 에이전트 인터페이스(257), 하나 이상 컨테이너 인스턴스(112), 및 판독/기록 계층(124)을 포함할 수 있다. 운영 체제 커널(106)은 다양한 예들에서 LINUX, BSD, 또는 다른 커널에 대응할 수 있다. 운영 체제 커널(106)은 시스템 호출 및 인터럽트를 통해 프로세서, 메모리, 입력/출력, 네트워킹 등과 같은 시스템 기능을 관리할 수 있다. 운영 체제 커널(106)은 다수의 스레드들 및 프로세스들의 동시성을 관리하는 스케줄러를 포함할 수 있다. 일부 경우들에서, 사용자 공간 제어기는 보호된 커널 공간과는 대조적으로 사용자 공간에서 운영 체제 커널(106)의 기능들에 대한 액세스를 제공한다.
컨테이너 제어 평면 인터페이스들(253)은 운영 체제 커널(106) 및 컨테이너 인스턴스들(112)이 컨테이너 제어 평면(114)의 구성요소들과 통신할 수 있게 하는 통신 인터페이스들로서 작용한다. 컨테이너 런타임 인터페이스(254)는 컨테이너 런타임(246)에 대한 액세스를 제공하기 위한 경량 심으로서 작용한다. 컨테이너 런타임 인터페이스(254)는 API 호출, 마샬 파라미터를 수신하고, 그 호출을 컨테이너 런타임(246)에 포워딩한다. 컨테이너 오케스트레이션 에이전트 인터페이스(257)는 컨테이너 오케스트레이션 에이전트(248)에 대한 액세스를 제공하는 경량 심으로서 작용한다. 컨테이너 오케스트레이션 에이전트 인터페이스(257)는 API 호출, 마샬 파라미터를 수신하고, 그 호출을 컨테이너 오케스트레이션 에이전트(248)에 포워딩한다.
기밀 컴퓨팅 에이전트(258)는 머신 인스턴스(224)를 포함하는 물리적 메모리를 암호화하기 위해, (예를 들어, 메모리 제어기 및/또는 프로세서에 임베드된) 머신 인스턴스(224)에서, 하이퍼바이저 계층에서, 또는 하위 하드웨어 계층에서 실행될 수 있다. 물리적 메모리를 암호화하는 것은 컨테이너 인스턴스(112)의 콘텐츠를 클라우드 제공자에 대해 기밀하게 만들기 위해 사용될 수 있다. 비제한적인 상용가능한 예는 ADVANCED MICRO DEVICES, INC의 Secure Encrypted Virtualization이다. 클라우드 제공자가 통상적으로, 오프로드 디바이스(118)에서 컨테이너 제어 평면(114)을 실행함으로써 컨테이너 제어 평면(114)을 관리하기 위한 액세스를 할 수 있을 것이지만, 컨테이너 제어 평면(114)과 컨테이너 인스턴스(112)는 별도이다. 이에 따라, 컨테이너 인스턴스(112)를 포함하는 물리적 메모리는 컨테이너 제어 평면(114)을 관리하기 위해 클라우드 제공자가 액세스하지 않고 암호화될 수 있다.
컨테이너 인스턴스들(112)은 머신 인스턴스(224)에서 실행되는 컨테이너의 인스턴스들이다. 판독/기록 계층(124)은 잠재적으로 블록 데이터를 컨테이너 인스턴스(112)에 제공하기 위한 맵핑된 드라이브 또는 다른 접근법을 통해, 블록 데이터 저장 서비스(212)에 대한 액세스를 컨테이너 인스턴스들(112)에 제공한다.
기판 머신 인스턴스들(245)은 컨테이너 런타임(246) 및 컨테이너 오케스트레이션 에이전트(248)를 포함하여, 컨테이너 제어 평면(114)의 구성요소들의 인스턴스들에 대한 별도의 실행 환경을 제공하기 위해 클라우드 제공자 네트워크(203)의 기판에서 실행될 수 있다. 컨테이너 런타임(246)의 비제한적인 예들은 컨테이너화, CRI-O, DOCKER 등을 포함할 수 있다. 컨테이너 런타임(246)은 Open Container Initiative의 Runtime Specification을 충족시킬 수 있다. 오프로드 디바이스들(118)은 컨테이너 런타임(246) 및/또는 컨테이너 오케스트레이션 에이전트(248)를 실행하기 위해 기판 머신 인스턴스들(245) 대신에 또는 이에 추가하여 사용될 수 있다.
클라이언트 디바이스(206)는 네트워크(209)에 결합될 수 있는 복수의 클라이언트 디바이스들을 나타낸다. 클라이언트 디바이스(206)는 예를 들어, 컴퓨터 시스템과 같은 프로세서 기반 시스템을 포함할 수 있다. 이러한 컴퓨터 시스템은 데스크탑 컴퓨터, 랩탑 컴퓨터, 개인 휴대 정보 단말기, 셀룰러 전화기, 스마트폰, 셋탑 박스, 뮤직 플레이어, 웹 패드, 태블릿 컴퓨터 시스템, 게임 콘솔, 전자책 리더, 스마트워치, 헤드 마운트 디스플레이, 음성 인터페이스 디바이스, 또는 다른 디바이스의 형태로 구현될 수 있다. 클라이언트 디바이스(206)는 예를 들어, 액정 디스플레이(LCD) 디스플레이, 가스 플라즈마 기반 평판 디스플레이, 유기 발광 다이오드(OLED) 디스플레이들, 전기영동 잉크(electrophoretic ink; E 잉크) 디스플레이들, LCD 프로젝터들, 또는 다른 유형들의 디스플레이 디바이스들 등과 같은 하나 이상의 디바이스를 포함할 수 있는 디스플레이를 포함할 수 있다.
클라이언트 디바이스(206)는 클라이언트 애플리케이션(279) 및/또는 다른 애플리케이션들과 같은 다양한 애플리케이션들을 실행하도록 구성될 수 있다. 클라이언트 애플리케이션(279)은 예를 들어, 클라우드 제공자 네트워크(203) 및/또는 다른 서버들에 의해 서비스되는 네트워크 콘텐츠에 액세스하기 위해 클라이언트 디바이스(206)에서 실행될 수 있음으로써, 디스플레이 상에 사용자 인터페이스를 렌더링한다. 이를 위해, 클라이언트 애플리케이션(279)은 예를 들어, 브라우저, 전용 애플리케이션 등을 포함할 수 있고, 사용자 인터페이스는 네트워크 페이지, 애플리케이션 스크린 등을 포함할 수 있다. 클라이언트 디바이스(206)는 예를 들어, 이메일 애플리케이션들, 소셜 네트워킹 애플리케이션들, 워드 프로세서들, 스프레드시트들, 및/또는 다른 애플리케이션들과 같은 클라이언트 애플리케이션(279) 이외의 애플리케이션들을 실행하도록 구성될 수 있다.
이제 도 3을 참조하면, 다양한 실시예들에 따른 오프로드 디바이스(118)(도 2)를 갖는 컴퓨팅 디바이스(221)의 일례의 개략적인 블록도가 도시되어 있다. 컴퓨팅 디바이스(221)는 버스와 같은 로컬 하드웨어 상호연결 인터페이스(309)에 결합되는 하나 이상의 프로세서(303a) 및 하나 이상의 메모리(306a)를 포함한다. 하나 이상의 머신 인스턴스(224)가 메모리(306a)에 저장되고 프로세서(303a) 상에서 실행된다. 오프로드 디바이스(118)는 또한 예를 들어, PCI(Peripheral Component Interconnect) 또는 PCIe(PCI Express) 버스를 통해, 로컬 하드웨어 상호연결 인터페이스(309)에 결합된다. 예를 들어, 오프로드 디바이스(118)는 버스 상의 커넥터에 플러그될 수 있는 물리적 카드에 대응할 수 있다. 오프로드 디바이스(118)는 컨테이너 런타임(246)(도 2) 및/또는 컨테이너 오케스트레이션 에이전트(248)(도2)를 실행하기 위해 사용되는 하나 이상의 프로세서(303b)를 포함한다. 프로세서들(303a 및 303b)은 상이한 프로세서 아키텍처들을 가질 수 있다. 예를 들어, 프로세서(303a)는 x86 아키텍처를 가질 수 있는 한편, 프로세서(303b)는 ARM 아키텍처를 가질 수 있다. 오프로드 디바이스(118)는 메모리(306a)로부터 별도인 메모리(306b)를 가질 수 있다.
일부 구현예들에서, 가상화 관리 태스크들의 적어도 서브세트는 호스트 컴퓨팅 디바이스의 더 많은 처리 용량이 클라이언트 요청 머신 인스턴스들에 전용될 수 있도록 하드웨어 상호연결 인터페이스를 통해 호스트 컴퓨팅 디바이스에 동작가능하게 결합된 하나 이상의 오프로드 디바이스(118)에서 수행될 수 있다 ― 예를 들어, PCI 또는 PCIe를 통해 물리적 CPU들에 연결된 카드들 및 가상화 호스트의 다른 구성요소들이 일부 가상화 관리 구성요소들에 사용될 수 있다. 프로세서(들)(303b)는 고객 머신 인스턴스들이 이용가능하지 않지만, 예를 들어, 가상 머신 관리(예를 들어, 하이퍼바이저), 네트워크 접속 저장 볼륨들에 대한 입력/출력 가상화, 로컬 마이그레이션 관리 태스크들, 인스턴스 상태 모니터링 등과 같은 관리 태스크들에 사용될 수 있다.
다음으로 도 4를 참조하면, 다양한 실시예들에 따른 클라우드 제공자 네트워크(203)(도 2)의 일부분의 동작의 일례를 제공하는 흐름도(400)가 도시되어 있다. 도 4의 흐름도(400)는 본원에서 설명된 바와 같이 본원에서 설명된 바와 같은 클라우드 제공자 네트워크(203)의 일부분의 동작을 구현하기 위해 채용될 수 있는 많은 상이한 유형들의 기능 배열들의 단지 예를 제공하는 것으로 이해된다. 대안예로서, 도 4의 흐름도(400)는 하나 이상의 실시예에 따라 클라우드 제공자 네트워크(203)에서 구현되는 방법의 요소들의 예를 도시하는 것으로서 보여질 수 있다.
박스(403)에서 시작하여, 인스턴스 관리자(236)(도 2)가 컨테이너 실행을 위해 하나 이상의 머신 인스턴스(224)(도 2)를 론칭한다. 머신 인스턴스들(224)은 블록 데이터 저장 서비스(212)(도 2)로부터 획득된 머신 이미지(251)(도 2)로부터 론칭될 수 있다. 예를 들어, 머신 인스턴스들(224)은 컴퓨팅 디바이스(221)(도 2)의 메인보드 또는 마더보드 상에 위치된 하나 이상의 프로세서에서 실행될 수 있다. 박스(406)에서, 인스턴스 매니저(236)는 컨테이너 제어 평면(114)(도 2)을 실행하며, 이는 다른 머신 이미지(251)로부터 론칭된 기판 머신 인스턴스(245)(도 2) 또는 머신 인스턴스들(224)이 실행되는 컴퓨팅 디바이스(221)의 오프로드 디바이스(118)(도 2) 중 어느 하나에서, 머신 인스턴스(224)와는 별도로, 컨테이너 런타임(246)(도 2) 및/또는 컨테이너 오케스트레이션 에이전트(248)(도 2)를 포함할 수 있다. 또한, 컨테이너 제어 평면(114)은 컨테이너 인스턴스(112)(도 2)에 액세스 불가능한 오프로드 디바이스(118)의 메모리에 저장될 수 있다.
박스(409)에서, 머신 인스턴스(224)는 머신 인스턴스(224) 상에서 실행되는 컨테이너 제어 평면(114)과, 하나 이상의 컨테이너 제어 평면 인터페이스(253)(도 2) 사이의 데이터 통신을 가능하게 한다. 일례로, 머신 인스턴스(224)는 머신 인스턴스(224) 상에서 실행되는 컨테이너 런타임(246)과 컨테이너 런타임 인터페이스(254)(도 2) 사이의 데이터 통신을 가능하게 할 수 있다. 다른 예에서, 머신 인스턴스(224)는 머신 인스턴스(224) 상에서 실행되는 컨테이너 오케스트레이션 에이전트(248)와 컨테이너 오케스트레이션 에이전트 인터페이스(257)(도 2) 사이의 데이터 통신을 가능하게 할 수 있다.
박스(415)에서, 컨테이너 오케스트레이션 에이전트(248)는 판독/기록 계층(124)(도 2)을 통해 블록 데이터 저장 서비스(212)로부터 컨테이너 이미지(127)(도 2)가 로딩되게 한다. 박스(418)에서, 컨테이너 오케스트레이션 에이전트(248)는 컨테이너 이미지(127)로부터 컨테이너 인스턴스(112)를 론칭하여서, 자원 소비를 제한하기 위해 커널 네임스페이스들 및 제어 그룹들과 같은 운영 체제 레벨 가상화를 제공하는 컨테이너 런타임(246)에 의해 머신 인스턴스(224)에서 컨테이너 인스턴스(112)가 실행되게 된다.
컨테이너 인스턴스(112)가 실행될 때, 컨테이너 인스턴스(112)에서의 상태는 수정될 수 있다. 박스(421)에서, 컨테이너 오케스트레이션 에이전트(248)는 컨테이너 이미지(127)가 판독/기록 계층(124) 및 블록 데이터 저장 서비스(212)를 통해 저장되게 하며, 여기서 컨테이너 이미지(127)는 수정된 상태를 갖는 컨테이너 인스턴스(112)에 대응한다.
박스(424)에서, 기밀 컴퓨팅 에이전트(258)(도 2)는 컨테이너 인스턴스(112)를 실행하고 있는 머신 인스턴스(224)를 호스팅하는 컴퓨팅 디바이스(221)의 물리적 메모리를 암호화할 수 있다. 암호화된 물리적 메모리는 컨테이너 인스턴스(112), 운영 체제 커널(106), 및/또는 머신 인스턴스(224)로부터의 다른 코드 및 데이터를 포함할 수 있다. 그러나, 컨테이너 제어 평면(114)이 머신 인스턴스(224)와는 별도로 실행되므로, 컨테이너 제어 평면(114)은 암호화된 물리 메모리에 포함되지 않는다. 또한, 컨테이너 제어 평면(114)은 암호화된 물리적 메모리에 대한 액세스가 거부될 수 있으며, 이는 컨테이너 제어 평면(114)과 컨테이너 제어 평면 인터페이스(253) 사이의 통신이 직접 메모리 액세스를 할 수 있는 컨테이너 제어 평면(114)에 비해 원격 절차 호출 또는 유사한 접근법에 의해 일어날 수 있다는 것을 의미한다. 이에 따라, 클라우드 제공자가 컨테이너 제어 평면(114)을 관리하기 위해 액세스를 원한다면, 클라우드 제공자는 암호화된 물리적 메모리에 대한 액세스를 요구하지 않음으로써, 컨테이너 인스턴스(112)에서의 고객 데이터의 기밀성을 제공한다. 그 후, 흐름도(400)는 종료한다.
다음으로 도 5를 참조하면, 다양한 실시예들에 따른 마이그레이션 서비스(242)의 일부분의 동작의 일례를 제공하는 흐름도가 도시되어 있다. 도 5의 흐름도는 본원에서 설명된 바와 같이 본원에서 설명된 바와 같은 마이그레이션 서비스(242)의 일부분의 동작을 구현하기 위해 채용될 수 있는 많은 상이한 유형들의 기능 배열들의 단지 예를 제공하는 것으로 이해된다. 대안예로서, 도 5의 흐름도는 하나 이상의 실시예에 따라 클라우드 제공자 네트워크(203)(도 2)에서 구현되는 방법의 요소들의 예를 도시하는 것으로서 보여질 수 있다.
박스(503)에서 시작하여, 마이그레이션 서비스(242)는 컨테이너 런타임(246)(도 2)과 같은 컨테이너 제어 평면(114)(도 2)의 구성요소의 업데이트된 버전 및/또는 컨테이너 오케스트레이션 에이전트(248)(도 2)의 업데이트된 버전을, 이들이 머신 인스턴스들(224)(도 2)과 별도로 실행되는 환경에 복사한다. 다양한 실시예들에서, 마이그레이션 서비스(242)는 업데이트된 버전들을 오프로드 디바이스(118)(도 2) 또는 기판 머신 인스턴스(245)(도 2)에 복사할 수 있다.
박스(506)에서, 마이그레이션 서비스(242)는 이전 버전들과 병행하여 컨테이너 런타임(246) 및/또는 컨테이너 오케스트레이션 에이전트(248)와 같은 구성요소의 업데이트된 버전들을 실행한다. 박스(509)에서, 마이그레이션 서비스(242)는 이전 버전 대신에 업데이트된 버전을 가리키도록 컨테이너 제어 평면 인터페이스들(253)(도 2) 사이의 데이터 통신을 리디렉션한다. 예를 들어, 마이그레이션 서비스(242)는 이전 버전 대신에 업데이트된 버전을 가리키도록 컨테이너 런타임 인터페이스(254)(도 2) 및 컨테이너 런타임(246)을 리디렉션할 수 있다. 마찬가지로, 마이그레이션 서비스(242)는 이전 버전 대신에 업데이트된 버전을 가리키도록 컨테이너 오케스트레이션 에이전트 인터페이스(257)(도 2)와 컨테이너 오케스트레이션 에이전트(248) 사이의 데이터 통신을 리디렉션할 수 있다.
박스(512)에서, 마이그레이션 서비스(242)는 컨테이너 런타임(246) 및 컨테이너 오케스트레이션 에이전트(248)와 같은 컨테이너 제어 평면(114)의 구성요소의 이전 버전들을 종결할 수 있다. 이제 컨테이너 인스턴스들(112)이 업데이트된 버전들과 상호작용하므로, 이전 버전들을 종결하는 것은 컨테이너 인스턴스들(112)의 동작에 영향을 미치지 않는다. 그 후, 마이그레이션 서비스(242)의 일부분의 동작이 종료한다.
도 6을 참조하면, 본 개시의 실시예에 따른 클라우드 제공자 네트워크(203)의 개략적인 블록도가 도시되어 있다. 클라우드 제공자 네트워크(203)는 하나 이상의 컴퓨팅 디바이스(221)를 포함한다. 각 컴퓨팅 디바이스(221)는 예를 들어, 프로세서(603) 및 메모리(606) ― 이들 양자는 로컬 인터페이스(609)에 결합됨 ― 를 갖는 적어도 하나의 프로세서 회로를 포함한다. 이를 위해, 각 컴퓨팅 디바이스(221)는 예를 들어, 적어도 하나의 서버 컴퓨터 또는 유사한 디바이스를 포함할 수 있다. 로컬 인터페이스(609)는 예를 들어, 이해될 수 있는 바와 같이 동반 어드레스/제어 버스 또는 다른 버스 구조를 갖는 데이터 버스를 포함할 수 있다.
메모리(606)에는 프로세서(603)에 의해 실행가능한 여러 구성요소들과 데이터 양자가 저장된다. 특히, 인스턴스 관리자(236), 컨테이너 오케스트레이션 서비스(239), 마이그레이션 서비스(242), 및 잠재적으로 다른 애플리케이션들이 메모리(606)에 저장되고 프로세서(603)에 의해 실행가능하다. 또한, 데이터 저장소(612) 및 다른 데이터가 메모리(606)에 저장될 수 있다. 또한, 운영 체제는 메모리(606)에 저장되고 프로세서(603)에 의해 실행가능할 수 있다.
이해될 수 있는 바와 같이, 메모리(606)에 저장되고 프로세서(603)에 의해 실행가능한 다른 애플리케이션들이 존재할 수 있다는 것이 이해된다. 본원에서 논의되는 임의의 구성요소가 소프트웨어의 형태로 구현되는 경우, 예를 들어, C, C++, C#, Objective C, Java®, JavaScript®, Perl, PHP, Visual Basic®, Python®, Ruby, Flash® 또는 다른 프로그래밍 언어들과 같은 다수의 프로그래밍 언어들 중 임의의 언어가 채용될 수 있다.
다수의 소프트웨어 구성요소들은 메모리(606)에 저장되고 프로세서(603)에 의해 실행가능하다. 이와 관련하여, 용어 "실행가능한"은 프로세서(603)에 의해 궁극적으로 실행될 수 있는 형태인 프로그램 파일을 의미한다. 실행가능한 프로그램들의 예들은 예를 들어, 메모리(606)의 랜덤 액세스 부분으로 로딩되고 프로세서(603)에 의해 실행될 수 있는 포맷의 기계 코드, 메모리(606)의 랜덤 액세스 부분으로 로딩될 수 있고 프로세서(603)에 의해 실행될 수 있는 객체 코드와 같은 적절한 포맷으로 표현될 수 있는 소스 코드, 또는 메모리(606)의 랜덤 액세스 부분에서 프로세서(603)에 의해 실행될 명령어들을 생성하기 위해 다른 실행가능한 프로그램에 의해 해석될 수 있는 소스 코드 등으로 변환될 수 있는 컴파일된 프로그램일 수 있다. 실행가능한 프로그램은 예를 들어, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 하드 드라이브, 솔리드 스테이트 드라이브, USB 플래시 드라이브, 메모리 카드, 광 디스크, 이를테면 컴팩트 디스크(CD) 또는 디지털 다목적 디스크(DVD), 플로피 디스크, 자기 테이프, 또는 다른 메모리 구성요소들을 포함하는 메모리(606)의 임의의 부분 또는 구성요소에 저장될 수 있다.
메모리(606)는 본원에서 휘발성 및 비휘발성 메모리 및 데이터 저장 구성요소들 양자를 포함하는 것으로 정의된다. 휘발성 구성요소들은 전력 손실 시 데이터 값들을 유지하지 않는 것들이다. 비휘발성 구성요소들은 전력 손실 시 데이터를 유지하는 것들이다. 이에 따라, 메모리(606)는 예를 들어, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 하드 디스크 드라이브, 고체 상태 드라이브, USB 플래시 드라이브, 메모리 카드 판독기를 통해 액세스되는 메모리 카드, 연관된 플로피 디스크 드라이브를 통해 액세스되는 플로피 디스크, 광 디스크 드라이브를 통해 액세스되는 광 디스크, 적절한 테이프 드라이브를 통해 액세스되는 자기 테이프, 및/또는 다른 메모리 구성요소들, 또는 이들 메모리 구성요소들 중 임의의 둘 이상의 조합을 포함할 수 있다. 또한, RAM은 예를 들어, SRAM(static random access memory), DRAM(dynamic random access memory), 또는 MRAM(magnetic random access memory) 및 다른 이와 같은 디바이스들을 포함할 수 있다. ROM은 예를 들어, PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasible programmable read-only memory), 또는 다른 유사한 메모리 디바이스를 포함할 수 있다.
또한, 프로세서(603)는 다수의 프로세서들(603) 및/또는 다수의 프로세서 코어들을 나타낼 수 있고, 메모리(606)는 각각 병렬 처리 회로들에서 동작하는 다수의 메모리들(606)을 나타낼 수 있다. 이러한 경우에, 로컬 인터페이스(609)는 다수의 프로세서들(603) 중 임의의 둘 사이, 임의의 프로세서(603)와 임의의 메모리(606) 사이, 또는 메모리들(606) 중 임의의 둘 사이 등 사이의 통신을 가능하게 하는 적절한 네트워크일 수 있다. 로컬 인터페이스(609)는 예를 들어, 로드 밸런싱을 수행하는 것을 포함하며, 이러한 통신을 조정하도록 설계된 추가적인 시스템들을 포함할 수 있다. 프로세서(603)는 전기적 또는 일부 다른 이용가능한 구성을 가질 수 있다.
그렇지만 인스턴스 관리기(236), 컨테이너 오케스트레이션 서비스(239), 마이그레이션 서비스(242), 및 본원에서 설명된 다른 다양한 시스템들은 위에서 논의된 바와 같이 범용 하드웨어에 의해 실행되는 소프트웨어 또는 코드로 구현될 수 있지만, 대안예로서, 동일한 것이 또한 전용 하드웨어 또는 소프트웨어/범용 하드웨어와 전용 하드웨어의 조합으로 구현될 수 있다. 전용 하드웨어로 구현되는 경우, 각각은 다수의 기술들 중 임의의 하나 또는 이들의 조합을 채용하는 회로 또는 상태 기계로서 구현될 수 있다. 이러한 기술들은 하나 이상의 데이터 신호의 인가 시 다양한 논리적 기능들을 구현하기 위한 논리 게이트들을 갖는 이산 논리 회로들, 적절한 논리 게이트들을 갖는 주문형 집적 회로(ASIC)들, 필드 프로그래머블 게이트 어레이(FPGA)들, 또는 다른 구성요소들 등을 포함할 수 있지만, 이에 제한되지 않는다. 이러한 기술은 일반적으로 당업자에게 잘 알려져 있으며, 이에 따라 본원에서 상세히 설명되지 않는다.
도 4 및 도 5의 흐름도들은 클라우드 제공자 네트워크(203) 및 마이그레이션 서비스(242)의 부분들의 구현의 기능 및 동작을 도시한다. 소프트웨어로 구현되는 경우, 각 블록은 특정된 논리적 기능(들)을 구현하기 위한 프로그램 명령어들을 포함하는 모듈, 세그먼트, 또는 코드의 일부를 나타낼 수 있다. 프로그램 명령어들은 컴퓨터 시스템 또는 다른 시스템의 프로세서(603)와 같은 적합한 실행 시스템에 의해 인식가능한 수치 명령어들을 포함하는 기계 코드 또는 프로그래밍 언어로 작성된 사람이 판독가능한 명제들을 포함하는 소스 코드의 형태로 구현될 수 있다. 기계 코드는 소스 코드 등으로부터 변환될 수 있다. 하드웨어로 구현되는 경우, 각 블록은 특정된 논리적 기능(들)을 구현하기 위한 회로 또는 다수의 상호연결된 회로들을 나타낼 수 있다.
도 4 및 도 5의 흐름도들이 특정 실행 순서를 도시하지만, 실행 순서는 도시된 것과 상이할 수 있는 것으로 이해된다. 예를 들어, 두 개 이상의 블록들의 실행 순서는 도시된 순서에 대해 뒤섞일 수 있다. 또한, 도 4 및 도 5에서 연속적으로 도시된 두 개 이상의 블록들이 동시에 또는 부분적으로 동시에 실행될 수 있다. 또한, 일부 실시예들에서, 도 4 및 도 5에서 도시된 블록들 중 하나 이상은 스킵되거나 생략될 수 있다. 또한, 임의의 수의 카운터들, 상태 변수들, 경고 세마포어들, 또는 메시지들이 향상된 유용성, 회계, 성능 측정, 또는 문제 해결 지원 제공 등을 위해 본원에서 설명된 논리적 흐름에 추가될 수 있다. 이러한 모든 변형은 본 개시의 범위 내에 있는 것으로 이해된다.
또한, 소프트웨어 또는 코드를 포함하는 인스턴스 관리자(236), 컨테이너 오케스트레이션 서비스(239), 및 마이그레이션 서비스(242)를 포함하여, 본원에서 설명된 임의의 로직 또는 애플리케이션은 예를 들어, 컴퓨터 시스템 또는 다른 시스템의 프로세서(603)와 같은 명령어 실행 시스템에 의해 또는 이와 관련하여 사용하기 위한 임의의 비일시적인 컴퓨터 판독가능 매체로 구현될 수 있다. 이러한 의미에서, 로직은 예를 들어, 컴퓨터 판독가능 매체로부터 페칭되고 명령어 실행 시스템에 의해 실행될 수 있는 명령어들 및 선언들을 포함하는 명제들을 포함할 수 있다. 본 개시와 관련하여, "컴퓨터 판독가능 매체"는 명령어 실행 시스템에 의해 또는 명령어 실행 시스템과 관련하여 사용하기 위한 것으로 본원에서 설명된 로직 또는 애플리케이션을 포함, 저장 또는 유지할 수 있는 임의의 매체일 수 있다.
컴퓨터 판독가능 매체는 예를 들어, 자기, 광학, 또는 반도체 매체들과 같은 많은 물리적 매체들 중 임의의 매체를 포함할 수 있다. 적합한 컴퓨터 판독가능 매체의 보다 구체적인 예들은 자기 테이프, 자기 플로피 디스켓, 자기 하드 드라이브, 메모리 카드, 고체 상태 드라이브, USB 플래시 드라이브, 또는 광 디스크를 포함하지만, 이에 제한되지 않는다. 또한, 컴퓨터 판독가능 매체는 예를 들어, 정적 랜덤 액세스 메모리(SRAM) 및 동적 랜덤 액세스 메모리(DRAM)를 포함하는 랜덤 액세스 메모리(RAM), 또는 자기 랜덤 액세스 메모리(MRAM)일 수 있다. 또한, 컴퓨터 판독가능 매체는 판독 전용 메모리(ROM), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasible programmable read-only memory), 또는 다른 유형의 메모리 디바이스일 수 있다.
또한, 인스턴스 관리자(236), 컨테이너 오케스트레이션 서비스(239), 및 마이그레이션 서비스(242)를 포함하여, 본원에서 설명된 임의의 로직 또는 애플리케이션은 다양한 방식으로 구현되고 구성될 수 있다. 예를 들어, 설명된 하나 이상의 애플리케이션은 단일 애플리케이션의 모듈들 또는 구성요소들로서 구현될 수 있다. 또한, 본원에서 설명된 하나 이상의 애플리케이션은 공유 또는 개별 컴퓨팅 디바이스들 또는 이들의 조합에서 실행될 수 있다. 예를 들어, 본원에서 설명된 복수의 애플리케이션은 동일한 컴퓨팅 디바이스(221)에서, 또는 동일한 클라우드 제공자 네트워크(203) 내의 다수의 컴퓨팅 디바이스들(221)에서 실행될 수 있다.
"X, Y, 또는 Z 중 적어도 하나"라는 어구와 같은 이접적인 문구는 달리 특별한 언급이 없는 한, 항목, 용어 등이 X, Y, 또는 Z 중 어느 하나, 또는 이들의 임의의 조합(예를 들어, X,Y, 및/또는 Z)일 수 있다는 것을 제시하기 위해 일반적으로 사용되는 바와 같은 맥락과 달리 이해된다. 이에 따라, 이러한 이접적인 문구는 일반적으로 특정 실시예들이 X 중 적어도 하나, Y 중 적어도 하나의, 또는 Z 중 적어도 하나가 각각 존재할 것을 필요로 한다는 것을 의도하는 것이 아니고, 이를 의미하지 않아야 한다.
본 개시의 다양한 양태들의 예들은 다음의 조항들에서 제시된다. 다음의 조항들은 예시적이지만, 다음의 조항들은 단지 본 개시의 원리들에 대한 명확한 이해를 위해 제시된 구현예들의 가능한 예들이라는 것이 강조되어야 한다. 본 개시의 사상 및 원리들로부터 실질적으로 벗어나지 않고 다양한 실시예(들)에 대해 많은 변형 및 수정이 행해질 수 있다. 이러한 모든 수정 및 변형은 본 개시의 범위 내에 포함되고 다음의 청구범위에 의해 보호되는 것으로 의도된다.
조항 1 - 시스템으로서, 가상 머신 인스턴스를 실행하는 컴퓨팅 디바이스 ― 컴퓨팅 디바이스는 가상 머신 인스턴스가 실행되는 제1 프로세서를 포함함 ―; 및 하드웨어 상호연결 인터페이스를 통해 컴퓨팅 디바이스에 동작가능하게 결합된 오프로드 디바이스 ― 오프로드 디바이스는 제2 프로세서를 포함하며, 오프로드 디바이스는 제2 프로세서에 의해, 가상 머신 인스턴스 외부의 컨테이너 런타임 및 컨테이너 오케스트레이션 에이전트를 실행하도록 구성됨 ― 를 포함하고, 컴퓨팅 디바이스는 적어도: 제1 프로세서에 의해, 가상 머신 인스턴스 내의 운영 체제 커널, 컨테이너 런타임 인터페이스, 컨테이너 오케스트레이션 에이전트 인터페이스, 및 컨테이너를 실행하도록; 컨테이너 런타임이 컨테이너에 대한 운영 체제 레벨 가상화를 수행하도록 컨테이너 런타임 인터페이스와 컨테이너 런타임 사이의 데이터 통신을 가능하게 하도록; 그리고 컨테이너 오케스트레이션 에이전트가 컨테이너에 대한 오케스트레이션 기능을 수행하도록 컨테이너 오케스트레이션 에이전트 인터페이스와 컨테이너 오케스트레이션 에이전트 사이의 데이터 통신을 가능하게 하도록 구성된 것인, 시스템.
조항 2 - 조항 1에 있어서, 컨테이너 런타임은 상이한 가상 머신 인스턴스에서 제1 프로세서에 의해 실행되는 컨테이너 및 적어도 하나의 다른 컨테이너에 대한 운영 체제 레벨 가상화를 수행하는 것인, 시스템.
조항 3 - 조항 2에 있어서, 컨테이너 및 적어도 하나의 다른 컨테이너는 클라우드 제공자 네트워크에 의한 상이한 계정들과 연관되는 것인, 시스템.
조항 4 - 조항 1-3 중 어느 한 조항에 있어서, 컨테이너 오케스트레이션 에이전트는 상이한 가상 머신 인스턴스에서 제1 프로세서에 의해 실행되는 컨테이너 및 적어도 하나의 다른 컨테이너에 대한 오케스트레이션 기능을 수행하는 것인, 시스템.
조항 5 - 조항 1-4 중 어느 한 조항에 있어서, 컴퓨팅 디바이스는 또한 적어도: 제1 프로세서에 의해, 블록 데이터 저장 서비스로부터 로딩된 컨테이너 이미지로부터의 컨테이너를 론칭하도록; 그리고 제1 프로세서에 의해, 블록 데이터 저장 서비스를 통해 컨테이너 이미지의 업데이트된 버전을 저장하도록 ― 컨테이너 이미지의 업데이트된 버전은 컨테이너로부터의 상태 수정을 통합함 ― 구성된 것인, 시스템.
조항 6 - 조항 1-5 중 어느 한 조항에 있어서, 컴퓨팅 디바이스는 또한 적어도: 컨테이너 런타임과 병행하여, 제2 프로세서에 의해 컨테이너 런타임의 업데이트된 버전을 실행하도록; 컨테이너 오케스트레이션 에이전트와 병행하여, 제2 프로세서에 의해 컨테이너 에이전트의 업데이트된 버전을 실행하도록; 데이터 통신을 컨테이너 오케스트레이션 에이전트 인터페이스로부터 컨테이너의 오케스트레이션 에이전트 대신에 컨테이너 오케스트레이션 에이전트의 업데이트된 버전으로 리디렉션하도록; 그리고 데이터 통신을 컨테이너 런타임 인터페이스로부터 컨테이너 런타임 대신에 컨테이너 런타임의 업데이트된 버전으로 리디렉션하도록 구성된 것인, 시스템.
조항 7 - 조항 1-7 중 어느 한 조항에 있어서, 제1 프로세서는 제1 프로세서 아키텍처를 갖고, 제2 프로세서는 제1 프로세서 아키텍처와 상이한 제2 프로세서 아키텍처를 갖는 것인, 시스템.
조항 8 - 조항 1-8 중 어느 한 조항에 있어서, 제1 프로세서는 컴퓨팅 디바이스의 메인보드 상에 있고, 오프로드 디바이스는 컴퓨팅 디바이스의 버스에 결합되는 것인, 시스템.
조항 9 - 조항 1-9 중 어느 한 조항에 있어서, 컴퓨팅 디바이스는 또한 적어도, 가상 머신 인스턴스를 저장하는 물리적 메모리를 암호화하도록 구성되며, 암호화된 물리적 메모리는 제2 프로세서가 액세스 불가능한 것인, 시스템.
조항 10 - 컴퓨터 구현 방법으로서, 컴퓨팅 디바이스 상에서 실행되는 가상 머신 인스턴스에서 컨테이너를 실행하는 단계; 하드웨어 상호연결 인터페이스를 통해 컴퓨팅 디바이스에 동작가능하게 결합된 오프로드 디바이스에서 가상 머신 인스턴스와 별도로 컨테이너 제어 평면을 실행하는 단계; 및 오프로드 디바이스 상에서 실행되는 컨테이너 제어 평면을 사용하여 컨테이너를 관리하는 단계를 포함하는, 컴퓨터 구현 방법.
조항 11 - 조항 10에 있어서, 가상 머신 인스턴스와 데이터 통신하는 블록 데이터 저장 서비스에 의해 저장된 컨테이너 이미지로부터의 컨테이너를 로딩하는 단계를 더 포함하는, 컴퓨터 구현 방법.
조항 12 - 조항 10 또는 11에 있어서, 컨테이너 제어 평면은 적어도 컨테이너 런타임 및 컨테이너 오케스트레이션 에이전트를 포함하는 것인, 컴퓨터 구현 방법.
조항 13 - 조항 10-12 중 어느 한 조항에 있어서, 컨테이너 제어 평면의 제1 구성요소 버전과 병행하여, 오프로드 디바이스에서 가상 머신 인스턴스와 별도로 컨테이너 제어 평면의 제2 구성요소 버전을 실행하는 단계; 및 데이터 통신을 컨테이너 제어 평면에 대한 인터페이스로부터 컨테이너 제어 평면의 제1 구성요소 버전 대신에 컨테이너 제어 평면의 제2 구성요소 버전으로 리디렉션하는 단계를 더 포함하는, 컴퓨터 구현 방법.
조항 14 - 조항 10-13 중 어느 한 조항에 있어서, 컨테이너 제어 평면은 컨테이너 및 상이한 머신 인스턴스에서 실행되는 적어도 하나의 상이한 컨테이너에 대한 운영 체제 레벨 가상화를 수행하는 것인, 컴퓨터 구현 방법.
조항 15 - 조항 10-14 중 어느 한 조항에 있어서, 컴퓨팅 디바이스의 제1 프로세서에서 컨테이너 제어 평면에 대한 운영 체제 커널 및 인터페이스를 실행하는 단계를 더 포함하고; 오프로드 디바이스에서 가상 머신 인스턴스와 별도로 컨테이너 제어 평면을 실행하는 단계는 오프로드 디바이스 내의 제2 프로세서에서 컨테이너 제어 평면을 실행하는 단계를 더 포함하는 것인, 컴퓨터 구현 방법.
조항 16 - 컴퓨터 구현 방법으로서, 컴퓨팅 디바이스의 머신 인스턴스에서 컨테이너 제어 평면에 대한 컨테이너 및 인터페이스를 실행하는 단계; 컴퓨팅 디바이스의 오프로드 디바이스에서 컨테이너 제어 평면을 실행하는 단계; 및 컴퓨팅 디바이스의 물리적 메모리를 암호화하는 단계 ― 컨테이너 제어 평면은 암호화된 물리적 메모리로부터 제외됨 ― 를 포함하는, 컴퓨터 구현 방법.
조항 17 - 조항16에 있어서, 컨테이너 제어 평면에 대한 인터페이스와 컨테이너 제어 평면 사이의 데이터 통신을 가능하게 하는 단계를 더 포함하는, 컴퓨터 구현 방법.
조항 18 - 조항 16 또는 17에 있어서, 컨테이너 제어 평면에 의한 암호화된 물리적 메모리에 대한 액세스를 거부하는 단계를 더 포함하는, 컴퓨터 구현 방법.
조항 19 - 조항 16-18 중 어느 한 조항 있어서, 컨테이너가 액세스 불가능한 오프로드 디바이스의 메모리에 컨테이너 제어 평면을 저장하는 단계를 더 포함하는, 컴퓨터 구현 방법.
조항 20 - 조항 16-20 중 어느 한 조항에 있어서, 블록 데이터 저장 서비스로부터 로딩된 컨테이너 이미지로부터의 컨테이너를 론칭하는 단계; 및 블록 데이터 저장 서비스를 통해 컨테이너 이미지의 업데이트된 버전을 저장하는 단계 ― 컨테이너 이미지의 업데이트된 버전은 컨테이너로부터의 상태 수정을 통합함 ― 를 더 포함하는, 컴퓨터 구현 방법.

Claims (20)

  1. 시스템으로서,
    가상 머신 인스턴스를 실행하는 컴퓨팅 디바이스 ― 상기 컴퓨팅 디바이스는 상기 가상 머신 인스턴스가 실행되는 제1 프로세서를 포함함 ―; 및
    하드웨어 상호연결 인터페이스를 통해 상기 컴퓨팅 디바이스에 동작가능하게 결합된 오프로드 디바이스 ― 상기 오프로드 디바이스는 제2 프로세서를 포함하며, 상기 오프로드 디바이스는 상기 제2 프로세서에 의해, 상기 가상 머신 인스턴스 외부의 컨테이너 런타임 및 컨테이너 오케스트레이션 에이전트를 실행하도록 구성됨 ― 를 포함하고,
    상기 컴퓨팅 디바이스는 적어도:
    상기 제1 프로세서에 의해, 상기 가상 머신 인스턴스 내의 운영 체제 커널, 컨테이너 런타임 인터페이스, 컨테이너 오케스트레이션 에이전트 인터페이스, 및 컨테이너를 실행하도록;
    상기 컨테이너 런타임이 상기 컨테이너에 대한 운영 체제 레벨 가상화를 수행하도록 상기 컨테이너 런타임 인터페이스와 상기 컨테이너 런타임 사이의 데이터 통신을 가능하게 하도록; 그리고
    상기 컨테이너 오케스트레이션 에이전트가 상기 컨테이너에 대한 오케스트레이션 기능을 수행하도록 상기 컨테이너 오케스트레이션 에이전트 인터페이스와 상기 컨테이너 오케스트레이션 에이전트 사이의 데이터 통신을 가능하게 하도록 구성된 것인, 시스템.
  2. 제1항에 있어서, 상기 컨테이너 런타임은 상기 컨테이너 및 상이한 가상 머신 인스턴스에서 상기 제1 프로세서에 의해 실행되는 적어도 하나의 다른 컨테이너에 대한 상기 운영 체제 레벨 가상화를 수행하는 것인, 시스템.
  3. 제2항에 있어서, 상기 컨테이너 및 상기 적어도 하나의 다른 컨테이너는 클라우드 제공자 네트워크에 의한 상이한 계정들과 연관되는 것인, 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 컨테이너 오케스트레이션 에이전트는 상기 컨테이너 및 상이한 가상 머신 인스턴스에서 상기 제1 프로세서에의해 실행되는 적어도 하나의 다른 컨테이너에 대한 상기 오케스트레이션 기능을 수행하는 것인, 시스템.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 컴퓨팅 디바이스는 또한 적어도:
    상기 제1 프로세서에 의해, 블록 데이터 저장 서비스로부터 로딩된 컨테이너 이미지로부터의 상기 컨테이너를 론칭하도록; 그리고
    상기 제1 프로세서에 의해, 상기 블록 데이터 저장 서비스를 통해 상기 컨테이너 이미지의 업데이트된 버전을 저장하도록 ― 상기 컨테이너 이미지의 업데이트된 버전은 상기 컨테이너로부터의 상태 수정을 통합함 ― 구성된 것인, 시스템.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 컴퓨팅 디바이스는 또한 적어도:
    상기 컨테이너 런타임과 병행하여, 상기 제2 프로세서에 의해 상기 컨테이너 런타임의 업데이트된 버전을 실행하도록;
    상기 컨테이너 오케스트레이션 에이전트와 병행하여, 상기 제2 프로세서에 의해 상기 컨테이너 에이전트의 업데이트된 버전을 실행하도록;
    상기 데이터 통신을 상기 컨테이너 오케스트레이션 에이전트 인터페이스로부터 상기 컨테이너 오케스트레이션 에이전트 대신에 상기 컨테이너 오케스트레이션 에이전트의 업데이트된 버전으로 리디렉션하도록; 그리고
    상기 데이터 통신을 상기 컨테이너 런타임 인터페이스로부터 상기 컨테이너 런타임 대신에 상기 컨테이너 런타임의 업데이트된 버전으로 리디렉션하도록 구성된 것인, 시스템.
  7. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 제1 프로세서는 제1 프로세서 아키텍처를 갖고, 상기 제2 프로세서는 상기 제1 프로세서 아키텍처와 상이한 제2 프로세서 아키텍처를 갖는 것인, 시스템.
  8. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 제1 프로세서는 상기 컴퓨팅 디바이스의 메인보드 상에 있고, 상기 오프로드 디바이스는 상기 컴퓨팅 디바이스의 버스에 결합되는 것인, 시스템.
  9. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 컴퓨팅 디바이스는 또한 적어도, 상기 가상 머신 인스턴스를 저장하는 물리적 메모리를 암호화하도록 구성되며, 상기 암호화된 물리적 메모리는 상기 제2 프로세서가 액세스 불가능한 것인, 시스템.
  10. 컴퓨터 구현 방법으로서,
    컴퓨팅 디바이스 상에서 실행되는 가상 머신 인스턴스에서 컨테이너를 실행하는 단계;
    하드웨어 상호연결 인터페이스를 통해 상기 컴퓨팅 디바이스에 동작가능하게 결합된 오프로드 디바이스에서 상기 가상 머신 인스턴스와 별도로 컨테이너 제어 평면을 실행하는 단계; 및
    상기 오프로드 디바이스 상에서 실행되는 상기 컨테이너 제어 평면을 사용하여 상기 컨테이너를 관리하는 단계를 포함하는, 컴퓨터 구현 방법.
  11. 제10항에 있어서, 상기 가상 머신 인스턴스와 데이터 통신하는 블록 데이터 저장 서비스에 의해 저장된 컨테이너 이미지로부터의 상기 컨테이너를 로딩하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  12. 제10항 또는 제11항에 있어서, 상기 컨테이너 제어 평면은 적어도 컨테이너 런타임 및 컨테이너 오케스트레이션 에이전트를 포함하는 것인, 컴퓨터 구현 방법.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서,
    상기 컨테이너 제어 평면의 제1 구성요소 버전과 병행하여, 상기 오프로드 디바이스에서 상기 가상 머신 인스턴스와 별도로 상기 컨테이너 제어 평면의 제2 구성요소 버전을 실행하는 단계; 및
    데이터 통신을 상기 컨테이너 제어 평면에 대한 인터페이스로부터 상기 컨테이너 제어 평면의 제1 구성요소 버전 대신에 상기 컨테이너 제어 평면의 제2 구성요소 버전으로 리디렉션하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 컨테이너 제어 평면은 상기 컨테이너 및 상이한 머신 인스턴스에서 실행되는 적어도 하나의 상이한 컨테이너에 대한 운영 체제 레벨 가상화를 수행하는 것인, 컴퓨터 구현 방법.
  15. 제10항 내지 제14항 중 어느 한 항에 있어서, 상기 컴퓨팅 디바이스의 제1 프로세서에서 상기 컨테이너 제어 평면에 대한 운영 체제 커널 및 인터페이스를 실행하는 단계를 더 포함하고;
    상기 오프로드 디바이스에서 상기 가상 머신 인스턴스와 별도로 상기 컨테이너 제어 평면을 실행하는 단계는 상기 오프로드 디바이스 내의 제2 프로세서에서 상기 컨테이너 제어 평면을 실행하는 단계를 더 포함하는 것인, 컴퓨터 구현 방법.
  16. 컴퓨터 구현 방법으로서,
    컴퓨팅 디바이스의 머신 인스턴스에서 컨테이너 제어 평면에 대한 컨테이너 및 인터페이스를 실행하는 단계;
    상기 컴퓨팅 디바이스의 오프로드 디바이스에서 상기 컨테이너 제어 평면을 실행하는 단계; 및
    상기 컴퓨팅 디바이스의 물리적 메모리를 암호화하는 단계 ― 상기 컨테이너 제어 평면은 상기 암호화된 물리적 메모리로부터 제외됨 ― 를 포함하는, 컴퓨터 구현 방법.
  17. 제16항에 있어서, 상기 컨테이너 제어 평면에 대한 상기 인터페이스와 상기 컨테이너 제어 평면 사이의 데이터 통신을 가능하게 하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  18. 제16항 또는 제17항에 있어서, 상기 컨테이너 제어 평면에 의한 상기 암호화된 물리적 메모리에 대한 액세스를 거부하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  19. 제16항 내지 제18항 중 어느 한 항에 있어서, 상기 컨테이너가 액세스 불가능한 상기 오프로드 디바이스의 메모리에 상기 컨테이너 제어 평면을 저장하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  20. 제16항 내지 제20항 중 어느 한 항에 있어서,
    블록 데이터 저장 서비스로부터 로딩된 컨테이너 이미지로부터의 컨테이너를 론칭하는 단계; 및
    상기 블록 데이터 저장 서비스를 통해 상기 컨테이너 이미지의 업데이트된 버전을 저장하는 단계 ― 상기 컨테이너 이미지의 업데이트된 버전은 상기 컨테이너로부터의 상태 수정을 통합함 ― 를 더 포함하는, 컴퓨터 구현 방법.
KR1020237014834A 2021-09-30 2022-09-16 오프로드 컨테이너 실행 환경 KR20230073338A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/491,388 US20230093925A1 (en) 2021-09-30 2021-09-30 Offloaded container execution environment
US17/491,388 2021-09-30
PCT/US2022/076576 WO2023056183A1 (en) 2021-09-30 2022-09-16 Offloaded container execution environment

Publications (1)

Publication Number Publication Date
KR20230073338A true KR20230073338A (ko) 2023-05-25

Family

ID=83903278

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237014834A KR20230073338A (ko) 2021-09-30 2022-09-16 오프로드 컨테이너 실행 환경

Country Status (5)

Country Link
US (1) US20230093925A1 (ko)
EP (1) EP4217860A1 (ko)
KR (1) KR20230073338A (ko)
CN (1) CN116508001A (ko)
WO (1) WO2023056183A1 (ko)

Also Published As

Publication number Publication date
EP4217860A1 (en) 2023-08-02
US20230093925A1 (en) 2023-03-30
WO2023056183A1 (en) 2023-04-06
CN116508001A (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
US10074206B1 (en) Network-optimized graphics library for virtualized graphics processing
US10606646B1 (en) Systems and methods for creating a data volume from within a software container and initializing the data volume with data
US10102605B1 (en) Graphics library virtualization for virtualized graphics processing
US10877769B2 (en) Multithreaded rendering for virtualized graphics processing
US11683311B2 (en) Systems and methods for running applications on a multi-tenant container platform
US10956195B2 (en) Virtual machine migrations across clouds assisted with content based read caching
KR102174221B1 (ko) 제공자 네트워크에서의 그래픽 처리 가상화
US20200396306A1 (en) Apparatuses and methods for a distributed message service in a virtualized computing system
AU2020351839B2 (en) Increasing performance of cross frame live updates
US11119810B2 (en) Off-the-shelf software component reuse in a cloud computing environment
US10656975B2 (en) Hybrid cloud with dynamic bridging between systems of record and systems of engagement
US11792289B2 (en) Live socket redirection
US20230093925A1 (en) Offloaded container execution environment
US20210326150A1 (en) Integrated network boot operating system installation leveraging hyperconverged storage
CN112236988B (zh) 云计算中用于控制多租户缓存服务的管理操作和共享内存空间的系统和方法
US11960917B2 (en) Live migration and redundancy for virtualized storage
US11843517B1 (en) Satellite virtual private cloud network environments
US11892418B1 (en) Container image inspection and optimization
US11907173B1 (en) Composable network-storage-based file systems
Cristofaro et al. Virtual Distro Dispatcher: a light-weight Desktop-as-a-Service solution
US20230092747A1 (en) Using containers to clean runtime resouces when unloading a shared library
US11321112B2 (en) Discovery and recreation of communication endpoints in virtual machine migration
US20230015103A1 (en) Live updating a virtual machine virtualizing physical resources
US20210365411A1 (en) Asynchronous host file system based data replication
Talasila et al. ABIQUO: A PROFICIENT ENTERPRISE CLOUD MANAGEMENT PLATFORM INTENDED FOR HYPERVISOR INDEPENDENCY, INTEGRITY AND SCALABILITY