Nearly every major Cloud Provider offers their Managed Kubernetes Service. And it can get quite difficult to choose which one is the best. In this article I have tried to show the differences between Managed Kubernetes Service offering of the three major cloud providers, Google Kubernetes Engine(GKE), Azure Kubernetes Service(AKS) and Amazon Elastic Container Service for Kubernetes(EKS).
TL;DR: Jump to the end of the article.
Managed Control Plane
What is Managed Control Plane? Cloud Provider runs the Kubernetes management infrastructure for you, automatically detects and replaces unhealthy control plane nodes, and provides on-demand upgrades and patching. In other words, all the master components(api-server, scheduler, controller manager, etcd) are taken care by the Cloud Provider. You just bring in your worker nodes and connect to the control plane.
Pricing: The first and foremost is that GKE and AKS Control Plane comes free of cost, you do not pay anything for it. But, you get charged $0.20 per hour for each EKS Cluster that you have.
Availability: GKE is supported worldwide. But, AKS and EKS are still not supported in every region, it may take them a while for their managed kubernetes offering to be available in every region.
Cluster Creation Time: When it comes to provisioning a cluster, GKE takes around 3-4 mins while AKS takes around 7-10 mins and EKS takes around 15 mins.
Node Pools: Node Pool is a set of instances within a cluster that all have the same configuration. For Example: You can create a node pool of high memory instances and a separate node pool of high CPU instances. GKE and EKS support Node Pools whereas AKS doesn’t, it’s still under development.
Maximum Nodes per cluster: The maximum number of nodes that you can have in a GKE cluster is 5000, whereas in AKS it’s 100 and for EKS I don’t have an official number.
Maximum Pods per node: In GKE and AKS the maximum number of pods that you can schedule on a worker node is 110. But, in EKS it’s limited by the ENI.
Node Auto Repair: It’s a feature that helps you keep the nodes in your cluster in a healthy, running state. When enabled, Kubernetes makes periodic checks on the health state of each node in your cluster. If a node fails consecutive health checks over an extended time period, Kubernetes initiates a repair process for that node. This feature is only supported by GKE and not by any other Cloud Provider. Learn more.
Bare Metal Nodes: This feature is only supported by EKS and not by GKE or AKS. Learn more about bare metal nodes.
Autoscaling: In GKE you can setup Cluster Autoscaling at the time of provisioning the cluster based on metrics like CPU. But in EKS and AKS (Under Development) you have to configure your own Cluster Autoscaler by deploying it inside your cluster as a Pod.
The below image provides many more differences. Wherever you encounter N/A, it means that there is no information available.
If you ask me, I would say GKE is clearly offering many features that are not present in AKS or EKS and it’s obvious as well because Kubernetes is their own home grown project and if you see the release date of GKE and the other two you can clearly conclude that GKE got the headstart and it is onw of the reasons why they are first in this race. But, based on your use-cases or requirements you can choose any one of them.
Feel free to let me know in the comments section if you found out anything new that needs to be added in the above table.