Running Kubernetes in the cloud brings flexibility, scalability and high availability. Without the right configuration, it also brings unexpected costs and wasted resources. Amazon Elastic Kubernetes Service (EKS) makes it easy to deploy a Kubernetes cluster on AWS, but without a FinOps approach that cluster can be an expensive thing to operate.
In this article we look at how to combine the benefits of Kubernetes with FinOps practice, so that costs go down while performance and reliability stay where they are.
Key reasons to optimize EKS operations
FinOps in a Kubernetes environment means:
- Cost transparency at the level of teams, projects or environments (dev, test, prod)
- Efficient use of compute resources, with no overprovisioned nodes and no idle workloads
- Automation of processes such as scaling, resource cleanup and cost monitoring
- Better budget control without limiting development velocity
Common mistakes when running Kubernetes on AWS
| Mistake | Consequence |
|---|---|
| Unoptimized node groups | Powerful, and expensive, instances that are only partly utilized |
| No autoscaling | Kubernetes nodes run around the clock, even when nothing needs them |
| Neglected environment cleanup | Test namespaces and data volumes stay active for months |
| CloudWatch logs without retention rules | Costs grow with the volume of historical logs |
| On-demand instances only | Spot instances could bring the price down significantly |
Recommended FinOps practices for EKS
Automatic performance scaling
Enabling the Cluster Autoscaler makes the number of nodes follow actual demand. If no scaling conditions are defined, EKS simply runs at maximum capacity, which is money spent for nothing.
TIP: Add the HPA (Horizontal Pod Autoscaler) as well, so the number of pods adjusts to load too.
Combining spot and on-demand instances
Spot instances can be up to 90 percent cheaper than on-demand. In EKS you can configure a mixed node group where Kubernetes prefers spot capacity and falls back to on-demand when spot is unavailable.
Ideal for:
- Staging environments, where interruptions are acceptable
- Batch jobs that can be restarted
Automated resource cleanup
Using scripts, cron jobs or tools such as Kubecost you can identify:
- Forgotten namespaces and volumes
- Unused load balancers and PVCs (PersistentVolumeClaims)
- Excess logs and debug containers
TIP: Regular cleanup belongs in your CI/CD pipeline or in scheduled jobs inside the cluster.
Cost monitoring
For FinOps, monitoring matters as much as the optimization itself. In EKS we recommend:
- Viewing costs by namespace, label or team (through Kubecost or AWS Cost Explorer, for example)
- Building your own Grafana dashboard connected to Prometheus
- Using AWS Budgets to set limits and notifications
Case study: 34 percent monthly savings thanks to FinOps
A customer was operating several EKS clusters for development, testing and production. After adopting FinOps principles they:
- Reduced the size of some node groups and switched the autoscaler on
- Introduced spot instances in development environments
- Deleted hundreds of unused PVCs and ELBs left behind by test deployments
- Shortened CloudWatch log retention from 30 days to 7
The result? A 34 percent monthly reduction in EKS costs.
Conclusion: Kubernetes and FinOps belong together
Optimizing Kubernetes operations on AWS is not a one-time task. It takes a systematic approach, cost visibility and automation:
- Implement autoscaling and size node groups properly
- Combine on-demand and spot instances
- Monitor and clean up resources regularly
- Use tooling for cost tracking and alerting
A FinOps approach keeps costs under control without limiting innovation or slowing development cycles.
Want to know how to optimize Kubernetes in your cloud environment? Get in touch, we are happy to help.



