Managed Kubernetes is experiencing massive growth in adoption. Organizations are moving their self-managed Kubernetes clusters to make way for more manageable business applications. Cloud vendors like Microsoft and Amazon have already been reporting double digits growth with Amazon Kubernetes Service (AKS) and Elastic Kubernetes Service (EKS). These managed Kubernetes services have been steadily gaining ground at the expense of DIY and cloud-hosted Kubernetes. Yet Amazon EC2 and self-managed remain a preferred way to Kubernetes adoption although they are losing market share.
Amazon’s AWS has a controlling stake in the managed Kubernetes market, controlling over 40% of the market according to Stackrox. Amazon seems to be converting many of its EC2 customers to Elastic Kubernetes Service.
Microsoft, being a major enterprise player, is shifting a lot of its Azure Kubernetes deployments to Azure Kubernetes Services. As an operator of a legacy operating system, a move to Kubernetes is a great direction for its customers pursuing app modernization. Microsoft is a great beneficiary of this change in the status quo. However, its market share isn’t growing as fast as the competition. Azure Kubernetes Service (AKS) is facing stiff competition from Google Kubernetes Engine for the second position.
Azure Kubernetes Service vs Elastic Kubernetes Service
In terms of market share, AKS is no match for EKS. While AKS is fighting an uphill battle with GKE, which has more features, EKS is fortifying its position as a market leader. On the flipside, AKS has a niche user base of Microsoft partners and backers.
EKS is no doubt a superior offering to AKS when it comes to the number of features available out of the box. The extras Amazon offering should woo more users.
Microsoft is adding more features to AKS every day, but there is a wide gap.
If running your application on the latest version of Kubernetes is your priority, then you will be disappointed. The latest stable version of Kubernetes AKS and EKS run is v1.16 (in addition to v1.15 & v 1.14). If you want to test your application with the latest versions of Kubernetes, then you are better off with AKS as it supports Kubernetes v1.17 and v1.18 under preview.
Microsoft is probably the only major cloud vendor that allows users to test their applications on Kubernetes v1.18.
Amazon, thanks to its vast data centers, provisions better quota limits to EKS customers. Both EKS and AKS allow you to run 100 clusters per region and 100 nodes per node pool. Technically, each cluster has a number of nodes. Nodes are distributed in node pools. Also, each node has a number of pods.
EKS allows 3000 nodes per cluster and AKS allows 1000 nodes per cluster. The node pool is 30 for EKS and restricted to 10 in AKS. EKS allows up to 737 pods per node and AKS allows 250 pods per node.
AKS doesn’t charge anything for the control plane while EKS charges you for every hour on the control plane. As of writing the article, it was 10 cents/hour/control plane.
If cost is your priority, you should reconsider EKS at the moment.
Upgrades and Maintenance
Unlike GKE, EKS and AKS don’t allow automatic upgrades to control plane and worker nodes every time. Users have to push updates manually, which slows down the process.
This information may take some time to absorb. Microsoft’s AKS supports “open source “Ubuntu in addition to Windows Server.
Operating system support on EKS is on another level though. EKS supports Amazon Linux, Ubuntu, Amazon Machine Image (AMI), Windows server and Bring-Your-Own-OS, Bottlerocket OS
Container Runtime and Networking
Docker is a standard container runtime common to GKE and AKS. Containers are missing in both offerings, which may affect a small subset of users.
For container networking, EKS has Amazon VPC CNI while AKS has Azure CNI. If you’re after a little more options AKS supports Kubernetes too. Many people prefer Kubenet in a managed environment.
EKS offers support for bare metal nodes. GPU nodes are available on both EKS and AKS while they are missing on both.
Cluster auto-scaling is present in both GKE and AKS. Node auto-repair is only available on AKS
EKS and AKS encrypt data at rest with AWS KMS and Azure KMS respectively. Encryption keys are configurable in EKS. Azure Kubernetes Service, on the other hand, manages the encryption keys for users.
Network policies are supported by Calico in both offerings although AKS also allows network policy through Azure.
When it comes to service level agreements (SLAs), EKS commits to 99.5% uptime and AKS commits to 99.95% uptime with az and 99.9% without az.
Microsoft Azure and Amazon Web Service seldom go down so availability shouldn’t be an issue.
Infrastructure as Code
Terraform is available for both EKS and AKS. Users are likely to choose to Terraform over built-in GCP and AKS provisioning processes all the time. Terraform’s added benefits such as unified workflow, full lifecycle management, and graph of relationships are eye-catching.
Compliance and Standards
When it comes to compliance and standards, EKS and AKS support most of them. They support HIPAA, SOC, ISO, and PCI DSS. Kubernetes certification support is present on EKS and AKS.
AKS and EKS are two of the most popular offerings when making a move to manage Kubernetes. EKS has a definitive edge with a number of additional features. AKS is a little lackluster offering that is abiding by market demands to keep up with the competition.
But at the end of the day, the choice comes down to the specific needs of your development team.
AKS, losing ground to GCE for the second spot, has many missing features to add. The gap between AKS and EKS may have narrowed a while but AKS has a long way to go.
Both AKS and EKS have a niche audience. AKS is preferred by organizations invested in Microsoft technologies. EKS on the other hand is the first choice of cloud-first organizations that already have substantial cloud interests in AWS (and EC2).
Nevertheless, the CloudPlex platform supports both these managed Kubernetes services from Amazon and Microsoft.