There is a continuous growth of Kubernetes since its first release 6 years ago. Kubernetes is a rapidly developing open source project, is targeted to resolve the problems of Microservices applications that use containers or Dockers. Various cloud companies are providing Kubernetes implementation over their infrastructure. To ensure the safety and consistency over the Kubernetes offerings, CNCF notes the 90 offerings for Kubernetes. CNFC has 3 core tenets to focus on,
1) Consistency: It ensures consistent user interaction.
2) Timely updates: Regular updates from Kubernetes vendors to make sure the clients get the latest features of Kubernetes.
3) Confirmability: Verifying the conformability by ensuring by running the running Sonobuoy an open-source conformance application.
These are the basic guidelines for the cloud providers but the cloud providers have a large ecosystem supporting many features of Kubernetes.
In this article DevSamurai Vietnam will compare the fastest growing and managing cloud providers:
- Amazon’s Elastic Kubernetes Service (EKS)
- Microsoft’s Azure Kubernetes Service (AKS)
- Google’s Kubernetes Engine (GKE)
- IBM Cloud Kubernetes services.
Starting from supported versions, to the security and Add-ons we will compare all the information for all these Kubernetes providers side-by-side.
1. Supported Version:
All the cloud provides support for the latest versions, and update them regularly, but AKS is quicker to new versions along with the support of patches. AKS’s well-planned move to migrate customers from existing versions to the latest versions helps clients for smoother migrations. GKE supports the 1.17 to 1.14 along with 4 minor versions, where EKS supports 1.15 as default Kubernetes versions.
2. Upgrade and maintenance:
While you select the cloud providers, one concern is of upgrading the control plane and worker nodes. GKE automatically updates the worker nodes and control planes along with detecting and fixing unhealthy nodes. But EKS and AKS are fully manual. This increases the burden on the developers. IKS gives both the option, manual and automated to update the plane.
Autoscaling enables the application to scale-up and scale-down as required.
EKS, GKE enables the cluster auto-scaling and vertical pod autoscaling whereas AKS fails to provide vertical pod autoscaling. IKS requires external scripts to automate the scaling process.
|Autoscaling||Google Kubernetes Engine – GKE||Amazon Elastic Kubernetes Service – EKS||Azure Kubernetes Service-AKS||IBM Cloud Kubernetes Service – IKS|
|Cluster Autoscaling||Yes||Yes||Yes||Additional scripts|
|Autoscaling Profile||Balanced and Optimize Utilization||Balanced and Optimize Utilization||Balanced and Optimize Utilization|
|Vertical Pod Autoscaling||Yes||Yes||No|
Encryption secrets provided by GKS, AKS, IKS, etc are used their Keyvalue or key pair provided by a particular cloud provider. The key for encryption is configurable, and all provide the network policy support. By default, all the Kubernetes service provides are providing the network policy support, whereas it can be enabled when the clusters are created and cannot enable network policy on existing AKS clusters.
|Security||Google Kubernetes Engine – GKE||Amazon Elastic Kubernetes Service – EKS||Azure Kubernetes Service-AKS||IBM Cloud Kubernetes Service – IKS|
|Encryption||AWS KMS||Azure KMS (KeyVault)||Azure KMS (KeyVault)||IBM Key Protect|
|Key for encryption||Configurable||Managed by EKS||Managed by AKS||Configurable|
|Network policy support||Yes (Calico)||Yes ( Calico)||Yes (Azure, Calico)||Yes (Calico)|
5. Service Level Agreement:
It’s good to check the SLA’s before deciding on the Kubernetes provider. GKE and EKS go very similar to support financially backed SLA, whereas for AKS you need to opt-in. SLA’s provided by EKS, AKS is 99.95%, and 99.5% zonal and regional respectively.
|Availability||Google Kubernetes Engine – GKE||Amazon Elastic Kubernetes Service – EKS||Azure Kubernetes Service-AKS||IBM Cloud Kubernetes Service – IKS|
|SLAs||99.5% (zonal), 99.95% (regional)||99.95%||99.95% (with azure), 99.9% (without azure)||99.9% (single-zone region), 99.99% (multi-zone region)|
|Financially backed SLA||Yes||Yes||Opt-in|
|Multizone Clusters||Yes||Needs help||Yes|
Ubuntu / Linux is mostly the preferred OS for developers but many work on windows servers. Here is the table which describes the preferred OS system for cloud provides.
|Nodes||Google Kubernetes Engine – GKE||Amazon Elastic Kubernetes Service – EKS||Azure Kubernetes Service-AKS||IBM Cloud Kubernetes Service – IKS|
|Container runtime||Docker, containerd||Docker||Docker||containerd|
|Container Networking||Cilium , Native GKE CNI||Amazon VPC CNI||Kubernetes Azure CNI||Calico|
|Bare metal nodes support||No||Yes||No||Yes|
|TPU nodes||Yes||No||No||Additional work|
|Node Auto-repair||Yes||No||Yes||Additional work|
Since Docker is mostly expected as a container runtime, we are very eager to know the action of these provides as Kubernetes will deprecate the Docker.
7. Relative service:
It’s good to know if they provide support relative services like container registry, service mesh, Knatives, etc. Having these supportive features with Kubernetes enables the faster development of projects.
|Related Service||Google Kubernetes Engine – GKE||Amazon Elastic Kubernetes Service – EKS||Azure Kubernetes Service-AKS||IBM Cloud Kubernetes Service – IKS|
|Service Mesh||Beta version||Yes||Needs script||No|
In comparison to all these 4 Kubernetes cloud providers, GKE and AKS are leading in providing preview and access to the new Kubernetes releases. All of the providers the recent features of Windows containers and GPUs.
Features of managed cloud service Kubernetes
1) Integration with additional services: Managed cloud provider needs to integrate with cloud services. Services like storage, networking, maintenance and monitoring, load-balancing, and traffic management.
2) Scalability: Automated scaling by providing the resources is vital for the success of Kubernetes applications.
3) Fault Tolerance: Kubernetes is highly fault-tolerant. Manage cloud services may have issues with fault tolerance.
4) Feature Support: Some Kubernetes features may not be supported in specific OS.
The data in this article come from the official site of Kubernetes. While you select the provider, it’s good to compare the pricing as it could depend on regions, sample cluster size, and workload. Compare the performance difference between the providers, including the features like logging, private network, and container image scanning. Some of these features may include an additional cost.
To get accurate pricing, test the service features with the stack you would be working on. This will give you accurate pricing and performance data for your projects.