IP Library Granted Patent US 12,423,021
Granted Patent B2
US 12,423,021 · App. 18/479,195 · Granted Sep 23, 2025

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 12,423,021
App. No.
18/479,195
Granted
Sep 23, 2025
Kind
B2
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 (71)

1. A distributed storage system, comprising:

a plurality of nodes; and

a distributed control plane that includes control plane controllers each of which are communicably coupled to one or more of the plurality of nodes,

wherein the distributed control plane selects and routes a command to at least one of the control plane controllers based upon an object owned by a first node communicably coupled with one of the control plane controllers, and

wherein the control plane controller is configured to:

translate the command into a reformatted command according to a model supported by the first node; and

transmit the reformatted command through a call to an API endpoint of the first node.

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

in response to receiving information comprising a status of the reformatted command being executed by the first node, populate a custom resource definition for the object with the information to track progress of the first node executing the reformatted command.

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

receive a command to implement a task to provision a volume;

identify a node of the plurality of nodes that is to become an owner of the volume being provisioned by the task; and

assign ownership of the task to a control plane controller paired with the node.

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

monitor the plurality of nodes to detect that a node has been removed from the plurality of nodes;

remove a control plane controller based upon the control plane controller being paired with the node; and

transfer ownership of objects owned by the node to a different node of the plurality of nodes.

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

monitor the plurality of nodes to detect that a node has been added to the plurality of nodes;

add an additional control plane controller to the distributed control plane based upon the node being added to the plurality of nodes; and

pair the additional control plane controller with the node for reformatting commands targeting objects owned by the node.

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

create a control plane operation targeting a volume whose data is stored across storage managed by a set of nodes of the plurality of nodes; and

select the control plane controller to reformat and transmit the control plane operation to the first node based upon a determination that the first node is an owner of the volume, wherein the control plane controller is identified based upon ownership information used to track nodes that own objects.

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

maintain ownership information used to track nodes that are owners of objects; and

query the ownership information using an identifier of the object to determine that the identifier of the object is paired with an identifier of the first node.

8. The system of claim 1 , further comprising:

a cluster master controller configured to implement a create cluster command to create a cluster of nodes from the plurality of nodes, wherein the cluster master controller is hosted by a node of the plurality of nodes.

9. The distributed storage system of claim 8 , the cluster master controller is further configured to:

preserve a volume core identifier of a volume object whose data is stored across storage managed by cluster of nodes, wherein the volume core identifier is preserved across the cluster of nodes and across control plane controllers paired with the cluster of nodes.

10. The distributed storage system of claim 8 , the cluster master controller is further configured to:

receive, by the cluster master controller through a volume application programming interface, a first reformatted command from the distributed control plane; and

create a hierarchy of objects for a volume that is to be created by the first reformatted command, wherein ownership of the hierarchy of objects is assigned to one or more of the plurality of nodes.

11. A method, comprising:

receiving, by a distributed control plane that includes control plane controllers each of which are communicably coupled to one or more of a plurality of nodes, a first command targeting an object;

identifying a first node as an owner of the object;

reformatting, by a first control plane controller paired with the first node, the first command into a first reformatted command that is routed by the first control plane controller to the first node for execution;

receiving, by the distributed control plane, a second command targeting the object;

determining that ownership of the object has changed from the first node to a second node; and

reformatting, by a second control plane controller paired with the second node, the second command into a second reformatted command that is routed by the second control plane controller to the second node for execution.

12. The method of claim 11 , further comprising:

maintaining ownership information used to track nodes that are owners of objects; and

querying the ownership information using an identifier of the object to identify a current owner of the object.

13. The method of claim 12 , further comprising:

in response to removing the first node from the plurality of nodes, transferring ownership of the object from the first node to the second node; and

updating the ownership information to map the identifier of the object to the second node as the owner of the object.

14. The method of claim 12 , further comprising:

in response to transferring ownership of the object from the first node to the second node, updating the ownership information to map the identifier of the object to the second node as the owner of the object.

15. A system, comprising:

a distributed control plane that includes control plane controllers each of which are communicably coupled to one or more of a plurality of nodes,

wherein the distributed control plane is configured to track the plurality of nodes for changes and modifies the control plane controllers based upon the changes,

wherein the distributed control plane is configured to select and route a command to at least one of the control plane controllers based upon an object owned by a first node communicably coupled with one of the control plane controllers, and

wherein the control plane controller is configured to translate and transmit the command to the first node.

16. The system of claim 15 , the distributed control plane is further configured to:

determine that the first node of the plurality of nodes has failed;

transfer ownership of the object from the first node to a second node; and

re-route commands targeting the object from being routed to the control plane controller paired with the first node to a control plane controller paired with the second node.

17. The system of claim 15 , the distributed control plane is further configured to:

determine that a new node has been added to the plurality of nodes;

create a new control plane controller within the distributed control plane; and

pair the new control plane controller with the new node.

18. The system of claim 17 , the distributed control plane is further configured to:

route commands targeting objects owned by the new node to the new control plane controller for translating and transmitting the commands to the new node.

19. The system of claim 15 , the distributed control plane is further configured to:

remove the first node of the plurality of nodes;

transfer ownership of the object from the first node to a second node; and

re-route commands targeting the object from being routed to the control plane controller paired with the first node to a control plane controller paired with the second node.

20. The system of claim 15 , the distributed control plane is further configured to:

tracking ownership of objects by nodes within ownership information; and

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

Continuity (2)
Continuation 17718395 · Apr 12, 2022
Related Publication 20240028255A1 · Jan 25, 2024
References Cited (51)
US 9438665B1 · Vasanth et al. · 2016 [cited by applicant]
US 10871922B2 · East · 2020 [cited by applicant]
US 11245748B1 · Hannon · 2022 [cited by applicant]
US 11650886B2 · Mathew et al. · 2023 [cited by applicant]
US 11748030B1 · East · 2023 [cited by applicant]
US 11775204B1 · Hasti et al. · 2023 [cited by applicant]
US 11789660B1 · Hasti et al. · 2023 [cited by applicant]
US 11822370B2 · Patel et al. · 2023 [cited by applicant]
US 20190065096A1 · Sterin et al. · 2019 [cited by applicant]
US 20190102239A1 · Caldato et al. · 2019 [cited by applicant]
US 20190173793A1 · Liu et al. · 2019 [cited by applicant]
US 20200026625A1 · Konka et al. · 2020 [cited by applicant]
US 20200083909A1 · Kusters et al. · 2020 [cited by applicant]
US 20200099610A1 · Heron et al. · 2020 [cited by applicant]
US 20200104275A1 · Sen et al. · 2020 [cited by applicant]
US 20200213879A1 · Kim et al. · 2020 [cited by applicant]
US 20200280592A1 · Ithal et al. · 2020 [cited by applicant]
US 20210034423A1 · Hallur et al. · 2021 [cited by applicant]
US 20210311764A1 · Rosoff et al. · 2021 [cited by applicant]
US 20210349767A1 · Asayag et al. · 2021 [cited by applicant]
US 20220012095A1 · Ylinen · 2022 [cited by examiner]
US 20220391138A1 · Dronamraju et al. · 2022 [cited by applicant]
US 20230121460A1 · Banerjee et al. · 2023 [cited by applicant]
US 20240036770A1 · Hasti et al. · 2024 [cited by applicant]
US 20240419362A1 · Hasti et al. · 2024 [cited by applicant]
EP 3792760A1 · 2021 [cited by applicant]
KR 20200108228A · 2020 [cited by applicant]
“What Can NetApp's Cloud vols. Services Do?”, Volta, Retrived from the Internet at: https://voltainc.com/cloud-volumesservices/, 3 pgs. [cited by applicant]
“Vertical Pod Autoscaling”, Kubernetes Engine Documentation, Google Cloud, Retrived from the Internet at: https://docs.aws.amazon.com/eks/latest/userguide/vertical-pod-autoscaler.html, 9 pgs. [cited by applicant]
“Google Kubernetes Engine: Ultimate Quick Start Guide”, Jun. 2021, Cloud Central, Kubernetes Storage, Retrived from the Internet at: https://cloud.netapp.com/blog/gcp-cvo-blg-google-kubernetes-engine-ultimate-quick-star… [cited by applicant]
International Search Report and Written opinion for Application No. PCT/US2023/065353, mailed on Jul. 13, 2023, 14 pages. [cited by applicant]
“Kubernetes Autoscaling: 3 Methods and How to Make Them Great”, Jan. 2022, Spot by NetApp, Retrived from the Internet at: https://spot.io/resources/kubernetes-autoscaling-3-methods-and-how-to-make-them-great/, 10 pgs. [cited by applicant]
Notice of Allowance mailed Aug. 14, 2023 for U.S. Appl. No. 17/718,395, filed Apr. 12, 2022, 05 pages. [cited by applicant]
Notice of Allowance mailed Aug. 18, 2023 for U.S. Appl. No. 17/718,403, filed Apr. 12, 2022, 04 pages. [cited by applicant]
Notice of Allowance mailed on Apr. 14, 2023 for U.S. Appl. No. 17/718,403, filed Apr. 12, 2022, 7 pages. [cited by applicant]
Notice of Allowance mailed on Aug. 2, 2023 for U.S. Appl. No. 17/718,403, filed Apr. 12, 2022, 04 pages. [cited by applicant]
Notice of Allowance mailed on Aug. 30, 2023 for U.S. Appl. No. 17/718,395, filed Apr. 12, 2022, 5 pages. [cited by applicant]
Notice of Allowance mailed on Jun. 7, 2023 for U.S. Appl. No. 17/718,403, filed Apr. 12, 2022, 7 pages. [cited by applicant]
Notice of Allowance mailed on May 24, 2023 for U.S. Appl. No. 17/718,395, filed Apr. 12, 2022, 8 pages. [cited by applicant]
“Use Cases”, 2022, NetApp Cloud Volumes Service for Google Cloud, Cloud Architecture Center, Retrived from the Internet at: https://cloud.google.com/architecture/partners/netapp-cloud-volumes/use-cases, 4 pgs. [cited by applicant]
“Using the Kubernetes Vertical Pod Autoscaler”, Oracle cloud Infrastructure Documentation, Retrived from the Internet at: https://docs.oracle.com/en-us/iaas/Content!ContEng/Tasks/contengusingverticalpodautoscaler.htm, 9… [cited by applicant]
“Vertical Autoscaling in Kubernetes”, May 2021, PUA ABBASSI, Giant Swarm, Retrived from the Internet at: https://docs.oracle.com/en-us/iaas/Content!ContEng/Tasks/contengusingverticalpodautoscaler.html, 10 pgs. [cited by applicant]
“Vertical Pod Autoscaler”, Amazon EKS User Guide, Retrived from the Internet at: https://docs.aws.amazon.com/eks/latest/userguide/vertical-pod-autoscaler.html, 5 pgs. [cited by applicant]
Notice of Allowance mailed on May 7, 2024 for U.S. Appl. No. 18/487,366, filed Oct. 16, 2023, 08 pages. [cited by applicant]
Alibaba Cloud., Distributed Cloud Container Platform for Kubernetes (ACK One), 8 pages. [cited by applicant]
Google., GKE Cluster Architecture, 5 pages. [cited by applicant]
Non-Final Office Action mailed on Sep. 18, 2024 for U.S. Appl. No. 17/718,419, filed Apr. 12, 2022, 09 pages. [cited by applicant]
International Preliminary Report on Patentability for Application No. PCT/US2023/065353 mailed on Oct. 24, 2024, 09 pages. [cited by applicant]
Notice of Allowance mailed on Mar. 5, 2025 for U.S. Appl. No. 17/718,419, filed Apr. 12, 2022, 02 pages. [cited by applicant]
Notice of Allowance mailed on May 5, 2025 for U.S. Appl. No. 17/718,419, filed Apr. 12, 2022, 02 pages. [cited by applicant]
European Office Action for Application No. EP237216 dated on Aug. 6, 2025, 12 pages. [cited by applicant]
Cited By (1)
US 12,717,521