Karl Robinson
June 12, 2020
Karl is CEO and Co-Founder of Logicata – he’s an AWS Community Builder in the Cloud Operations category, and AWS Certified to Solutions Architect Professional level. Knowledgeable, informal, and approachable, Karl has founded, grown, and sold internet and cloud-hosting companies.
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.
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.
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.
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?
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 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 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)
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:
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?
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.
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.