IP Library Granted Patent US 11,775,204
Granted Patent B1
US 11,775,204 · App. 17/718,395 · Granted Oct 3, 2023

Distributed control plane for facilitating communication between a container orchestration platform and a distributed storage architecture

Inventors: Praveen Kumar Hasti (Acton, MA); Christopher Alan Busick (Littleton, MA)
Assignee: NetApp, Inc.
G06F3/0655G06F3/0604G06F3/067
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,775,204
App. No.
17/718,395
Granted
Oct 3, 2023
Kind
B1
Abstract

Techniques are provided for implementing a distributed control plane to facilitate communication between a container orchestration platform and a distributed storage architecture. The distributed storage architecture hosts worker nodes that manage distributed storage that can be made accessible to applications within the container orchestration platform through the distributed control plane. The distributed control plane includes control plane controllers that are each paired with a single worker node of the distributed storage architecture. Thus, the distributed control plane is configured to selectively route commands to control plane controllers that are paired with worker nodes that are current owners of objects targeted by the commands. In this way, the control plane controllers can facilitate communication and performance of commands between the applications of the container orchestration platform and the worker nodes of the distributed storage architecture.

Claims (52)

1. A system, comprising:

a distributed storage architecture including a plurality of worker nodes managing distributed storage comprised of storage devices hosted by the plurality of worker nodes;

a container orchestration platform hosting applications running through containers; and

a distributed control plane hosted within the container orchestration platform, wherein the distributed control plane comprises a plurality of pods hosting control plane controllers paired with the worker nodes, and wherein the distributed control plane selects and routes a command to a control plane controller based upon the command targeting an object owned by a worker node paired with the control plane controller, and wherein the control plane controller is configured to:

receive the command, generated by an application running as a container within the container orchestration platform, for performing a control plane operation associated with an object, wherein the command is formatted according to a first model supported by the container orchestration platform;

translate the command from being formatted according to the first model into a reformatted command formatted according to a second model supported by the distributed storage architecture; and

transmit the reformatted command through a call to an API endpoint of the worker node for implementing the control plane operation through the distributed storage architecture.

2. The system of claim 1 , wherein the distributed control plane is further configured to:

in response to receiving a second command targeting the object, select and route the second command to a second control plane controller paired with a second worker node based upon a determination that the second worker node is a current owner of the object, wherein ownership information maintained by the distributed storage architecture is queried using an identifier of the object to determine that the identifier of the object is paired with an identifier of the second worker node.

3. The system of claim 1 , the distributed control plane is further configured to:

selectively route commands to control plane controllers that are paired with worker nodes that are current owners of objects targeted by the commands, wherein the command is routed to the control plane controller based upon the worker node being a current owner of the object targeted by the command, wherein ownership information maintained by the distributed storage architecture is queried using an identifier of the object to determine that the identifier of the object is paired with an identifier of the worker node.

4. The system of claim 1 , wherein the control plane operation is executed for a volume whose data is sliced across storage devices of multiple worker nodes of the distributed storage architecture, and wherein the worker node that executes the control plane operation is an owner of the volume tracked within ownership information maintained by the distributed storage architecture.

5. The system of claim 1 , wherein the control plane operation is executed to generate a snapshot of a volume owned by the worker node, wherein data of the volume is sliced across storage devices of multiple worker nodes of the distributed storage architecture, wherein ownership information is updated to indicate that the worker node is an owner of the snapshot.

6. The system of claim 1 , wherein the control plane controllers are paired to the worker nodes according to a one to one relationship where a single control plane controller is paired with a single worker node, and wherein commands are routed to control plane controllers paired with worker nodes that are owners of objects targeted by the commands.

7. The system of claim 1 , the distributed control plane is further configured to:

in response to determining that a new worker node has been added to the distributed storage architecture, create and pair a new control plane controller with the new worker node for communicating and formatting commands between the new worker node and the applications within the container orchestration platform based upon the commands targeting objects owned by the new worker node.

8. The system of claim 1 , the distributed control plane is further configured to:

in response to determining that the worker node has been removed from the distributed storage architecture, remove the control plane controller from the container orchestration platform and transferring ownership of objects owned by the worker node to a different worker node.

9. The system of claim 1 , the distributed control plane is further configured to:

process commands in parallel using multiple control plane controllers based upon the commands targeting objects owned by different worker nodes to which the control plane controllers are paired.

10. The system of claim 1 , the distributed control plane is further configured to:

assign ownership of volume provisioning tasks to control plane controllers based upon the control plane controllers being paired with worker nodes that are to own volumes being provisioned by the volume provisioning tasks.

11. The system of claim 1 , the distributed control plane is further configured to:

populate a custom resource definition for the object with information received within a response from the worker node, wherein the information comprises a status of the control plane operation being implemented by the worker node.

12. The system of claim 1 , further comprising:

a cluster master controller configured to implement commands corresponding to infrastructure APIs including a create cluster command, an add node command, and an add storage device command.

13. The system of claim 1 , the distributed control plane is further configured to:

reroute commands corresponding to volume APIs to a cluster master controller configured to create a hierarchy of objects for volumes created by the volume APIs.

14. The system of claim 1 , further comprising:

a cluster master controller configured to preserve a volume core identifier of the object across the plurality of worker nodes and corresponding control plane controllers.

15. The system of claim 1 , the control plane controller is further configured to:

reformat commands that are routed as reformatted commands to the worker node based upon the commands corresponding setting policies for objects owned by the worker node, wherein the setting policies correspond to at least one of a security policy, an export policy, or access control lists.

16. A method, comprising:

retrieving, by a distributed control plane hosted within a container orchestration platform hosting applications running through containers, a custom resource definition for an object stored within distributed storage comprised of storage devices hosted by a plurality of worker nodes of a distributed storage architecture;

routing, by the distributed control plane, a command derived from the custom resource definition to a control plane controller paired with a worker node based upon a determination that the worker node is an owner of the object, wherein the command is formatted according to a declarative model supported by the container orchestration platform;

translating, by the control plane controller, the command from being formatted according to the declarative model into a reformatted command formatted according to an imperative model supported by the distributed storage architecture; and

transmitting, by the control plane controller, the reformatted command through a representational state transfer (REST) application programming interface (API) call to the worker node to implement a control plane operation derived from the custom resource definition.

17. The method of claim 16 , further comprising:

routing, by the distributed control plane, a second command to a second control plane controller paired with a second worker node based upon the second worker node being a new current owner of the object, wherein the new current owner is identified as owning the object based upon ownership information maintained by the distributed storage architecture.

18. The method of claim 16 , further comprising:

tracking ownership of objects by worker nodes within ownership information; and

routing commands to control plane controllers that are paired with worker nodes that are current owners of objects targeted by the commands based upon the ownership information.

19. The method of claim 16 , further comprising:

creating or removing control plane controllers of the distributed control plane to scale the distributed control plane based upon a number of worker nodes of the distributed storage architecture, wherein a number of control plane controllers is maintained to match the number of worker nodes.

20. A non-transitory machine readable medium comprising instructions, which when executed by a machine, causes the machine to:

evaluate a distributed storage architecture to identify a number of worker nodes hosted by the distributed storage architecture, wherein the worker nodes host distributed storage comprised of storage devices hosted across worker nodes;

for each worker node in the distributed storage architecture:

create a pod within a container orchestration platform hosting applications running through containers;

host a control plane controller of a distributed control plane within the pod;

pair the control plane controller with a worker node according to a one to one pairing relationship; and

configure the control plane controller to communicate and format commands between the worker node and the applications based upon the worker node owning objects targeted by the commands, wherein the objects are stored within the distributed storage of the distributed storage architecture; and

control the distributed control plane to selectively route commands to control plane controllers that are paired with the worker nodes that are current owners of objects targeted by the commands.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2022
From: HASTI, PRAVEEN KUMAR; BUSICK, CHRISTOPHER ALAN
To: NETAPP INC.
Reel/Frame 060004/0856 →
Cited By (4)
US 12,321,790 US 12,423,021 US 12,554,374 US 12,717,521