IP Library › Granted Patent US 11,281,492
Granted Patent B1
US 11,281,492 · App. 16/428,717 · Granted Mar 22, 2022

Moving application containers across compute nodes

Inventors: Leonid Rebeja (Toronto, CA); Daniel Echegaray (Mississauga, CA)
Assignee: Juniper Networks, Inc.
G06F9/4856G06F9/455
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,281,492
App. No.
16/428,717
Granted
Mar 22, 2022
Kind
B1
Abstract

In general, this disclosure describes techniques for seamlessly migrating containers among or within computing infrastructures so as to preserve the integrity of data, the configurations, and the availability of the attached storage volumes for the containers. For example, a controller having a distributed software architecture may orchestrate, according to container migration workflow, components of the container migration application to accomplish a set of container migration tasks for a container to be moved. The container migration tasks include copying the live container to a target node, recreating the network configuration for the container on the target node, and reattaching any storage volume to the container on the target node. The container is, in this way, seamlessly migrated from a node on which it is currently executing to a different target node, and the controller may issue a command to start executing the container on the target node.

Claims (80)

1. A method comprising:

receiving, by a controller comprising an application and a plurality of microservices, a migration request to migrate a currently executing first container from a node to a target node, wherein the first container has a storage volume attached to and for use by the first container to read and write application data, wherein the storage volume is located on a remote storage node; and

in response to receiving the migration request, orchestrating, by the application of the controller, the microservices to perform container migration tasks comprising:

copying the first container from the node to the target node to create a second container that is a copy of the first container;

attaching the storage volume to the second container on the target node for use by the second container to read and write application data;

configuring the target node with a network configuration for the second container; and

starting the second container to execute by the target node,

wherein the microservices include one or more compute services executing on one or more nodes and one or more network services executing on one or more nodes,

wherein each of the compute services exposes a first application programming interface,

wherein each of the network services exposes a second application programming interface, and

wherein, to orchestrate the microservices, for each of the container migration tasks, the application stores one or more commands to a command database to initiate the container migration task to be performed by one of the microservices, wherein each of the one or more commands invokes a method of the first application programming interface or the second application programming interface.

2. The method of claim 1 ,

wherein the first container comprises a persistent container, and

wherein the second container comprises a persistent container.

3. The method of claim 1 , wherein the container migration tasks further comprise:

storing, to a container registry, a network configuration for the first container;

and

deleting the network configuration for the first container from the node,

wherein the network configuration for the second container is the network configuration for the first container.

4. The method of claim 1 ,

wherein the network configuration comprises a Media Access Control (MAC) address for the first container, and

wherein the second container has a MAC address that is the MAC address for the first container.

5. The method of claim 4 , wherein the second container obtains an Internet Protocol (IP) address from a Dynamic Host Configuration Protocol (DHCP) server using the MAC address for the first container, wherein the IP address returned by the DHCP server is an IP address formerly assigned to the first container.

6. The method of claim 1 , wherein copying the first container comprises:

capturing a snapshot of the first container while the first container is executing on the node; and

restoring the snapshot of the first container on the target node to create the second container.

7. The method of claim 6 ,

wherein the snapshot includes running state for the first container,

wherein restoring the snapshot of the first container on the target node includes restoring the running state for the first container within the second container on the target node.

8. The method of claim 1 ,

wherein the container migration tasks further comprise:

storing, to a container registry, storage volume data for the first container; and

detaching the storage volume from the first container,

wherein attaching the storage volume to the second container comprises:

after copying the first container from the node to the target node, obtaining the storage volume data from the container registry; and

attaching, using the storage volume data from the container registry, the storage volume to the second container on the target node.

9. The method of claim 1 , further comprising:

outputting, by the controller, a user interface for presentation by a client device,

wherein the user interface includes a list of one or more executing containers including the first container, and

wherein the user interface presents a selectable option for a move operation for the first container that, when selected by a user, causes the client device to issue the migration request.

10. The method of claim 9 , wherein the user interface presents a list of one or more nodes, including the target node, as selectable target node options for the move operation.

11. The method of claim 1 , further comprising:

after initiating copying the first container from the node to the target node, outputting, by the controller, a status of the container migration tasks, the status indicating the controller is in the process of copying the first container from the node to the target node.

12. The method of claim 1 , further comprising:

after initiating each of the container migration tasks, outputting, by the controller, a status of the container migration tasks, the status indicating that the controller is in the process of copying the first container from the node to the target node.

13. The method of claim 1 , wherein performing each container migration task of the container migration tasks comprises:

invoking an application programming interface of a cloud service provider to cause a computing system of the cloud service provider to perform the container migration task.

14. A method comprising:

receiving, by a controller, a migration request to migrate a currently executing first container from a node to a target node, wherein the first container has a storage volume attached to and for use by the first container to read and write application data, wherein the storage volume is located on a remote storage node; and

in response to receiving the migration request, performing, by the controller, container migration tasks comprising:

copying the first container from the node to the target node to create a second container that is a copy of the first container;

attaching the storage volume to the second container on the target node for use by the second container to read and write application data; and

starting the second container to execute by the target node,

wherein the controller comprises a plurality of microservices, the plurality of microservices including:

one or more compute services executing on one or more nodes; and

one or more network services executing on one or more nodes,

wherein the controller comprises an application that, in response to the migration request and according to a container migration workflow, orchestrates the microservices to perform the container migration tasks,

wherein each of the compute services exposes a first application programming interface,

wherein each of the network services exposes a second application programming interface, and

wherein, to orchestrate the microservices, for each of the container migration tasks, the application stores one or more commands to a command database to initiate the container migration task to be performed by one of the microservices, wherein each of the one or more commands invokes a method of the first application programming interface or the second application programming interface.

15. A computing system, comprising:

an application;

a plurality of microservices, wherein each of the plurality of microservices includes one or more compute services that each expose a first application programming interface and one or more network services that each expose a second application programming interface;

one or more processors; and

at least one computer-readable storage medium storing instructions that, when executed, cause the one or more processors to:

receive a migration request to migrate a currently executing first container from a node to a target node, wherein the first container has a storage volume attached to and for use by the first container to read and write application data, wherein the storage volume is located on a remote storage node; and

in response to receiving the migration request, orchestrate, by the application, the microservices to perform container migration tasks that cause the one or more processors to:

copy the first container from the node to the target node to create a second container that is a copy of the first container;

attaching the storage volume to the second container on the target node for use by the second container to read and write application data;

configure the target node with a network configuration for the second container; and

starting the second container to execute by the target node,

wherein, to orchestrate the microservices, for each of the container migration tasks, the application stores one or more commands to a command database to initiate the container migration task to be performed by one of the microservices, wherein each of the one or more commands invokes a method of the first application programming interface or the second application programming interface.

16. The computing system of claim 15 ,

wherein the first container comprises a persistent container, and

wherein the second container comprises a persistent container.

17. The computing system of claim 15 , further comprising:

a container registry, wherein the instructions cause the one or more processors to:

store, to the container registry, a network configuration for the first container;

configure the target node with the network configuration for the first container; and

delete the network configuration for the first container from the node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2019
From: REBEJA, LEONID; ECHEGARAY, DANIEL
To: JUNIPER NETWORKS, INC.
Reel/Frame 049339/0311 →
Cited By (25)
US 12,210,329 US 12,223,347 US 12,228,897 US 12,235,728 US 12,236,121 US 12,242,245 US 12,287,990 US 12,314,037 US 12,321,154 US 12,417,120 US 12,449,789 US 12,476,973 US 12,524,389 US 12,535,800 US 12,554,236 US 12,572,134 US 12,585,237 US 12,619,204 US 12,619,209 US 12,638,989 US 12,676,835 US 12,681,708 US 12,704,989 US 12,717,311 US 12,744,747