When should you use kOps over EKS?

In this post, let's compare two popular ways of operating a Kubernetes cluster on AWS — kOps vs AWS EKS.

When should you use kOps over EKS?

There are a handful of ways to start a Kubernetes cluster on AWS: use EKS, kOps, do it all manually, Terraform + EKS, and others.

I want to compare two popular options — EKS vs kOps.

What is the difference between kOps & EKS?

If you use EKS, AWS does all the painful setup for you (creating a cluster, managing the control plane node, etc…). Yes, this is the fastest way to start a Kubernetes cluster. To start, you can use eksctl but plan to migrate to Terraform or something similar if you want automated cluster creation.

If you use kOps, you will spend some time manually setting up the cluster yourself and managing the control plane node. The process to set up a cluster is manual, and requires creating a few IAM permissions, S3 buckets, configuration files, etc…

But, which one is cheaper?

Is kOps cheaper than EKS?

Using EKS,

  • You are charged a flat upfront cost for each cluster you create.
  • You are charged for the resources you use, such as compute (EC2 instances) & storage (Amazon EBS volumes) to run the Kubernetes worker nodes. These resources are pay-per-use.

Using kOps,

  • You’re charged for the resources you use, such as compute (EC2 instances) & storage (Amazon EBS volumes) to run the Kubernetes worker nodes. These resources are pay-per-use.

A subtle difference between both is that in kOps since you’re managing your control plane node, you will pay for one more instance than EKS for an identical configuration. EKS also has a control plane node, but it's hidden from the user.

So in simple terms, using kOps, we save the upfront cost of a single EKS cluster and pay extra for a t3.medium EC2 instance. So is kOps cheaper?

Yes. A cluster managed by kOps using 1 control plane node (t3.medium) & 3 t3.medium worker nodes costs around ~ $144/mo.

Whereas an EKS cluster with 3 t3.medium worker nodes costs ~ $181/mo.

Here’s an estimate for an EKS cluster + 3 t3.medium worker nodes.

Note: I’ve ignored EBS usage, data transfer, and detailed monitoring services in both estimates because they will be similar.

So should you use kOps over EKS?

Even though kOps looks cheaper, the true cost of any Kubernetes cluster is mostly accrued towards operating the worker nodes, which often are powerful enough to have 15+ pods per node.

While kOps may appear to be a more cost-effective option initially, the primary expense associated with any Kubernetes cluster lies in the operation of the worker nodes. These worker nodes are typically more powerful than t3.medium and capable of running 15+ pods on a single node.

We will save $37/month by using kOps, but it is a bit of a headache to manually set up a cluster. Plus if you're onboarding a new team member, EKS has a much more lenient learning curve than kOps.

So, most teams prefer to spend the extra money to save a few hours every month.

Okay, so when should you use kOps then?

You should use kOps over EKS in case you're just learning Kubernetes on AWS and don't have a monetization strategy.

If you're a student, kOps is a great way to learn Kubernetes on AWS. I have served as a Teaching Assistant for COMPSCI-122B (Projects in Databases and Web Applications) course. In this course, we wanted the students to get some practical hands-on experience in operating a Kubernetes cluster on multiple nodes in the cloud. So, we used kOps over EKS because the difference in pricing was quite significant if you have 100+ teams of students.