BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
Managed Kubernetes services offer significant benefits, including the ability to offload management and deployment...
overhead to a cloud provider. But as the last of the big three public cloud vendors to offer a managed Kubernetes service, AWS faces stiff competition.
Given that Amazon Elastic Container Service for Kubernetes (EKS) has only recently become available, many enterprises still need to wrap their heads around the offering -- and, more specifically, EKS' pricing model. We're here to help.
EKS pricing basics
Amazon EKS splits management responsibility between the cluster control plane and worker nodes; AWS deploys and runs the former, and users handle the latter.
Unlike some managed Kubernetes services, EKS automatically creates a highly available cluster with control plane nodes dispersed across three availability zones. The service also manages Kubernetes upgrades and patches, and automatically detects and replaces unhealthy control plane nodes. Upon cluster creation, users must provision worker nodes as EC2 instances and connect them to the EKS endpoint.
It's important to grasp these basics, as they are critical to understanding the EKS pricing model, which is as follows:
- Control plane: $0.20 per hour of use, per cluster; and
- Worker nodes: Standard EC2 pricing, whether using On-Demand or Reserved Instances (RI) -- likewise, standard pricing applies for any other Amazon services consumed, such as Elastic Block Store volumes used in the cluster.
Remember that, with Kubernetes namespaces, you can create virtual clusters to define access controls and security policies. This enables you to host multiple applications from a single cluster. And, where AWS limits accounts to three EKS clusters, sharing between applications is expected.
While documentation doesn't yet specify the maximum size of an EKS cluster, it's likely comparable to Elastic Container Service, AWS' proprietary cluster management service. This would yield a maximum of 1,000 nodes per cluster, which would enable applications with massive resource demands to coexist.
Walk through a pricing example
Let's illustrate EKS' pricing model with a simple example for a 12-node cluster. This model uses four variations with two different instance sizes for the worker nodes and calculates both On-Demand and three-year RI pricing with no prepayment. Also, keep in mind that this example assumes the cluster operates all year long and thus would enjoy a substantial discount of between 42% and 51% by using RIs.
Realistically, the above containerized workload would assume more sporadic usage, in which the cluster only deploys when needed and automatically scales up and down. RIs are much less valuable in this situation. To perform a cost estimate for this type of dynamic workload, prorate the numbers above by the average number of hours per week and average number of nodes per cluster.
For example, if the average cluster size is 10, instead of 12, and only operates 80 hours a week, not 168, the annual cost for an m5.xlarge On-Demand cluster would be $8,699.61 -- less than half of the above price.
Compare against the competition
It gets dicey when you try to compare prices across the big three cloud providers, as they all use different billing models and instance sizes. That said, we can calculate the annual costs for similarly sized Kubernetes clusters on Azure Kubernetes Service (AKS) and Google Kubernetes Engine (GKE). Unlike EKS, neither of these services charges for cluster infrastructure. Instead, they roll the overhead of cluster management into the cost of each worker node.
We've chosen comparable instances among the cloud providers, but the sizes aren't exactly identical. For Azure, we cite both on-demand and three-year reserved pricing. In contrast, Google Cloud Platform (GCP) automatically builds sustained use discounts into persistent workloads, which is reflected in the on-demand pricing. For the three-year reserved price comparison, we used a 57% committed use discount for Google instances. In all three cases, we assume clusters operate continuously for a full year.
GKE is substantially less expensive than either of its competitors, not only due to its basic rates for VM instances, but also for its automatically applied sustained use discounts. However, keep in mind the various implementation differences, notably EKS' high availability, which would increase the cost for other cloud providers when you apply an equivalent configuration.
While EKS might not be the cheapest option, it provides tight integration with other Amazon cloud services and works with existing Virtual Private Cloud networks, as well as Identity and Access Management security policies. And, of course, EKS pricing could decrease significantly over time.