The hidden costs behind setting up your own Kubernetes clustersNarendran Muraleedharan
Narendran Muraleedharan
narendran.m@aptusai.com
Published on Mon Mar 01 2021

Kubernetes, or K8s is an open-source production-grade container orchestration platform maintained by the Cloud Native Computing Foundation that supports automated container deployment, scaling, and management.

Containers are the way of the future

The concept of using containers to deploy isolated processes and applications for scalability has been around for over 20 years. However, it was when Docker open sourced its container engine in 2013 setting the industry standard for scalable production cloud deployments.

Docker containers allows you to deploy your applications in a lightweight, isolated environment that can scale horizontally or vertically. Since then, companies have been making the switch from their direct server deployments and virtual machines to containers.

Containerizing your applications provides a whole host of benefits including speed, fault tolerance, agility, efficiency, ease of management, scalability, portability, and security.

Container Orchestration Platforms

Kubernetes is a container orchestration platform that lets you manually configure your cloud infrastructure and container deployments. Once you package and distribute your application with a containerization system like Docker, Kubernetes then allows you to run, monitor, and scale your application.

Kubernetes has been getting a lot of attention recently with Google Cloud, AWS, and Azure all providing their own Kubernetes Engines. "Small" service fees to the providers give you access to custom configuration of Kubernetes Pods, load balancing, load-based scaling, and other solutions.

However behind the open-source veil, hides a whole host of complexities and unforeseen costs in properly deploying and configuring a Kubernetes cluster. Let me give it to you straight. Kubernetes is not simple. It generally requires experienced DevOps engineers and cloud architects who understand its capabilities and configuration utilities to architect your cloud deployments.

So how much does it cost?

Well, this really depends on your specific application. Are you deploying a simple app with just a database, API, front-end, and some background processes? Or do you manage an enterprise system with many micro-services, release management, compliance systems, and advanced security features? There are a lot of intricacies and domain-specific questions to be answered.

We talked to a lot of companies and did some research on the costs of setting up and maintaining your own enterprise Kubernetes cluster. Here is a rough breakdown:

Initial Deployment & Configuration

This step involves developing or customizing the Kubernetes cluster IAC (Infrastructure as Code). The IAC then needs to be modified and tested for your specific infrastructure. This can take around 2 man-months.

Infrastructure Visibility

Your containers need to be visible to your pods, your pods to your nodes, and your nodes to your cloud infrastructure. This also involves maintenance of a Kubernetes System of Record. This can take an additional 2 man-months.

Cluster Security

Security is an important component of any production-grade deployment. Setting up access control roles and policies for namespaces, depending on the specific application needs, can take another man-month.

Load Balancing

Load balancing is an important component of any cloud deployment that attends to how public access to your applications are distributed to your workloads and containers. This can take a man-month to configure properly.

High Availability and Fault Tolerance

Especially for enterprise companies, you want to make sure your systems are highly available - this means that backups and replica sets are made, recovery in case of a primary cluster failure is considered, and multiple regions are available to handle requests in case of failures. This can take up to 3 man-months to configure and perform in-depth testing.

Multi-cloud Support

If you want to use on-prem servers along with cloud service providers like AWS, GCP, or Azure to minimize your single point of failure risk, it can be an additional 2 man-months of work.

Dynamic Load-based Scaling

To support production scaling and to lower your cloud costs you may want, at minimum ,a load-based responsive scaling solution. Setting up dynamic scaling for your cloud applications require careful monitoring, profiling, and testing with different loads. This can take up to a whole man-month to set up properly.

DevOps Pipelines

Your developers need to keep working on your applications to improve them. They need Continuous Integration/Continuous Delivery (CI/CD) pipelines to streamline their processes. This can take an additional man-month to set up.

Infrastructure Monitoring Setup

Once your cluster is deployed, you need to monitor it. In order to do that, you need to properly set up your monitoring tools. This involves node monitoring, OS monitoring, storage monitoring, network monitoring, and load balancer monitoring. Properly configuring these and routing the data pipelines can take another 2 man-months.

Cluster Cost Monitoring & Optimization

Once deployed, you will need to run pilots of your applications for short periods of time to understand the cloud costs. This can let you further optimize your cluster to drop the costs. This can take up to 2 more man-months.

Maintenance and Upgrades

Finally, you think you're done... But wait, there's more! Kubernetes with all its components and your behemoth of an architecture may have minor issues. You have updates to push. Kubernetes updates are very fast paced and your system needs to stay on top of this. This requires a DevOps team of at least 3-4 FTE engineers to perform this ongoing maintenance and updates. And DevOps engineers are not cheap!

You can expect to pay anywhere from $150- $250 per hour for good DevOps consulting services or between $250,000 to $400,000 in annual salary, benefits, and other compensation for full-time senior DevOps engineers.

This puts the initial configuration cost at around $600,000 and approximately $140,000 per month in ongoing consulting and maintenance costs. You could also spend a lot more of your time or hire expensive recruiters to find and build your strong DevOps team that you would be paying between $750,000* and 1.6 million annually for.

The light at the end of the tunnel...

We had this problem when we first started. We develop revolutionary AI-powered cloud solutions for our customers and partners and ran into the expensive and time-consuming cloud container configuration process.

That's when we found Cycle.io, and we've been using them ever since! Here's an article I wrote in May, 2020 talking about how we use Cycle.

Cycle is great for setting up your core highly-available clusters, infrastructure, environments, and containers. Whether you want to host your self-managed databases, web applications, or API servers, Cycle.io is extremely easy to use and has a great team supporting it.

Most of our projects involve heavy computing (artificial intelligence training, deployments, complex algorithmic workloads and more!) - and renting cloud fixed infrastructure can get quite expensive. We are all about efficiency and only paying for what you need. That's why we created Stratum.

AI-powered dynamic scaling for workloads

We created a powerful data-driven real-time predictive and responsive scaling algorithm that estimates the server resources your application needs ahead of time. Stratum doesn't just scale up when your load goes up or scale down when your app is idle. It predicts what you need ahead of time to close that gap during scaling time.

Unlike Kubernetes' scaling, it doesn't just scale your pods or containers - it scales your actual infrastructure. It provisions servers when you need and shuts them down when you don't. Stratum has been shown to save customers 30-80% of their monthly cloud bill!

Stratum can host your web applications too, but is especially great for heavy workloads and functions-like applications. Whether it be machine learning model servers or transaction processors, or workers/bots to process bulk data through background processes, you can deploy them to Stratum.

KISS - Keep It Simple Stupid

Stratum wasn't just designed to save companies their cloud compute costs. It was also developed to close the gap between developers and production deployments. We didn't want to spend hundreds of thousands of dollars in configuring complex clusters and infrastructure, so that is one of the core aspects that drives Stratum.

Stratum is very easy to use. Install the Stratum Command Line Interface (CLI) and get your application deployed and automatically monitored, managed, and scaled on Stratum with a few short commands. You can also use the Stratum web portal to import your containers straight from Docker Hub or a privately hosted Docker Registry.

Cycle.io + Stratum

Stratum's key competitive advantage is hosting and managing compute workloads. Cycle.io is great at managing your core highly-available infrastructure, DNS, databases, and stable, static resource components.

For instance, Stax.ai is an intelligent Business Administrative Operations (BAO) platform that we developed. The Stax.ai domain and DNS records managed on Cycle.io. Its core database, search engine, marketing website, web portal, and API are hosted using Cycle.io.

All of Stax.ai's AI runs on Stratum. It has document readers, data extractors, document stack classifiers and multiple Tensorflow model servers on Stratum. Additionally, Stax.ai's automate modules are hosted on Stratum as well. Stratum Tasks are a way to deploy function-like microservices which can scale down to 0 instances when not needed while never losing jobs in a queue!

Using Stratum has dropped Stax.ai's cloud workload/compute costs by 85%!

And of course, we spent less than 2 man-months in total deploying Stax.ai using Cycle.io and Stratum. This is in comparison to around 16 man-months we would have needed to spend for a properly configured Kubernetes deployment.


Interested? We can help you deploy on Stratum and Cycle.io to save you a large chunk of your cloud compute costs plus potentially hundreds of thousands to millions of dollars in Kubernetes configuration and maintenance.

Aptus Engineering, Inc. is a team of engineers, developers, physicists, mathematicians and most importantly - problem solvers. We work as a think tank and venture studio to create products and help founders make their visions a reality!

Contact us now for a FREE business impact assessment.