IP Library Granted Patent US 12,710,985
Granted Patent B2
US 12,710,985 · App. 17/956,051 · Granted Aug 18, 2026

Coupled compute and storage resource autoscaling

Inventor: Madhuvanthi Janarthanam (Erie, CO)
Assignee: NetApp, Inc.
G06F9/5016
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,710,985
App. No.
17/956,051
Filed
Sep 29, 2022
Granted
Aug 18, 2026
Kind
B2
Art Unit
2194
USPC
718/104
Abstract

Techniques are provided for coupled compute and storage resource autoscaling. Applications may be hosted within an application hosting environment (e.g., containerized applications hosted within Kubernetes) that allocations certain amounts of compute resources (e.g., processor and memory resources) to the applications for execution. The applications may store data within persistent of a backend storage platform separate from the application hosting environment. An autoscaler monitors the health of storage resources allocated to an application during deployment and runtime of the application so that issues with the storage resources can be preemptively identified and resolved for non-disruptive operation of the application. The autoscaler scales both the compute resources and the storage resources assigned to the application so that the application can continue operation in a non-disruptive manner.

Claims (76)

1 . A system, comprising:

a compute region interface providing access to a compute allocator of a container orchestration platform hosted within a compute region separate from both a first storage region and a second storage region;

a storage region interface providing access to storage application programming interfaces (APIs) of the first storage region and the second storage region; and

an autoscaler providing coupled compute and storage scaling for a containerized application within the container orchestration platform by:

determining, based upon a task assigned to the containerized application, a determined amount of compute resources to allocate from the compute region to the containerized application within the container orchestration platform;

calculating, based upon the task and using the determined amount of compute resources, a calculated amount of storage resources to allocate to the containerized application;

triggering, using the storage region interface, a verification that the first storage region has first operational storage to allocate as the calculated amount of storage resources;

in response to the verification succeeding, executing a coupled compute and storage autoscale operation to control the compute allocator to allocate the determined amount of compute resources and the storage region interface to allocate, using the storage APIs, the calculated amount of storage resources from the first storage region for the containerized application;

in response to the verification failing, performing a self-healing operation to repair storage resources of the first storage region; and

in response to the self-healing operation failing to repair the storage resources:

evaluating the second storage region to identify second operational storage to allocate as the calculated amount of storage resources; and

executing the coupled compute and storage autoscale operation to control the compute allocator to allocate the determined amount of compute resources and the storage region interface to allocate, using the storage APIs, the calculated amount of storage resources from the second storage region for the containerized application.

2 . The system of claim 1 , wherein the autoscaler:

utilizes the storage region interface to perform a health verification to determine whether first storage of the first storage region is operational for allocation as the first operational storage to the containerized application;

in response to the health verification indicating that the first storage is not operational, utilizes the storage region interface to identify a backend storage platform of the second storage region with second storage that is operational for allocation; and

in response to verifying that the second storage is operational and accessible to the compute region, triggers execution of the coupled compute and storage autoscale operation to:

utilize the compute region interface to instruct the compute allocator to allocate the determined amount of compute resources from the compute region to the containerized application; and

trigger the storage region interface to instruct the backend storage platform to allocate the calculated amount of storage resources to the containerized application using the second storage.

3 . The system of claim 1 , wherein the calculated amount of storage resources are allocated from the first storage region hosted by a first backend storage platform, and wherein the autoscaler:

utilizes the storage region interface to transmit a health checkup request, during execution of the containerized application, to the first backend storage platform to identify a health status of the first operational storage; and

in response to the health status indicating a warning for the first operational storage, triggers execution of the coupled compute and storage autoscale operation for the containerized application by allocating the calculated amount of storage resources from the second operational storage to the containerized application, wherein the calculated amount of storage resources from the first storage region are deallocated from the containerized application.

4 . The system of claim 1 , wherein the calculated amount of storage resources are allocated from the first storage region hosted by a first backend storage platform within a first cloud storage region, and wherein the autoscaler:

in response to determining that the first backend storage platform of the first cloud storage region is experience a failure where the containerized application cannot access the first storage region, triggers execution of the coupled compute and storage autoscale operation using the second storage region hosted by a second backend storage platform within a second cloud storage region.

5 . The system of claim 1 , wherein the calculated amount of storage resources are allocated from the first storage region hosted by a first backend storage platform, and wherein the autoscaler:

monitors progress of the task being executed by the containerized application and communication between the containerized application and the first storage region; and

in response to identifying at least one of a failure of the task or a communication issue where the containerized application is unable to access the first storage region, triggers execution of the coupled compute and storage autoscale operation to allocate the calculated amount of storage resources from the second operational storage to the containerized application.

6 . The system of claim 1 , wherein the autoscaler:

accesses security credentials associated with the containerized application and the container orchestration platform;

utilizes the security credentials to authenticate with the container orchestration platform for executing the coupled compute and storage autoscale operation to instruct the compute allocator to allocate the determined amount of compute resources from the compute region to the containerized application; and

utilizes the security credentials to authenticate with a backend storage platform to instruct the backend storage platform to allocate the calculated amount of storage resources from the first region for access by the containerized application.

7 . The system of claim 1 , wherein the autoscaler:

executes the coupled compute and storage autoscale operation to instruct a backend storage platform to add one or more storage nodes to the first storage region according to a random assignment for allocating the calculated amount of storage resources to the containerized application, wherein the one or more storage nodes are hosted within a cloud computing environment implementing the backend storage platform; and

executes the coupled compute and storage autoscale operation to instruct the compute allocator to assign one or more compute nodes as the determined amount of compute resources allocated to the containerized application.

8 . The system of claim 1 , wherein the autoscaler:

evaluates a request, for the containerized application to perform the task, to determine the determined amount of compute resources to be allocated to the containerized application for performing the task.

9 . The system of claim 1 , wherein the autoscaler:

evaluates a request, for the containerized application to perform the task, to determine the determined amount of compute resources to be allocated to the containerized application for performing the task; and

calculates the calculated amount of storage resources to allocate to the containerized application based upon an amount of storage that the task will utilize.

10 . The system of claim 1 , wherein the autoscaler:

evaluates a backup policy, to be implemented by the containerized application, to identify a frequency of creating backups; and

determines the determined amount of compute resources and calculates the calculated amount of storage resources to allocate for creating and storing the backups according to the frequency specified by the backup policy.

11 . The system of claim 1 , wherein the autoscaler:

evaluates a restore operation, to be implemented by the containerized application for restoring data using a snapshot, to determine the amount of determined compute resources and calculate the calculated amount of storage resources to be allocated to the containerized application for implementing the restore operation.

12 . The system of claim 1 , wherein the autoscaler:

calculates the amount of calculated storage resources based upon an amount of storage that can be utilized by the determined amount of compute resources.

13 . The system of claim 2 , wherein the autoscaler:

in response to identifying a version mismatch between a version of the container orchestration platform and a version of a first backend storage platform hosting the first storage region, triggers execution of the coupled compute and storage autoscale operation to autoscale the calculated amount of storage resources from the second storage region hosted by a second backend storage platform matching the version of the container orchestration platform.

14 . The system of claim 1 , wherein the autoscaler:

scales the compute resources and the storage resources together during deployment and before operation of the containerized application, wherein the calculated amount of storage resources is calculated based upon an amount of inoperable storage detected by the verification.

15 . The system of claim 14 , wherein the autoscaler:

calculates the calculated amount of storage resources to allocate to the containerized application based upon an amount of storage that the compute resources will utilize to store data associated with the task assigned to the containerized application to perform.

16 . The system of claim 1 , wherein the autoscaler:

evaluates a backup policy to be implemented by the containerized application to identify an amount of data to backup; and

determines the determined amount of compute resources and calculates the calculated amount of storage resources to allocate for creating and storing backups that include the amount of data identified from the backup policy.

17 . A method, comprising:

determining, based upon a task assigned to a containerized application, a determined amount of compute resources to allocate from a compute region to the containerized application within a container orchestration platform, wherein the compute region is hosted separate from both a first storage region and a second storage region;

calculating, based upon the task and using the determined amount of compute resources, a calculated amount of storage resources to allocate to the containerized application;

triggering, using a storage region interface, a verification that the first storage region has first operational storage to allocate as the calculated amount of storage resources;

in response to the verification succeeding, executing a coupled compute and storage autoscale operation to control a compute allocator to allocate the determined amount of compute resources and the storage region interface to allocate, using a first storage application programming interface (API) of the first storage region, the calculated amount of storage resources from the first storage region for the containerized application;

in response to the verification failing, performing a self-healing operation to repair storage resources of the first storage region; and

in response to the self-healing operation failing to repair the storage resources: evaluating the second storage region to identify second operational storage to allocate as the calculated amount of storage resources; and

executing the coupled compute and storage autoscale operation to control the compute allocator to allocate the determined amount of compute resources and the storage region interface to allocate, using a second storage API of the second storage region, the calculated amount of storage resources from the second storage region for the containerized application.

18 . The method of claim 17 , comprising:

evaluating a configuration file for the containerized application to identify determine the determined amount of compute resources to allocate to the containerized application; and

evaluating a workload to be performed by the containerized application using the determined amount of compute resources in order to calculate the calculated amount of storage resources to allocate to the containerized application.

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

determine, based upon a task assigned to a containerized application, a determined amount of compute resources to allocate from a compute region to the containerized application within a container orchestration platform, wherein the compute region is hosted separate from both a first storage region and a second storage region;

calculate, based upon the task and using the determined amount of compute resources, a calculated amount of storage resources to allocate to the containerized application;

trigger, using a storage region interface, a verification that the first storage region has first operational storage to allocate as the calculated amount of storage resources;

in response to the verification succeeding, execute a coupled compute and storage autoscale operation to control a compute allocator to allocate the determined amount of compute resources and the storage region interface to allocate, using a first storage application programming interface (API) of the first storage region, the calculated amount of storage resources from the first storage region for the containerized application;

in response to the verification failing, perform a self-healing operation to repair storage resources of the first storage region; and

in response to the self-healing operation failing to repair the storage resources:

evaluate the second storage region to identify second operational storage to allocate as the calculated amount of storage resources; and

execute the coupled compute and storage autoscale operation to control the compute allocator to allocate the determined amount of compute resources and the storage region interface to allocate, using a second storage API of the second storage region, the calculated amount of storage resources from the second storage region for the containerized application.

20 . The non-transitory machine readable medium of claim 19 , wherein the instructions cause the machine to:

notify a load balancer of one or more storage nodes added to a backend storage platform for hosting the calculated amount of storage resources allocated to the containerized application, wherein the load balancer routes storage access requests from the containerized application to the one or more storage nodes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2022
From: ., MADHUVANTHI JANARTHANAM
To: NETAPP INC.
Reel/Frame 061255/0251 →
Continuity (1)
Related Publication 20240111582A1 · Apr 4, 2024
References Cited (63)
US 10476949B2 · Marchetti et al. · 2019 [cited by applicant]
US 10761875B1 · Burgin · 2020 [cited by examiner]
US 11030009B2 · Gonzalez et al. · 2021 [cited by applicant]
US 11194483B1 · Dontu · 2021 [cited by examiner]
US 20130086270A1 · Nishikawa · 2013 [cited by examiner]
US 20160335166A1 · George · 2016 [cited by examiner]
US 20180024964A1 · Mao · 2018 [cited by examiner]
US 20180316759A1 · Shen · 2018 [cited by examiner]
US 20190349357A1 · Shukla · 2019 [cited by examiner]
US 20220237069A1 · Freeman · 2022 [cited by examiner]
US 20230050796A1 · Ghergu et al. · 2023 [cited by applicant]
US 20230185619A1 · Manley · 2023 [cited by examiner]
US 20230224362A1 · Yamauchi · 2023 [cited by examiner]
Chu, Qiao, Lin Cui, and Yuxiang Zhang. “Joint computing and storage resource allocation based on stable matching in data centers.” In 2017 IEEE 3rd international conference on big data security on cloud (bigdatasecurity… [cited by examiner]
“Allocatable Memory and CPU in Kubernetes Nodes”, May 2020, Daniele Polencic, Learni8s, reprinted from the Internet at: https://learnk8s.io/allocatable-resources, 20 pgs. [cited by applicant]
“Using EBS with Auto Scaling Groups”, May 2017, Portwarx, Amazon Web Services, reprinted from the Internet at: https://portworx.com/wp-content/uploads/2017/05/asg-slides.pdf, 31 pgs. [cited by applicant]
“Application Data Protection, Mobility and Storage for Cloud Native Applications”, 2022, Cloud Central, Astra by NetApp—Astra Family, reprinted from the Internet at: https://cloud.netapp.com/astra, 9 pgs. [cited by applicant]
“Astra Control Service Documentation”, Aug. 2022, NetApp, Astra Control Service, reprinted from the Internet at: https://docs.netapp.com/us-en/astra-control-service/, 114 pgs. [cited by applicant]
“Astra Trident 22.07 Documentation”, Aug. 2022, Astra Trident, NetApp, reprinted from the Internet at: https://docs.netapp.com/us-en/trident/?q=macos, 283 pgs. [cited by applicant]
“AWS Auto Scaling”, Jan. 2018, Jeff Barr, Application Scaling to Optimize Performance and Costs, reprinted from the Internet at: https://aws.amazon.com/autoscaling/, 7 pgs. [cited by applicant]
“Containerization”, Jun. 2021, Sai Vennam, IBM Cloud Education, reprinted from the Internet at: https://www.ibm.com/cloud/learn/containerization, 14 pgs. [cited by applicant]
“Get Started”, Jul. 2022, NetApp, Astra Data Store, reprinted from the Internet at: https://docs.netapp.com/us-en/astra-data-store/pdfs/sidebar/Get_started.pdf, 41 pgs. [cited by applicant]
“Google Kubernetes Engine: Ultimate Quick Start Guide”, Jun. 2021, Yifat Perry, Cloud Central, Kubernetes Storage, reprinted from the Internet at: https://cloud.netapp.com/blog/gcp-cvo-blg-google-kubernetes-engine-ultim… [cited by applicant]
“Health Checks for Auto Scaling Instances”, 2022, AWS Documentation, Amacon EC2 Auto Scaling, User Guide, reprinted from the Internet at: https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-che… [cited by applicant]
“Horizontal vs. Vertical Scaling in the Cloud”, Jul. 2021, CloudCheckr now part of Spot by NetApp, Blog, Automation, reprinted from the Internet at: https://cloudcheckr.com/cloud-automation/horizontal-vertical-cloud-sca… [cited by applicant]
“Using AWS Auto-Scaling Groups with Stateful Docker Containers”, May 2017, Portworx, Amazon Web Services, reprinted from the Internet at: https://portworx.com/blog/auto-scaling-groups-ebs-docker/, 12 pgs. [cited by applicant]
“Kubernetes 101: Pods, Nodes, Containers, and Clusters”, Jan. 2018, Daniel Sanche, Published in Google Cloud—Community, reprinted from the Internet at: https://medium.com/google-cloud/kubernetes-101-pods-nodes-container… [cited by applicant]
“Production-Grade Container Orchestration”, 2022, Learn Kubernetes Basics, reprinted from the Internet at: https://kubernetes.io/, 6 pgs. [cited by applicant]
“Resource Management for Pods and Containers”, Aug. 2022, Kubernetes Documentation, reprinted from the Internet at: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/, 12 pgs. [cited by applicant]
“Load Balancing and Scaling”, Oct. 2022, Compute Engine Documentation, Google Cloud, reprinted from the Internet at: https://cloud.google.com/compute/docs/load-balancing-and-autoscaling, 3 pgs. [cited by applicant]
ONTAP 9 Documentation, Aug. 2022, ONTAP 9, NetApp, reprinted from the Internet at: https://docs.netapp.com/us-en/ontap/concepts/cluster-storage-concept.html, 215 pgs. [cited by applicant]
“Node Resource Allocation”, Date not available, kOps, Kubernetes Operations, reprinted from the Internet at: https://kops.sigs.k8s.io/node_resource_handling/, 3 pgs. [cited by applicant]
“Stateful Apps on Kubernetes get a Big Boost with Astra Data Store”, Oct. 2021, Arindam Banerjee, Cloud Central, reprinted from the Internet at: https://cloud.netapp.com/blog/astra-blg-stateful-apps-on-kubernetes-get-a-… [cited by applicant]
“The Key Pillars of the Astra Data Store Architecture”, Apr. 2022, Cloud Central, reprinted from the Internet at: https://cloud.netapp.com/blog/astra-blg-kubernetes-applications-get-an-enterprise-grade-platform-with-ast… [cited by applicant]
“What's the Difference Between a Pod, a Cluster, and a Container?” Sep. 2020, Kevin Casey, The Enterprisers Project, reprinted from the Internet at: https://enterprisersproject.com/article/2020/9/pod-cluster-container-w… [cited by applicant]
“The Power of Separating Clod Compute and Cloud Storage”, 2022, Teradata VantageCloud, Unlock Data, Activte Analytics, Accelerate Value, reprinted from the Internet at: https://www.teradata.com/Trends/Cloud/The-Power-of… [cited by applicant]
Understanding Kubernetes Node Resource Allocation, Sep. 2021, William Denniss, Powered by WordPress, reprinted from the Internet at: https://wdenniss.com/understanding-kubernetes-node-resource-allocation, 7 pgs. [cited by applicant]
Taherizadeh, et al.; Dynamic Multi-level Auto-scaling Rules for Containerized Applications; The Computer Journal, vol. 62, Issue 2, 2018; pp. 174-197, https://doi.org/10.1093/comjnl/bxy043; 24 Pgs. [cited by applicant]
Narayana, et al.; Application deployment using containers with auto-scaling for microservices in cloud environment; vol. 160; Jun. 15, 2020; 8 Pgs. [cited by applicant]
Vighnesh Sachidananda, et al.; Collective Autoscaling for Cloud Microservices; 2021; 39 Pgs. [cited by applicant]
Daniele Polencic; Allocatable memory and CPU in Kubernetes Nodes; May 2020; 20 Pgs. [cited by applicant]
Portworx; Amazon Web Services; Using EBS with Auto Scaling Groups; How to use the immense power of AWS Auto-Scaling Groups for a stateful Docker application; 31 Pgs. [cited by applicant]
Astra by NetApp—Astra Family; Application data protection, mobility andstorage for cloud native applications; 9 Pgs. [cited by applicant]
NetApp; Astra Control Service documentation; Aug. 10, 2022; 114 Pgs. [cited by applicant]
NetApp; Astra Trident 22.07 documentation; Aug. 12, 2022; 283 Pgs. [cited by applicant]
AWS Auto Scaling; https://aws.amazon.com/autoscaling/; 7 Pgs. [cited by applicant]
IBM Cloud Education; Containerization; Jun. 23, 2021; 14 Pgs. [cited by applicant]
NetApp; Get started; Astra Data Store; Jul. 25, 2022; 41 Pgs. [cited by applicant]
Netapp.com; Google Kubernetes Engine: Ultimate QuickStart Guide; Kubernetes Storage; What is Google Kubernetes Engine (GKE)?; Jul. 10, 2021; 9 Pgs. [cited by applicant]
Amazon EC2 Auto Scaling; Health checks for Auto Scaling instances; https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html; 10 Pgs. [cited by applicant]
CloudCheckr; Horizontal vs. Vertical Scaling in the Cloud; Jul. 8, 2021; 12 Pgs. [cited by applicant]
Portworx; Using AWS Auto-Scaling Groups with Stateful Docker Containers; May 22, 2017; 12 Pgs. [cited by applicant]
Daniel Sanche; Kubernetes 101: Pods, Nodes, Containers, and Clusters; Jan. 2, 2018; 9 Pgs. [cited by applicant]
Kubernetes; Production-Grade Container Orchestration; 6 Pgs. [cited by applicant]
Load balancing and scaling | Compute Engine Documentation | Google Cloud; Load balancing and scaling; 3 Pgs. [cited by applicant]
Node Resource Allocation—kOps—Kubernetes Operations; Node Resource Allocation; Node Resource Handling in Kubernetes; 3 Pgs. [cited by applicant]
NetApp; ONTAP 9 Documentation; ONTAP 9; Aug. 18, 2022; https://docs.netapp.com/us-en/ontap/index.html; 2712 Pgs. [cited by applicant]
Resource Management for Pods andContainers; Resource Management for Pods and Containers | Kubernetes; 12 Pgs. [cited by applicant]
Cloud Central; The story of stateful applications on Kubernetes; Stateful apps on Kubernetes get a big boost with Astra Data Store; Oct. 12, 2021; 4 Pgs. [cited by applicant]
Cloud Central; The key pillars of the Astra Data Store architecture; Kubernetes applications get an enterprise-grade data platform with Astra Data Store; Apr. 13, 2022; 5 Pgs. [cited by applicant]
Teradata VantageCloud; The Power of Separating CloudCompute and Cloud Storage; 11 Pgs. [cited by applicant]
William Denniss; Understanding Kubernetes Node Resource Allocation; 7 Pgs. [cited by applicant]
Kevin Casey; The Enterprisers Project; What's the difference between a pod, a cluster, and a container? 6 Pgs. [cited by applicant]