There has been a great push for containerization in the past couple of years. We can’t say that the trend is unexpected, considering how much microservices are sought after as companies started to move away from their monolithic architectures.
This demand has led to the creation of various container orchestration tools, and we’ve seen Docker Swarm and Marathon enjoying some decent adoptance. But ultimately, it was Google’s Kubernetes that took everything to a whole new level.
During this whole period, Amazon’s public cloud had its own container solution (and a very decent one if we may add – ECS), and while you could self-host Kubernetes on AWS, there was no managed service being offered like the ones found on Google Cloud Engine and Microsoft Azure. This changed with the introduction of Amazon Elastic Kubernetes Service – EKS.
In this article, we’ll compare EKS with a self-hosted solution, so that you can decide which one is a better fit for you and your company if you choose to run Kubernetes in the cloud.
Self-hosting Kubernetes – is it for you?
To self-host a Kubernetes cluster means that you will be opting for a completely unmanaged solution. This translates to deploying a cluster (usually utilizing tools like kops), but also patching and maintaining everything yourself. This includes both the control plane (consisting of the kube apiserver, etcd key-value store, kube scheduler, etc) and the worker nodes that will be running containers.
This creates a fairly large overhead for the company and dictates the need for some skilled people to work on your Kubernetes solution. This would typically be the DevOps team, though it’s not completely uncommon for smaller companies (especially startups with very few people on board) to run this solution with only one or two people. Also, depending on your actual Kubernetes requirements, the resources needed for running it can vary considerably, which will in turn be reflected in the cost.
On the other hand, if you do decide to go this route, there are certainly benefits to be gained. A self-hosted solution will allow you to tap into the full potential of Kubernetes, with no restrictions and all the features available to you. As soon as a new version is out, you’ll be able to upgrade. This is in complete contrast with EKS, so let’s take a look at what this other option can provide.
What is EKS and why you might prefer it
EKS is Amazon’s service designed to simplify the use of Kubernetes. What Amazon did was take the control plane of Kubernetes and present it as a fully managed service. So instead of having to deploy and maintain it yourself, you can now have the entire infrastructure (spanning multiple Availability Zones for high availability) deployed very quickly – whether you decide to do the work by hand or use a wrapper tool like eksctl.
In case something fails, AWS will take care of it for you, without you even knowing the issue was there in the first place. You’ll still have to manage the worker nodes yourself though.
Relying on this managed solution completely removes the control plane maintenance overhead and is one of the biggest selling points for EKS, so if you want to utilize Kubernetes on AWS somewhat quickly or if you don’t have the time or resources to manage a fully self-hosted solution, look no further.
Additionally, EKS being an AWS service means that is is natively integrated with other services. This means that you can log all actions for your EKS using CloudTrail, easily deploy your worker nodes in an autoscaling group or use IAM for creating fine-grained access.
The weakest point of EKS is that it is lagging behind, both in terms of functionality and available versions. For example, Amazon only just recently added the private endpoints feature, and EKS was initially released without the horizontal pod autoscaler, which was very much desired.
In addition, EKS only supports Kubernetes version 1.13 at the moment (with 1.12 being the only supported version until a few months ago), while Kubernetes 1.15 is already out. So if you decide to go with EKS, don’t expect to be up to date.
The cost of EKS is $150 per month. This only covers the control plane. You’ll have to pay extra for the worker nodes. The right decision, especially in terms of whether the cost of running a control plane would be higher with a self-hosted solution, depends entirely on your specific needs and usage.
Summary
If you need containerization, Kubernetes is what you want to use. Thanks to the introduction of EKS, you no longer have only one, potentially complex option for running it on AWS cloud. This of course doesn’t mean that EKS should be the default choice, as there are many who still prefer the flexibility of the self-hosted solution. Still, having a quick and easy access to powerful tools via the managed service is why we like AWS in the first place. Either way, be thorough in your research to make sure you choose the option that’s the best fit for your company.