kubernetes

Kubernetes (K8s) is a prevalent open-source system for automating the deployment, scaling, and management of containerized applications. However, maintaining the service can be difficult and expensive. For that reason, it is easy to find platforms offering Kubernetes as a managed service.

In this article, we will analyze three of the most popular services currently available: Google Kubernetes Engine, Azure Kubernetes Service, and Amazon Elastic Container Service for Kubernetes.

Google Kubernetes Engine (GKE)

Google is the original creator of Kubernetes, so naturally, GKE was the first managed Kubernetes service on the market—and is one of the most advanced solutions currently available.

Azure Kubernetes Service (AKS)

Made generally available in June 2018, AKS is Microsoft’s solution for hosting Kubernetes. Microsoft already has some experience with cluster orchestrators through its older Azure Container Service, which supported not only Kubernetes, but also Apache Mesos and Docker Swarm.

Amazon Elastic Container Service for Kubernetes (Amazon EKS)

Amazon EKS was also made generally available in June 2018. Similar to what Microsoft did with its legacy orchestration service, for a time, AWS tried to encourage users to use its cluster orchestrator platform.

Hosted Services Compared

In this section, we compare key features of the three providers. Following this table, we’ll provide a deeper analysis of each feature.

Feature\Service
Google Kubernetes Engine
Azure Kubernetes Service
Amazon Elastic Container Service for Kubernetes
Currently the Latest K8s Version Is 1.14 (as of the publishing of this article)
1.13.6 – launched May 20, 2019
1.13.5 – launched May 19, 2019
1.12.6 – launched March 28, 2019
CLI Support
Supported
Supported
Supported

Resource Monitoring
Stackdriver (paid with free tier)
Third-party only

Auto-Scaling Nodes
Node Groups

High Availability Clusters
No

Bare Metal Nodes
No
No

Current Version

The actual current version of any of the three platforms will undoubtedly be dated within a few weeks, or even days, of writing this article. Nonetheless, the most vital information is the age of the current version at the moment you want to use it. When comparing the three options, Google Cloud has the most recent release (and that is likely to remain true), followed by Microsoft Azure, and then AWS. Bugs and security issues can be resolved in Google’s version, while with Microsoft Azure (and AWS to some degree), availability can be an issue.

Automatic Update

Again, GKE takes the lead here by providing a fully automated update for the cluster. AKS comes in second, as it allows for just a simple command to upgrade the cluster. Amazon EKS has the most difficult upgrade steps, and the user needs to send some command-line instructions to it, especially when upgrading nodes.

CLI Support

All three providers have support for the kubectl command-line utility. Login commands vary for each provider:

Resource Monitoring

Google Cloud provides its integrated monitoring platform, called Stackdriver, for Kubernetes monitoring. It can monitor the master and nodes, as well as integrate logging and all Kubernetes components inside the platform without any additional user manual steps.

Microsoft Azure provides a combined solution with at least two offerings: You can evaluate the health of each container using Azure Monitor, and can monitor the Kubernetes components using Application Insights. However, there is a catch: To monitor Kubernetes components, you have to configure a service-mesh solution called Istio.

AWS does not provide an integrated monitoring solution. Instead it relies on third-party solutions.

Availability

Google Cloud has the best availability of the three, followed by Microsoft Azure, which will catch up to (and surpass) Google in Q2 2019, when the service becomes available in Latin America and Africa. AWS will fall well behind because it does not offer the service in Latin America, Africa, or Oceania. It is important to note that only Microsoft Azure currently has data centers in Africa.

Node Pools

Node pools allow the cluster to have different kinds of machines for different types of workloads. For example, database systems need more RAM and better disks, while CPU-intensive tasks like machine learning algorithms require a better CPU. With node pools, the user can specify where each service will be deployed in order to use the best resource available.

Google Cloud and AWS have provided node pool support for more than two years. Microsoft Azure, on the other hand, has been missing the feature deadlines necessary to deliver it for a year (April 2018).

Auto-Scaling

One of the most exciting and useful Kubernetes features is its ability to auto-scale up and down nodes so that the cluster will only use resources on demand. That way, users can expect a service that is always available, while stakeholders can expect a cost-effective infrastructure. Auto-scaling can be used together with node pools to finetune resource utilization for specific types of services.

Google Cloud has the most mature solution available on the interface or through the CLI. The user needs to specify the desired VM size and the minimum and maximum number of nodes on the node pool. From there, Google Cloud handles all the remaining steps. As the second most mature, AWS provides auto-scaling with some minor manual configuration. Microsoft Azure, on the other hand, has the feature under preview and will probably deliver it with node-pool functionality sometime in the near future.

High Availability

As the name says, high availability means your cluster will continue to be readily available if something goes wrong. For example, if your services rely on just one data center, and it goes down for some reason, your services will be interrupted.

On each of the three services, the master nodes (which manage Kubernetes) are spread over more than one Availability Zone, which guarantees that the Kubernetes endpoint will be available even if one of the regions becomes unavailable.

That said, only Google Cloud provides full support for high availability for worker nodes. It comes with a cost, of course: at least nine worker nodes are needed to guarantee 99.99% availability.

Role-Based Access Control (RBAC)

RBAC provides a way for admins to dynamically configure policies through K8s API. All of the hosted services evaluated provide RBAC implementations.

Bare Metal Clusters

Virtual machines (VMs), as the name says, are an emulated machine running on top of real hardware. There are many advantages to using this technique for a cloud provider. For example, it can split a very large machine into several smaller units that can then be shared with several clients. Also, machine updates are more accessible, as VMs can be moved from one physical machine to another.

On the other hand, the virtualization layer adds some complexities and hurts the maximum performance possible from the physical, bare metal, and hardware.

Currently, only AWS has bare-metal hardware available.

Popularity and Community

Popularity and community engagement are useful metrics for evaluating how a product performs and will perform in the near future. For example, a more engaged community tends to create more third-party integrations (like frameworks and tools) and to collaborate more with the product itself. Popularity also helps users via Internet forums like Stack Overflow.

Two evaluation methods were chosen for this analysis: Google search popularity over the past two years and the estimated number of questions on Stack Overflow.

Google Search Popularity

community

The graph above illustrates Google search popularity over the last two years. It shows GKE reigned alone AKS and Amazon EKS announced their services almost simultaneously. Since then, GKE has maintained the same level of popularity, while AKS and Amazon EKS have quickly grown in search numbers, with Amazon EKS in the lead. Although our feature comparison section shows Google Cloud has a more mature product, the popularity of the cloud provider itself is strong enough to gain more traction.

Stack Overflow Popularity

Stack Overflow shows an entirely different picture:

Tag
# of Questions
amazon-eks
204
azure-aks
245
google-kubernetes-engine
2,478

While Amazon EKS is most popular in terms of Google searches, it has the fewest number of questions on Stack Overflow. At the same time, GKE has the lowest search numbers, but a much higher number of questions.

One possible conclusion: Google Cloud has the most significant user base, but AWS’s sheer size makes it likely to be more interesting for users in the future. Over the next few years, it will be interesting to see if AKS and Amazon EKS will increase their question numbers, signaling that the user base has grown.

Pricing Structure

GKE and AKS provide cluster management for free: Master node management and machines running it are not billed. You pay only for what you run, like virtual machines, bandwidth, storage, and services.

Amazon EKS, on the other hand, costs $0.20 per hour for each deployed cluster, in addition to all the other services you will need. In a 30-day month, that comes out to a $144 extra. Keep in mind that AWS bills even for testing and staging cluster environments.

Conclusion

After establishing itself as the most popular container orchestrator service available, and becoming the de-facto solution for cluster management, Kubernetes has continued to gain popularity by making it easy to deploy on a PaaS solution.

Google Cloud, Microsoft Azure, and AWS are some of the most popular cloud providers available. Only a year ago, they started competing to claim the best Kubernetes solution. It is hard to anticipate who will come out on top, but Google has the advantage, as it has the most mature (and cheapest) product. On the other hand, an increasing interest in AKS and Amazon EKS solutions could forecast popularity.

Are you running Kubernetes or a managed K8s service now? Which is your favorite?

Easily monitor, troubleshoot, and secure your Kubernetes clusters with Logz.io.