You want to run containers without building and maintaining every part of Kubernetes yourself. Amazon EKS, Azure AKS and Google GKE are managed Kubernetes services: their providers run the cluster's central management components, and offer different ways to manage the machines that run your applications. Your team still deploys the applications, grants their permissions and protects their data.

EKS belongs to AWS, AKS to Microsoft Azure and GKE to Google Cloud. Existing databases, identity systems and network connections often make one the natural starting point. EKS versus AKS versus GKE becomes a useful comparison when you test how your actual application connects to those services, rather than count features across three marketing pages.

Compare the service mode as well as the provider. EKS Auto Mode automates more infrastructure than an EKS setup where you manage those components. GKE offers Standard and Autopilot choices; AKS offers Automatic alongside its other cluster options. The more the service manages, the more closely you must check whether its supported configuration fits your workload.

Check what your application needs from the cloud

Identity, network connectivity, data location, regional availability and organizational support often matter more than a marginal cluster-control-plane price. List required privileged agents, GPUs, storage, network policies, operating-system customization and compliance controls before selecting a mode.

  1. Write a responsibility map for control plane, nodes, add-ons, ingress, certificates, backups and workload upgrades.
  2. Check supported versions, upgrade windows and end-of-support behavior for the chosen region and mode.
  3. Exercise identity, private connectivity, ingress and storage using a representative application.
  4. Test node replacement, application disruption and restoring data to a separate environment.
  5. Estimate cost from the declared workload, including idle capacity, load balancers, disks, egress, observability and operational labor.

Portability is specific

Kubernetes API compatibility does not make IAM roles, load balancer annotations, storage classes or managed databases portable. Identify the provider-specific parts of the application and decide whether that coupling buys enough operational value. A provider feature can be a rational choice even when it makes migration harder.

Use a reversible pilot

Start with one bounded workload and keep source data recoverable. Compare the deployment and incident response experience with the current platform. Do not transfer the only production copy before restore and exit procedures work.

The recovered comparison and first-person cloud reports document earlier service behavior. They are not evidence for today's reliability, pricing or ranking. This update supplies a current decision framework and primary service descriptions, without claiming new multi-cloud benchmarks or a universal cheapest provider.

Which service should you choose?

Start with EKS for applications closely tied to AWS services, AKS for applications already built around Azure, and GKE for applications and data already in Google Cloud. If you can choose freely, run the same small application on the relevant modes and compare upgrades, access, recovery and a realistic monthly bill. Prefer the service your team can run reliably; this guide does not identify a universal performance or price winner.

The original record

Historical Kubedex content

Original publication: 2018-10-09T17:24:45+00:00. Preserved for context. Commands, versions, prices and results below reflect the original research.

Reading Time: 4 minutes

Last Updated on December 29, 2018

There have been many comparisons done between these cloud hosted Kubernetes providers already. However, probably none as honest as this one.

Below is a screenshot of the Google sheet comparing GKE, AKS and EKS. You may notice that some of the cells have comments in already. These comments link to the place I got the information from.

Edit: The spreadsheet now also includes IBM IKS and Alibaba Cloud ACK too.

Historical illustration

If anything is incorrect please add a comment to the sheet or drop me a message below.

This is going to be a brutal comparison and I’m happy to change my mind if somebody can present some factual evidence.

As it stands today I’ve personally used EKS, and AWS in general a lot. I’ve used GKE a bit but only with my own personal credits doing Kubernetes The Hard Way and spinning up a very quick GKE test cluster a while ago. I’d like to use it more but we’re on AWS at work.

Azure is something I’ve avoided since using it for a few months last year. I was working as a Microsoft partner so it was unavoidable back then. Parts of it are alright but the user experience coming from an Amazon background is worlds apart.

I’ll split my recommendation up into a few categories based on scenario.

Greenfield Projects

I’ve been trying to weigh up whether to advise people to review all of the services across Google, AWS and Microsofts clouds. Kubernetes is a single component of a larger system and other factors will come into play. However, there really isn’t much difference between what each cloud offers nowadays.

Marketing teams may claim otherwise but when you look at what most companies need in the way of features they all pretty much have it covered.

So let’s simplify things and say you only want to run Kubernetes. The answer is clear. Go with GKE every time.

Why? It’s cheaper, faster and better in almost every single measurable way than the competition.

You may look at the 3 minutes vs 20 minute cluster creation time and think it’s not a big deal. How many times do you really build a cluster anyway? Well, not very often if they take 20+ minutes and sometimes fail because you will change your entire workflow to fit around it.

If, however, clusters only take 3 minutes to create you will find yourself using disposable test infrastructure and working in an entirely different way.

Networking is the other reason. Google is miles ahead of everyone here. Similar story with HA and scaling.

I won’t call out every row from the spreadsheet as a reason as I think the data speaks for itself.

We’re already locked into AWS

You probably don’t have much of a choice. Kubernetes on its own isn’t reason enough to do a cloud migration.

Hopefully, you’ll see this comparison and know that life could be worse. EKS is still new and the Amazon teams iterate quickly. I doubt Amazon will ever match Google for network speed or VM boot times but your life will still be tolerable.

It would be nice if they could enable the default Admission Controllers on the masters. Also, I have no idea why cluster creation is so slow. I’ve measured cluster build times at work and they always take around 20 minutes to build to the point I can run integration tests on them.

Edit: admission controllers have now been added.

The other annoyance is the lack of worker management. Hopefully the EKS guys can package this up like how GKE does it.

An interesting thing I noticed was that EKS supports i3.metal instances so this is the only Kubernetes solution that supports bare metal workers. This may be useful for some people.

My company is looking at Azure

Again, not really much you can do. My advice is to setup a demo with AKS and GKE and try to convey the developer experience to the decision makers.

Show them how some things on Azure need to be done in a clunky web UI, other things need Powershell and other random stuff uses the CLI. Try to get people to account for the slowness of operations and how that effects the design of DevOps pipelines and automation in general. Yes, you can make it work, but why make life hard for yourself.

It’s possible you’re locked in with something like Active Directory as a requirement which means you’re probably out of luck.

I’m being serious when I say this: if the company I’m working for decided to migrate to Azure I’d find a new job. By the way, this wouldn’t have always been the case. Back in my youth I managed Windows servers, I fixed broken TFS installations and I walked into server rooms and replaced tapes every week.

Nowadays I want to programmatically control infrastructure. It needs to be fast and bug free so that I can build cool automation on top. Working on something like Azure, especially after having worked on AWS for years, would be extremely depressing.

Edit: To quantify exactly how slow and buggy Azure AKS is you may want to read about project Dolos.

Edit: AKS have released an update that reduces cluster create time to less than 10 minutes.

To all of you who are moving from on-premise into Azure it could be a step up in terms of agility so I wish you the best of luck.

So there you have it! This site needed a comparison of Kubernetes options that run in the cloud. My recommendation is go with Google GKE whenever possible. If you’re already on AWS then trial EKS but it doesn’t really give you that much currently. You may be better off looking at Kops or some other cloud installer until they add managed workers and other integrations.

Edit: Evaluating Kubernetes On-Prem options? We now have a comparison blog to cover that too.

Additional Reading

More information about each cloud offering from Kuberiter

Another good comparison although a bit out of date now

The guys at Caylent provide some nice bullet points

Good cost comparison article

Historical workbook values; blanks mean unknown, not No. Prices, versions, maturity labels and feature claims are not current recommendations.

Historical workbook values; blanks mean unknown, not No. Prices, versions, maturity labels and feature claims are not current recommendations.

Kubernetes Cloud Comparison / Comparison (historical)

Historical snapshot

Recovered comparison data. Versions, prices and availability describe the original research, not a current benchmark. Blank or damaged source values are marked unknown.

Choose columns
Visible columns
Kubernetes Cloud Comparison / Comparison (historical)
Feature / source labelGoogle GKEAmazon EKSMicrosoft AKSIBM IKSNotes
Year started (GA)2014.02018.02017.02017.0Google has a 3 year lead on everyone else and it shows!
Kubernetes GA VersionsUnknown (damaged historical cell)Unknown (damaged historical cell)Unknown (damaged historical cell)Unknown (damaged historical cell)Those are automatically scraped from specific URL's which you can find in the corresponding comment.
Regions SupportedWorldwideWorldwideWorldwideWorldwideMicrosoft is missing some regions like South America
Managed Control PlaneYesYesYesYesUnknown
Control Plane HAMulti AZMulti AZNoMulti AZNo control plane HA on AKS is quite bad
Cluster Create Time3 minutes9 mins15 mins15 minsUnknown
Dynamic Admission ControlYesYesYesYesImportant for features like Istio sidecar injection
Multiple Node PoolsYesYesYesYesUnknown
SLA99.95 (regional), 99.5 (zonal)99.9599.95(AzureAZ), 99.999.99(MZRs), 99.90(SingleZone) Unknown
Price10 cents per hour per master20 cents per hour per masterFreeFreeGKE is overall cheapest
CompliancePCI DSS, ISO, SOC, HIPAAHIPAA, PCI, PCI DSS, ISOPCI DSS, ISO, SOC, HIPAACSA, PCI, ISO, SOC, CJIS, DoD DISA, FedRAMP, FFIEC, FISMA, ITAR, FFIEC, HIPAA, HITRUSTUnknown
Kubernetes MarketplaceYesYesYesNoUnknown
IntegrationsGCP EcosystemAWS EcosystemAzure EcosystemIBM EcosystemUnknown
Dev UXGoodOKBadOKAny developer would choose GKE if they trialled all three
On-Premises VersionYes (Anthos On-Prem) YesYesNoUnknown
Managed Worker NodesYesYesYesYesEKS workers are setup with Cloudformation or Terraform
Worker Node HAMulti AZMulti AZMulti AZMulti AZUnknown
Worker Node Live MigrationYesNoNoYesUnknown
Worker Node Container Runtime SupportDocker, ContainerdDockerDockerContainerdUnknown
Worker Node Windows Container SupportYesYesYesNoUnknown
Worker Node GPU SupportYesYesYesYes Unknown
Worker Node TPU SupportYesNoNoNoUnknown
Maximum pods per node110.0Limited by ENI by default110.0110.0Azure CNI can be increased to 110. Be careful on EKS when selecting worker instance type.
Maximum nodes per cluster5000.01000.0100.01000.0Notify EKS team if going above 500 nodes so they can vertically scale control plane
New Worker Node Start time< 2 mins< 5 mins< 10 mins< 5 minsAzure VM starts are slow
Bare metal Worker NodeYesYesNoYesGKE have bare metal in early access
Worker Nodes AutoscalingYesYes (not managed)Yes (preview)YesUnknown
Worker Nodes Auto-provisioningYes NoNoYesUnknown
Kubernetes UpgradesAutomatic or On DemandAutomatic security, On Demand upgradesOn DemandOn DemandOn AWS you can upgrade the masters but then you need to do the workers yourself. AKS upgrades can be problematic.
Control Plane Integrated LoggingYesYesYesYesUnknown
Auto RepairYesNoYesYesUnknown
Application Layer Secret EncryptionYesNoNoYesUnknown
Cross region load balancingYesNoNoYesUnknown
Cross region networkingGlobally flat networkRequires VPC PeeringRequires VPNVRFUnknown
Network Policy SupportYes (Calico, Cilium)Yes (Calico)Yes (Calico, Azure Network Policies*)Yes (Calico)Unknown
Private Cluster Network SupportYesYesYesYesUnknown
Aggregated API SupportYesYesYesYesUnknown
Service BrokerYesYesYesYesUnknown
Container as a Service integrationCloud RunVirtual Kubelet with FargateVirtual Kubelet with ACINoAWS working on Fargate integration with EKS
Vertical Pod AutoscalerYesYesYesNoUnknown
Workload IdentityYes (even via AWS IAM)YesYes (in preview)YesUnknown
Knative SupportYes with CloudRun NoYes Yes (Experimental)Unknown
Services Mesh Network IntegrationYes (Istio cluster add-on) (beta)App MeshNo (in preview)Yes (Istio cluster add-on) Unknown
Services Mesh - Fully managedYes with ASMNoNoYesUnknown
Spot/Preemptibile Worker Nodes supportYes YesYesNoUnknown
Monitoring IntegrationYes (Cloud Monitoring)Yes (Container Insight)Yes Yes (Sysdig)Unknown
Sandbox support? (eg: gVisor)Yes NoNoNoUnknown
Binary Authorization SupportYes NoNoYesUnknown
Intranode Visibility YesNoNoNoUnknown
Proprietary Ingress ControllerYesNoYesYesUnknown
Proprietary Multi-Cluster (global) IngressYesNoNoYesUnknown
Ingress managed SSL CertificateYesNoNoYesUnknown
Release ChannelsYes (stable,regular,rapid)NoNoNoUnknown
Unknown* Azure CNI onlyUnknownUnknownUnknownUnknown

54 rows

Kubernetes Cloud Comparison / Sources (historical)

Historical snapshot

Recovered comparison data. Versions, prices and availability describe the original research, not a current benchmark. Blank or damaged source values are marked unknown.

Choose columns
Visible columns
Kubernetes Cloud Comparison / Sources (historical)
Sources:
Blog: https://kubedex.com/google-gke-vs-microsoft-aks-vs-amazon-eks/
https://resources.kuberiter.com/k8scpcchart
https://blog.hasura.io/gke-vs-aks-vs-eks-411f080640dc
https://caylent.com/kubernetes-managed-service/
https://feedback.azure.com/forums/914020-azure-kubernetes-service-aks
https://docs.microsoft.com/en-us/azure/azure-monitor/insights/container-insights-overview

6 rows

Kubernetes Cloud / Sheet1 (historical)

Historical snapshot

Recovered comparison data. Versions, prices and availability describe the original research, not a current benchmark. Blank or damaged source values are marked unknown.

Choose columns
Visible columns
Kubernetes Cloud / Sheet1 (historical)
Feature / source labelGoogle GKEMicrosoft AKSAmazon EKSAlibaba Cloud ACKNotes
Year started2014.02017.02018.02017.0Unknown
Kubernetes Versions1.10 (1.11 for whitelisted users)1.111.11.11Seems Microsoft AKS keeps most up to date
Regions SupportedWorldwideAlmost WorldwideNorth America and IrelandWorldwideMicrosoft is missing some regions like South America
Managed Control PlaneYesYesYesYesUnknown
Control Plane HAMulti AZNoMulti AZYesNo master HA on AKS is quite bad
Cluster Create Time3 minutes20 mins20 mins4 minsUnknown
Dynamic Admission ControlYesYesNoYesImportant for features like Istio sidecar injection
Multiple Node PoolsYesNoYesYesUnknown
Managed Worker NodesYesYesNoYesEKS workers are setup with Cloudformation or Terraform
Worker Node HAMulti AZMulti AZMulti AZMulti AZUnknown
Worker Node GPU SupportYesYesYesYesUnknown
Maximum pods per node100.0110 (kubenet) or 30 (cni)Limited by ENI100.0Azure CNI can be increased to 110. Be careful on EKS when selecting worker instance type.
Maximum nodes per cluster5000.0100.0500+500.0Notify EKS team if going above 500 nodes so they can vertically scale control plane
New worker start time< 3 mins< 15 mins< 5 mins<3 minsAzure VM starts are slow
Bare metal nodesNoNoYesYesGKE have bare metal in early access
Kubernetes UpgradesAutomatic or On DemandOn DemandNoOn DemandOn AWS you can upgrade the masters but then you need to do the workers yourself. AKS upgrades can be problematic.
Control Plane CostsFreeFree20 cents per hour per masterFreeGKE is overall cheapest
Control Plane Integrated LoggingYesYesNoYesUnknown
CompliancePCI DSS, ISO, SOC, HIPAAPCI DSS, ISO, SOC, HIPAAHIPAAPCI DSS(ongoing)AKS got HIPAA a couple of weeks ago
Auto RepairYesNoNoNoUnknown
Cross region load balancingYesNoUnknownUnknownUnknown
Cross region networkingYesNo (manual config)NoYes(Express Connect)Unknown
Network Policy SupportYes (Calico)Yes (Kube Router)Yes (Calico)Yes(Terway)AKS are working on Calico support
Aggregated API SupportYesYesYesYesUnknown
Service BrokerYesYesYesYesUnknown
Container as a Service integrationNoVirtual Kubelet with ACINoServerless Kubernetes VIrtual Kubelet with ECIAWS working on Fargate integration with EKS
Dev UXGoodPoorMediocreGoodAny developer would choose GKE if they trialled all three
IntegrationsGCP EcosystemAzure EcosystemAWS EcosystemAlibaba EcosystemUnknown
Sources:UnknownUnknownUnknownUnknownUnknown
https://resources.kuberiter.com/k8scpcchartUnknownUnknownUnknownUnknownUnknown
https://blog.hasura.io/gke-vs-aks-vs-eks-411f080640dcUnknownUnknownUnknownUnknownUnknown
https://caylent.com/kubernetes-managed-service/UnknownUnknownUnknownUnknownUnknown
https://feedback.azure.com/forums/914020-azure-kubernetes-service-aksUnknownUnknownUnknownUnknownUnknown

33 rows

Sources & further reading

  1. EKS Auto Mode responsibilities
  2. GKE Autopilot overview
  3. AKS Automatic overview
  4. Recovered historical source (Common Crawl index)
  5. Kubernetes Cloud Comparison: historical workbook
  6. Kubernetes Cloud: historical workbook

Spotted something that needs another look?

Help improve this page →