Kubernetes PaaS Comparison: EKS vs AKS vs GKE

Voiced by Amazon Polly

The world is going crazy for containers and Kubernetes right now. Container adoption is on the rise—according to the Flexera 2020 State of the Cloud report, containers are now mainstream, with 65% of respondents using Docker for containers and 58% using Kubernetes.

Bar graph highlighting the different types of container tools in use

In addition to the significant level of adoption, 51% of respondents said that increasing the use of containers was one of their top cloud initiatives for 2020—in fact, this was the third-ranked cloud initiative after cost optimization and migrating more workloads to the cloud.

Bar graph highlighting the top cloud initiatives for 2020

So clearly containers and Kubernetes are here to stay. But as more and more workloads are migrated to containers, the challenge of managing and orchestrating all of these newly containerized workloads has spawned a battle between tech vendors.  

Lack of resources or expertise was cited as the number one challenge for container use, with lack of service provider expertise and managing containers also holding businesses back.

Bar graph highlighting the most common container challenges

Read the full Flexera 2020 State of the Cloud report.

It seems to me that an obvious answer to many of these challenges is to adopt a Platform as a Service (PaaS) solution for managing containers. As you would expect, the big three public cloud vendors all have an offering:

  • Amazon EKS (Elastic Kubernetes Service)
  • Azure Kubernetes Service
  • Google Kubernetes Engine

So I decided to launch a LinkedIn poll asking the question: Which is your preferred PaaS Kubernetes Orchestration tool? Before we get into the results, let’s take a look at what Kubernetes is and then we’ll unpack each of the service offerings in a bit more detail.

What is Kubernetes?

Kubernetes logo

Originally a Google project, Kubernetes benefited from 15 years of Google experience in running massive production workloads.

The platform was open-sourced in 2014, enabling community input to drive the project forward.

The name ‘Kubernetes’ finds its roots in the Greek language. It means ‘helmsman’ or ‘pilot’ in the nautical sense, hence the ship’s wheel logo.

According to the Kubernetes website, ‘Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation.’

That’s quite a mouthful.

To understand why you need Kubernetes, you must first understand a little about containers.  A container is a standard unit of software that packages up application code, runtime, system tools, system libraries and settings so that the application can run in the same way on any computing infrastructure.

So if a developer works in a container on his or her laptop, that container can be moved to a physical server, virtual machine or public cloud environment without any changes being made to it. This makes deploying apps much faster.

Unlike virtual machines, which split up a server and enable it to run multiple Operating Systems, containers actually split up an Operating System between multiple applications, making both physical and virtual servers even more efficient.

This is due to the fact that each container shares the operating system kernel. Shared parts of the OS are read-only, and each container has its own mount for writing data. So in effect, containers are much more lightweight and consume fewer resources than VMs.

Sounds great—so what’s the catch? Well, while containers are a great way to manage and package applications, you need a way to handle them. If one container fails, you must ensure another one is spun up.

If your application workload increases, you’re going to want to add more containers. This is where Kubernetes comes in. Kubernetes provides:

  • Service discovery and load balancing
  • Storage orchestration
  • Automated rollouts and rollbacks
  • Automatic bin packing
  • Self-healing
  • Secret and configuration management

So now we know a little more about Kubernetes, let’s take a look at the public cloud PaaS offerings.

Amazon Elastic Kubernetes Service (EKS)

Amazon Elastic Kubernetes Service icon

Amazon EKS is a fully managed Kubernetes service that makes it easy for AWS customers to run Kubernetes on AWS without having to install, operate, and maintain their own Kubernetes control plane.

EKS was released for general availability in June 2018.

Any apps running on Kubernetes can run on EKS. EKS customers can also elect to integrate with Fargate, which is a serverless compute orchestration tool for containers. Fargate removes the need to provision and manage compute instances on which to run containerized workloads.

The EKS control plane is both scalable and highly available, running across three AWS availability zones.

Amazon EKS supports both Windows and Linux worker nodes and containers. AKS integrates with CloudTrail and CloudWatch for logging and monitoring.

Amazon EKS is priced at $0.10 per hour for each Amazon EKS cluster—a single cluster can be used to run multiple applications by segregating with Kubernetes namespaces and IAM security policies.

You then pay for any EC2 instance or Fargate-managed compute resources created to run your Kubernetes worker nodes. Amazon PaaS offerings, such as RDS and ElastiCache, can also be used in conjunction with EKS for managing databases and caching services, respectively.

Azure Kubernetes Service (AKS)

Azure Kubernetes Service AKS icon

Azure Kubernetes Service is the Microsoft fully managed serverless Kubernetes offering. AKS enables elastic provisioning of capacity without the need to manage the underlying infrastructure. 

Event-driven autoscaling and triggers can be added to the open-source KEDA project. AKS was also released for general availability in June 2018.

Microsoft claims a faster end-to-end development experience through integration with Azure Dev Spaces, including integration with Visual Studio Code Kubernetes tools, Azure DevOps and Azure Monitor.

Microsoft also claims that AKS is available in more regions than any other cloud service provider offering. However, I have not validated this claim.

Unlike AWS, Microsoft does not charge at all for AKS—they only charge for the underlying virtual machine instances, storage and network resources consumed by the Kubernetes cluster.

Google Kubernetes Engine (GKE)

Google Kubernetes Engine GKE icon

Finally, Google Kubernetes Engine (GKE) is the fully managed Kubernetes service on the Google Cloud Platform (GCP). GKE offers secured and managed Kubernetes with four-way autoscaling and multi-cluster support.

GKE was released for general availability in August 2015.

Google, as the inventor of Site Reliability Engineering (SRE), cite this as a feature of the GKE service.

Much like AWS and Azure, GKE enables enterprise-ready container solutions with pre-built deployment templates, Kubernetes pod and cluster autoscaling and workload and network security.

GKE is also priced at $0.10 per cluster per hour unless clusters are managed by Google Anthos, in which case no management fee is charged. Much like AWS and Azure, any worker nodes are billed as Google Compute Engine resources.

Logicata Kubernetes Poll Results

So let’s take a look at the results of my poll:

Kubernetes PaaS Comparison poll comparing EKS vs AKS vs GKE

We can see that Amazon EKS is the clear favourite with 47% of the vote. Could this be due to the winning combination of EKS and Fargate, offering the most compelling and cost-effective serverless Kubernetes solution?

Winners' podium with three trophy icons in flat style

 

Coming a close second is Google Kubernetes Engine with 34% of the vote. It’s no surprise for Google to be doing very well in this space, considering that Kubernetes was originally a Google project.

Google also attracted the best comments in the poll, with respondents stating that GKE just works and that using GKE is a serene experience—high praise indeed.

Yet despite a three-year head start, Amazon has still stolen the lion’s share of this market, no doubt due to its dominant overall market share position.

Despite holding the second position in terms of overall public cloud market share, Microsoft didn’t fare as well in this poll, coming in third (or last, depending on how you look at it).

But this is reflective of the relative usage between the three PaaS offerings, as evidenced in this 2019 survey by the Cloud Native Computing Foundation, which puts AKS and GKE as the top two services actually in use.

Bar graph highlighting results from the Cloud Native Computing Foundation 2019 survey

So there you have it, Amazon is still the favourite PaaS Kubernetes offering. Watch this space to see if they can hold onto that title!  If you would like help deploying or managing EKS, check out our AWS Managed Services page and reach out to us for a chat.

You Might Be Also Interested In These...

Babita Sharma

UK Tech Awards 2019

Last night I once again had the pleasure of being invited to the annual UK Tech Awards ceremony at the Park Plaza Westminster Hotel in London.  The event is a gathering of the brightest companies in the UK technology industry, together with their investors and advisors.  The event is sponsored by PWC and Silicon Valley […]

View Post
Data storage archive concept

What is AWS Database Migration Service?

AWS Database Migration Service is a simple and cost effective way to migrate live, petabyte scale databases both into and out of the AWS Cloud with virtually no downtime. Those databases could be hosted on premise, already in the AWS cloud, or in another cloud.

View Post
AWS Lambda Logo

AWS Lambda Use Cases: When You Should Use It?

Lambda, and Serverless in general, is rather “in” right now in the world of cloud computing. So, how much of the marketing spiel should you listen to – how do you know when to use Lambda?

View Post
ebook featured image

5 Steps to a Successful

AWS Migration

DOWNLOAD FREE EBOOK