In surveys about why organizations adopt Kubernetes, a desire to reduce overall IT costs is an oft-cited reason for adopting containers and Kubernetes. Yet after the fact, when organizations talk about surprises during Kubernetes adoption, many cite increased costs.
So does Kubernetes reduce costs or not?
Like so many things in life, it depends. Here are some of the reasons Kubernetes projects come in over-budget and how to avoid them.
With Kubernetes, one of the main challenges, especially as organizations embark on a transition to Kubernetes, is one of a persistent skills gap. Here are some of the mistakes organizations make that can dramatically increase kubernetes costs on AWS, generally without any added benefit in terms of availability or performance:
Misunderstanding actual resource usage. This can mean provisioning clusters that are too large, provisioning too much memory or storage or failing to set any resource limits at all on clusters that auto-scale.
Architectural mistakes. A common costly mistake is to have either clusters that span regions or availability zones or multiple clusters across virtual private clouds that need to communicate, leading to high networking costs.
Human resources. Building internal Kubernetes capabilities requires either hiring experts or investing in training for your current engineering team. Both options are expensive.
It’s undoubtedly possible to reduce AWS cost by using Kubernetes, but doing so requires both visibility into the relationship between Kubernetes and cloud costs, in general as well as in your specific environment as well as deep understanding of how Kubernetes works. Even if they don’t have expert-level Kubernetes expertise, following both cost-related and general Kubernetes best practices can keep cloud costs in check — but many organizations fail to do even that.
If developers are individually responsible for making decisions about cluster size, resource types and configurations in general, they will almost inevitably make mistakes. Costs are not generally most developers’ primary concern — they want the application to work, and to work quickly.
One way to get around this is to use an opinionated configuration management system that allows a central team to set policies around resource usage. If organizations can make it impossible for developers to make a mistake that ends up increasing costs unnecessarily, they should do so.
These kinds of baked-in policy management systems can reduce a number of business risks associated with Kubernetes, from potential security and compliance risk to operational risk to the risk of excessive cloud costs. Organizations that consciously make policies and then enforce them automatically are most likely to avoid expensive misconfigurations.
Lack of information
In many cases, organizations actually don’t know whether or not Kubernetes is more expensive than expected — because they don’t have enough information. Calculating the costs of an application running in the cloud is complicated — it includes not just the compute resources, but also the networking costs, storage costs and any compute, networking and storage related to operating and monitoring the application.
As a result, an organization might move to Kubernetes and find that the compute costs have decreased but the overall cloud bill is higher. Without visibility into where the costs are coming from and how they relate to Kubernetes, it’s hard to know what to fix or even if Kubernetes is the problem.
The human element is also nearly always left out of any accounting of Kubernetes costs. That’s a mistake. The highly skilled engineers who develop applications and operate them are among an organization’s most constrained resources, and most companies’ total payroll is more than their cloud bill.
Getting control of Kubernetes costs on AWS
There are two prongs to any attempt to reduce Kubernetes costs. They are:
Rely on cloud provider services whenever possible
Get detailed insight into how Kubernetes impacts costs
Google, Amazon and Azure can manage Kubernetes more efficiently than your internal team can. Using cloud providers’ managed services allows internal teams to focus less on managing infrastructure and more on the differentiated tasks related to building applications and creating value for the customer. Not only does this free up engineering resources to work on higher-value tasks, the cloud provider services include baked-in best practices that help organizations avoid the configuration or architectural mistakes that can cause costs to skyrocket.
Don’t lose hope
Just because an application running on Kubernetes is more expensive than expected doesn’t mean that the organization just has to live with the costs forever. Cloud costs are something that organizations can continually optimize. There’s where something like CloudZero’s Kubernetes cost monitoring comes in. Without detailed insights into how different factors influence cloud costs, organizations can’t make incremental changes that will keep costs under control and can’t track which parts of the application cost the most.
Even without deep Kubernetes expertise, organizations can continually work on aligning their cloud spend with their business priorities. With the right tools and a dedication to continual improvement, Kubernetes can lead to lower cloud costs.
Learn More About CloudZero
CloudZero is the first real-time cloud cost platform designed specifically for engineering and DevOps teams.