System for managing and scheduling containers

US10838756B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10838756-B2
Application numberUS-201816004050-A
CountryUS
Kind codeB2
Filing dateJun 8, 2018
Priority dateNov 11, 2014
Publication dateNov 17, 2020
Grant dateNov 17, 2020

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A task definition is received. The task definition indicates at least a location from which one or more software image can be obtained and information usable to determine an amount of resources to allocate to one or more software containers for the one or more software image. A set of virtual machine instances in which to launch the one or more software containers is determined, the one or more software image is obtained from the location included in the task definition and is launched as the one or more of software containers within the set of virtual machine instances.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer-implemented method, comprising: receiving, from a customer of a computing resource service provider, one or more application programming interface (API) calls to create a cluster of virtual machines running a process; and in response to the one or more API calls: instantiating a plurality of virtual machines; associating the plurality of virtual machines with a cluster identifier; obtaining a task definition that indicates a location of a software image associated with the process; and for each virtual machine of the plurality of virtual machines: obtaining the software image from the location; allocating the amount of the computing resource of the virtual machine instance to a software container; launching the software container within the virtual machine, the software container running in isolation from other software containers running on the virtual machine; and executing at least a portion of the process within the software container based at least in part on the software image. 2. The computer-implemented method of claim 1 , wherein the cluster is associated with a plurality of virtual machines that includes the virtual machine. 3. The computer-implemented method of claim 1 , wherein instantiating the plurality of virtual machines further includes instantiating the plurality of virtual machines within a virtual private cloud. 4. The computer-implemented method of claim 1 , wherein the software container is linked to another software container in a manner specified by a task definition. 5. The computer-implemented method of claim 1 , wherein the task definition includes information usable in determining an amount of a computing resource of the virtual machine to allocate to the software container. 6. The computer-implemented method of claim 5 , wherein the software image is data that represents a state of the software container at a time of creation of the software image. 7. The computer-implemented method of claim 1 , wherein the cluster identifier distinguishes the cluster from among a plurality of clusters of virtual machines hosted by the computing resource service provider. 8. A system, comprising: one or more processors; and memory including executable instructions that, if executed by the one or more processors, cause the system to: obtain a task definition, the task definition indicating a name of a task to perform, a location of a container image for the task, and a port for the task; receive a request to run, within a cluster of virtual machines, one or more containers to perform the task, the request further indicating an amount of a resource to be allocated to the task, the one or more containers being isolated from each other by separate namespaces; select, via a scheduler, an available virtual machine from the cluster in which to run the one or more containers; and run, within the available virtual machine and in accordance with the task definition, the one or more containers based at least in part on the container image at least by causing the system to: obtain, based at least in part on the task definition, the container image from the location; allocate the amount of the resource to the one or more containers; assign the port to the one or more containers; and run the one or more containers to perform the task. 9. The system of claim 8 , wherein the amount of the resource is a portion of a quantity of the resource allocated to the available virtual machine. 10. The system of claim 8 , wherein: the task definition further includes affinity information than indicates an affinity or anti-affinity for certain types of virtual machines; and the executable instructions that cause the system to select the available virtual machine further includes instructions that cause the system to select the available virtual machine based at least in part on the affinity information. 11. The system of claim 8 , wherein a load balancer balances traffic across virtual machine of the cluster. 12. The system of claim 8 , wherein a Docker container engine manages the one or more containers running in the available virtual machine. 13. The system of claim 8 , wherein the task definition further specifies that: the one or more containers are assigned to a group; and members of the group are coordinated to run on a same virtual machine. 14. The system of claim 8 , wherein the executable instructions further include instructions that cause the system to: obtain metrics associated with the one or more containers running within the available virtual machine; and provide the metrics to a resource monitoring service. 15. The system of claim 14 , wherein the metrics include at least one of: processor usage by the one or more containers, processor time used by the one or more containers, amount of memory used by the one or more containers, or amount of storage space used by the one or more containers. 16. A non-transitory computer-readable storage medium having stored thereon executable instructions that, if executed by one or more processors of a computer system, cause the computer system to at least: as a result of a task being scheduled to be performed in a virtual machine of a cluster of virtual machines according to a task definition, receive a communication from a scheduler to perform the task; in response to receipt of the communication, instantiate a container in the virtual machine to perform the task; monitor the container to obtain health information about the container; and as a result of a determination, made based at least in part on the health information, that the container has experienced an error: instantiate a new container in the virtual machine; and replace the container that experienced the error; and wherein a quantity of virtual machines of the cluster is dynamically increased or decreased, depending at least in part on resource demand by containers in the virtual machines of the cluster, by an auto-scaling service. 17. The non-transitory computer-readable storage medium of claim 16 , wherein the virtual machine of the cluster is located within a virtual private cloud. 18. The non-transitory computer-readable storage medium of claim 16 , wherein the health information includes at least one of: a heartbeat of the container, a lifespan of the container, a status of the container, or an occurrence of an error with the container. 19. The non-transitory computer-readable storage medium of claim 16 , wherein the executable instructions are executed in the virtual machine to operate an agent that starts and runs containers scheduled on the virtual machine.

Assignees

Inventors

Classifications

  • Hypervisors; Virtual machine monitors · CPC title

  • G06F9/5055Primary

    considering software capabilities, i.e. software resources associated or available to the machine · CPC title

  • Allocation of resources, e.g. of the central processing unit [CPU] · CPC title

  • Hypervisor-specific management and integration aspects · CPC title

  • Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10838756B2 cover?
A task definition is received. The task definition indicates at least a location from which one or more software image can be obtained and information usable to determine an amount of resources to allocate to one or more software containers for the one or more software image. A set of virtual machine instances in which to launch the one or more software containers is determined, the one or more…
Who is the assignee on this patent?
Amazon Tech Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/45533. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Nov 17 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).