Blog

Best Practices for Running EKS Auto Mode with StormForge


By Erwin Daria | Feb 06, 2025

EKS Auto Mode Best Practics

If you’re struggling to optimize costs, ensure efficient resource utilization, and maintain scalability on your Kubernetes infrastructure, you should consider trying Amazon’s EKS Auto Mode. Introduced in December 2024, EKS Auto Mode was designed to automate cost optimization and simplify infrastructure management. 

Enabling Auto Mode on your EKS clusters not only streamlines cluster operations but also continuously optimizes compute costs through intelligent capacity provisioning and dynamic scaling.

When enabled, EKS Auto Mode selects the ideal mix of EC2 instances, eliminates unused resources, and consolidates workloads, significantly reducing operational overhead. With support for cost-saving features like Spot Instances, Savings Plans, and Reserved Instances, EKS Auto Mode helps organizations improve Kubernetes cost efficiency.

The Importance of Configuring Resource Requests for Workloads Running on EKS Auto Mode

In order to maximize cost-efficiency, you will need to carefully configure resource requests for each of the workloads deployed onto your cluster. Because EKS Auto Mode’s cost optimization features are powered by Karpenter, accurate workload-level resource requests are critical to provisioning the right EC2 instance types. Neglecting workload-level resource optimization risks continued overprovisioning of resources, poor cost control, and unpredictable application reliability.

To optimize your workload resource requests, you can use StormForge Optimize Live to automatically detect all Kubernetes workloads in your EKS Auto Mode cluster, continuously rightsizing workloads using machine learning and automation. These optimized resource requests are then used by EKS Auto Mode to provision the optimal EC2 instances to keep your costs under control and applications reliable.

An illustration showing how StormForge rightsizes Kubernetes pod while Amazon EKS Auto Mode ensures efficient bin packing for cloud cost savings
StormForge rightsizes your workloads so that EKS Auto Mode can bin pack them into the optimal EC2 instances. Leveraging both technologies is a best practice for your EKS Auto Mode clusters.

StormForge Architecture

Optimize Live is comprised of:

  • A read-only agent, which reports on new workloads and deploys and configures the Metrics Forwarder
  • A SaaS platform, which receives workload metrics from the StormForge Agent, analyzes them, and calculates accurate request values.
  • An Applier component, which will apply rightsizing values to workloads periodically to keep costs and reliability in balance – if users choose to configure it.
an illustratioon depicting the StormForge Optimize Live architecture
The StormForge Agent automatically discovers workloads and collects metrics before sending them to the StormForge SaaS for machine learning analysis. Rightsizing predictions are made and can be applied using the StormForge Applier to actively optimize workload resources.

Best Practices and Considerations for Running StormForge on Your EKS Auto Mode Cluster

StormForge analyzes time-series metric data from your EKS Auto Mode cluster to rightsize workload resource requests. While the StormForge agent is lightweight and insensitive to the stops and starts that might occur as Auto Mode is continuously optimizing the underlying infrastructure, you should treat the StormForge agent as you would any other observability or cluster resource management agent.

To ensure that the StormForge Agent runs without being impacted by the general application population, we recommend that you deploy the StormForge agent on to EKS Auto Mode’s default system nodepool, as depicted in the diagram below.

an illustration depicting how The StormForge Agent and Applier should be run on the AWS EKS Auto Mode system nodepool to avoid any node churn that  can occur from highly elastic workloads in the general-purpose nodepool.
The StormForge Agent and Applier should be run on the AWS EKS Auto Mode system nodepool to avoid any node churn that  can occur from highly elastic workloads in the general-purpose nodepool.

Modifying the StormForge Agent to run on the system Nodepool on EKS Auto Mode

To modify the StormForge Agent to run on the system nodepool, you must first deploy it using the EKS add-on, or using Helm. The following will walk you through the steps for modifying the agent configuration for each option.

Option 1: Using EKS Add Ons

Access your EKS cluster control panel to locate and select the StormForge Add On, and click edit.

a screenshot of the Amazon EKS UI showing how to Access your EKS cluster control panel to locate and select the StormForge Add On, and click edit.

On the next page, click to expand Optional configuration settings and add the following YAML to the Configuration values field as shown below, and click Save changes.

nodeSelector:
  karpenter.sh/nodepool: system
  kubernetes.io/arch: amd64

tolerations:
 - key: "CriticalAddonsOnly"
   operator: "Exists"
a screenshot of the Amazon EKS Auto mode UI showing how to add YAML to the Configuration values field

EKS will deploy the new changes to your cluster, updating the StormForge Agent configuration to run on the system nodepool.

a screenshot of the Amazon EKS UI showing deployment of new changes to a cluster

You can confirm that the StormForge Agent is now running on the system nodepool by running the following command:

kubectl get pods -n stormforge-system -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName,NODEPOOL:.spec.nodeSelector

You should get an output that looks similar to the below:

NAME                                                    NODE                  NODEPOOL
stormforge-agent-metrics-forwarder-5c5f668d47-8zxw5     i-02a9f939639e022e3   map[karpenter.sh/nodepool:system kubernetes.io/arch:amd64]
stormforge-agent-workload-controller-7ff6bdc8b9-gmcff   i-02a9f939639e022e3   map[karpenter.sh/nodepool:system kubernetes.io/arch:amd64]

Option 2: Using Helm

Take the following steps to modify the existing Helm release and schedule the StormForge Agent on to the system nodepool. 

Create a new YAML with the following contents:

# New values to schedule the StormForge Agent on to the default 'system' nodepool on EKS Auto Mode

nodeSelector:
  karpenter.sh/nodepool: system
  kubernetes.io/arch: amd64
tolerations:
- key: "CriticalAddonsOnly"
  operator: "Exists"

Save the file, and then run the following Helm command:

helm upgrade stormforge-agent -n stormforge-system oci://registry.stormforge.io/library/stormforge-agent --reset-then-reuse-values -f <path to YAML file>

You can confirm that the StormForge Agent is now running on the system nodepool by running the following command:

kubectl get pods -n stormforge-system -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName,NODEPOOL:.spec.nodeSelector

You should get an output that looks similar to below:

NAME                                                    NODE                  NODEPOOL
stormforge-agent-metrics-forwarder-785c47468c-57kc8    i-01c7a2b7ebd9f1431   map[karpenter.sh/nodepool:system kubernetes.io/arch:amd64]
stormforge-agent-workload-controller-fbcb56496-wdwk7   i-01c7a2b7ebd9f1431   map[karpenter.sh/nodepool:system kubernetes.io/arch:amd64]

Start Continuously Rightsizing Your Workloads on EKS Auto Mode

With the StormForge agent modified to run on the system Nodepool on EKS Auto Mode, you can quickly and easily rightsize all of your workloads autonomously.

To learn more about how to apply automatic continuous rightsizing of your workloads, visit our optimization settings documentation.

Latest Posts

We use cookies to provide you with a better website experience and to analyze the site traffic. Please read our "privacy policy" for more information.