IP Library Granted Patent US 11,226,847
Granted Patent B2
US 11,226,847 · App. 16/555,886 · Granted Jan 18, 2022

Implementing an application manifest in a node-specific manner using an intent-based orchestrator

Inventors: Ravi Kumar Alluboyina (Santa Clara, CA); Tushar Doshi (Santa Clara, CA); Sree Nandan Atur (Newark, CA)
Assignee: ROBIN SYSTEMS, INC.
G06F9/5083G06F9/4881
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,226,847
App. No.
16/555,886
Granted
Jan 18, 2022
Kind
B2
Abstract

An orchestrator generated pod specifications for role instances of a bundled application and submits these pod specifications to a KUBERNETES master. The pod specification specifies a node on which to implement a container executing the role instance, the node being selected according to an application manifest that may include affinity and anti-affinity constraints. The pod specification may be implemented by a KUBELET executing on the node, which may invoke interfaces to the orchestrator in order to obtain a network address for the container. A storage volume to be used by the container may have been mounted to the node previously by the orchestrator and be ready for use by the container. Upon failure of the node, the orchestrator generates a new pod specification according to the application manifest that instructs the master to create a new container having a same identity and state as the former container.

Claims (79)

1. A method comprising:

providing a first orchestrator executing in a network computing environment including a plurality of computing nodes, the first orchestrator programmed to deploy a plurality of role instances of a bundled application on the plurality of computing nodes according to an application manifest;

providing a second orchestrator executing in the network computing environment, the second orchestrator programmed with a capacity to select among nodes of the plurality of computing nodes and instantiate containers and maintain availability of containers on the selected nodes; and

for each role instance of the plurality of role instances:

selecting, by the first orchestrator, for the each role instance, a host node for the each role instance;

invoking, by the first orchestrator, the second orchestrator to instantiate a container on the host node executing the each role instance such that the capacity of the second orchestrator to select among the plurality of computing nodes is suppressed;

instantiating, by the second orchestrator, the each role instance and a container executing the each role instance on the host node;

generating, by the first orchestrator, a network plan associating network identifiers with each role instance of the plurality of role instances; and

for each role instance of the plurality of role instances:

invoking, by the second orchestrator, an interface to the first orchestrator;

providing, by the first orchestrator to the second orchestrator, a selected network identifier of the network identifiers associated with the each role instance in the network plan; and

assigning, by the second orchestrator, the selected network identifier to the each role instance.

2. A method comprising:

providing a first orchestrator executing in a network computing environment including a plurality of computing nodes, the first orchestrator programmed to deploy a plurality of role instances of a bundled application on the plurality of computing nodes according to an application manifest;

providing a second orchestrator executing in the network computing environment, the second orchestrator programmed with a capacity to select among nodes of the plurality of computing nodes and instantiate containers and maintain availability of containers on the selected nodes; and

for each role instance of the plurality of role instances:

selecting, by the first orchestrator, for the each role instance, a host node for the each role instance;

invoking, by the first orchestrator, the second orchestrator to instantiate a container on the host node executing the each role instance such that the capacity of the second orchestrator to select among the plurality of computing nodes is suppressed;

instantiating, by the second orchestrator, the each role instance and a container executing the each role instance on the host node; and

for each role instance of the plurality of role instances:

invoking, by the first orchestrator, mounting of a storage volume to the host node for the each role instance prior to invoking the second orchestrator to instantiate the container on the host node executing the each role instance; and

configuring, by the second orchestrator, the container on the host node to access the storage volume.

3. The method of claim 1 , further comprising:

generating, by the first orchestrator, a compute plan specifying host nodes for all role instances of the plurality of role instances.

4. The method of claim 3 , wherein generating the compute plan comprises assigning host nodes for all role instances of the plurality of role instances in accordance with affinity and anti-affinity constraints in the application manifest.

5. The method of claim 4 , further comprising:

detecting, by the first orchestrator, failure of a first node of the plurality of computing nodes hosting a first container executing a first role instance of the plurality of role instances; and

in response to detecting the failure of the first node:

identifying, by the first orchestrator, a second node of the plurality of computing nodes satisfying the affinity and anti-affinity constraints; and

invoking, by the first orchestrator, the second orchestrator to instantiate the first role instance in a second container on the second node.

6. The method of claim 5 , further comprising: instructing, by the first orchestrator, the second orchestrator to assign a same identifier to the second container as was assigned to the first container.

7. The method of claim 5 , wherein detecting failure of the first node comprises:

detecting, by the first orchestrator, that an attempt by the second orchestrator to re-instantiate the first role instance on the first node was unsuccessful.

8. The method of claim 5 , further comprising:

writing, by the first container, changes to a state of the first container to a persistent remote storage volume;

invoking, by the second container, an interface to the first orchestrator; and

instructing the second container, by the first orchestrator, through the interface, to configure its state according to the persistent remote storage volume.

9. The method of claim 1 , wherein the second orchestrator comprises a KUBERNETES master and KUBELETs executing on the plurality of computing nodes.

10. A system comprising:

a network computing environment including a plurality of computing nodes;

a first orchestrator executing in the network computing environment, the first orchestrator programmed to deploy a plurality of role instances of a bundled application on the plurality of computing nodes according to an application manifest; and

a second orchestrator executing in the network computing environment, the second orchestrator programmed with a capacity to select among nodes of the plurality of computing nodes and instantiate containers and maintain availability of containers on the selected nodes;

wherein the first orchestrator and the second orchestrator are programmed to, for each role instance of the plurality of role instances:

select, by the first orchestrator, for the each role instance, a host node for the each role instance;

invoke, by the first orchestrator, the second orchestrator to instantiate a container on the host node executing the each role instance such that the capacity of the second orchestrator to select among the plurality of computing nodes is suppressed; and

instantiate, by the second orchestrator, the each role instance and a container executing the each role instance on the host node; and

wherein the first orchestrator and the second orchestrator are programmed to:

for each role instance of the plurality of role instances:

invoke, by the first orchestrator, mounting of a storage volume to the host node for the each role instance prior to invoking the second orchestrator to instantiate the container on the host node executing the each role instance; and

configure, by the second orchestrator, the container on the host node to access the storage volume.

11. A system comprising:

a network computing environment including a plurality of computing nodes;

a first orchestrator executing in the network computing environment, the first orchestrator programmed to deploy a plurality of role instances of a bundled application on the plurality of computing nodes according to an application manifest; and

a second orchestrator executing in the network computing environment, the second orchestrator programmed to select nodes of the plurality of computing nodes and instantiate containers and maintain availability of containers on the selected nodes;

wherein the first orchestrator and the second orchestrator are programmed to, for each role instance of the plurality of role instances:

select, by the first orchestrator, for the each role instance, a host node for the each role instance;

invoke, by the first orchestrator, the second orchestrator to instantiate a container on the host node executing the each role instance such that the capacity of the second orchestrator to select among the plurality of computing nodes is suppressed; and

instantiate, by the second orchestrator, the each role instance and a container executing the each role instance on the host node; and

wherein the first orchestrator and the second orchestrator are programmed to:

generate, by the first orchestrator, a network plan associating network identifiers with each role instance of the plurality of role instances; and

for each role instance of the plurality of role instances:

invoke, by the second orchestrator, an interface to the first orchestrator;

provide, by the first orchestrator to the second orchestrator, a selected network identifier of the network identifiers associated with the each role instance in the network plan; and

assign, by the second orchestrator, the selected network identifier to the each role instance.

12. The system of claim 10 , wherein the first orchestrator is further programmed to generate a compute plan specifying host nodes for all role instances of the plurality of role instances.

13. The system of claim 12 , herein the first orchestrator is further programmed to generate the compute plan by assigning host nodes for all role instances of the plurality of role instances in accordance with affinity and anti-affinity constraints in the application manifest.

14. The system of claim 13 , wherein the first orchestrator and the second orchestrator are programmed to:

detect, by the first orchestrator, failure of a first node of the plurality of computing nodes hosting a first container executing a first role instance of the plurality of role instances; and

in response to detecting the failure of the first node:

identify, by the first orchestrator, a second node of the plurality of computing nodes satisfying the affinity and anti-affinity constraints; and

invoke, by the first orchestrator, the second orchestrator to instantiate the first role instance in a second container on the second node.

15. The system of claim 14 , wherein the first orchestrator is further programmed to instruct the second orchestrator to assign a same identifier to the second container as was assigned to the first container.

16. The system of claim 14 , wherein the first orchestrator is programmed to detect failure of the first node by:

detecting that an attempt by the second orchestrator to re-instantiate the first role instance on the first node was unsuccessful.

17. The system of claim 14 , wherein:

the first container is programmed to write changes to a state of the first container to a persistent remote storage volume;

the second container is programmed to invoke an interface to the first orchestrator; and

the first orchestrator is programmed to instruct the second container, through the interface, to configure its state according to the persistent remote storage volume.

18. The system of claim 10 , wherein the second orchestrator comprises a KUBERNETES master and KUBELETs executing on the plurality of computing nodes.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2024
From: ROBIN SYSTEMS, INC.
To: RAKUTEN SYMPHONY, INC.
Reel/Frame 068193/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2019
From: ALLUBOYINA, RAVI KUMAR; DOSHI, TUSHAR; ATUR, SREE NANDAN
To: ROBIN SYSTEMS, INC.
Reel/Frame 050216/0614 →
Continuity (1)
Related Publication 20210064442A1 · Mar 4, 2021
Cited By (3)
US 12,579,021 US 12,579,022 US 12,585,534