10

Managed Kubernetes Price Comparison (2020)

 4 years ago
source link: https://devopsdirective.com/posts/2020/03/managed-kubernetes-comparison/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

March 5, 2020

Categories:

Comparison , Pricing

Tags:

Kubernetes , AWS , GCP , Azure , EKS , GKE , AKS

TL;DR:Azure doesn’t charge for the compute resources used for the control plane, making AKS the cheapest for running many, smaller clusters. For running fewer, larger clusters GKE is the most affordable option. Also, running on spot/preemptible/low-priority nodes or long-term committed nodes makes a massive impact across all of the platforms.

k8s-price-graph.png

Table of Contents:

Overview

With Google Cloud’s recent announcement to start charging $0.10/hour for each cluster on GKE, it seemed like a good time to revisit pricing across the major managed Kubernetes offerings.

gke-price-increase.pngThis upset some people on the internet...

This article will focus on:

Cost Breakdown

The cost of running Kubernetes on each of these platforms is based on the following components:

  • Cluster Management Fee
  • Load Balancer (for Ingress)
  • Worker Node Compute Resources (vCPU & Memory)
  • Data Egress
  • Persistent Storage
  • Load Balancer Data Processing

Additionally, the cloud providers offer large discounts if you are willing/able to use preemptible/spot/low-priority nodes OR commit to using the same nodes for 1-3 years.

It is important to point out that while cost is a useful dimension to examine when evaluating providers, there are other factors which should also be considered including:

  • Uptime (Service Level Agreement)
  • Surrounding Cloud Ecosystem
  • k8s Version Availability
  • Documentation/Tooling Quality

Those factors are beyond the scope of this article/exploratory analysis.

Jupyter Notebook

To make it easier to explore the cost tradeoffs I created a Jupyter notebook using plotly + ipywidgets to facilitate rapid exploration of cluster sizes/tradeoffs across the different cloud providers.

You can interact with a live version of that notebook yourself using Binder:

binder.pnghttps://mybinder.org/v2/gh/sidpalas/managed-kubernetes-pricing/master?filepath=%2Fmanaged-kubernetes-price-exploration.ipynb

If any of my calculations or pricing constants look incorrect, please let me know (via a Github Issue or Pull Request! – Github repository )

Takeaways

There are too many variables to give much of a recommendation beyond my TL;DR up top, but here are some takeaways:

  • With the recent GKE change, AKS is now the only (of these 3) that doesn’t charge for the control plane resources. If your architecture incorporates many small clusters (e.g. 1 cluster per developer or per customer ) AKS has an advantage.
  • Google’s slightly cheaper compute resources result in lower cost as cluster sizes scale*.
  • Taking advantage of preemptible and/or committed use discounts can reduce costs by >50%.
  • While Google’s data egress fees are higher, the compute resources dominated the cost calculation (unless you are sending a significant amount of data out of the cluster).
  • Choosing machine types that match your workloads CPU and Memory needs will avoid paying for wasted capacity.

* NOTE: I used general-purpose compute node types for all 3 clouds (n1 GCP Compute Engine instances, m5 AWS ec2 instances, and Dv3 Azure virtual machines). Further exploration could be done across the burstable and entry-level VM types. Also, it appeared that pricing for VMs scaled linearly with # of vCPU and GB of memory, but I am not sure that assumption holds as you move towards some of the less standard memory/cpu ratios.

This article “The Ultimate Kubernetes Cost Guide: AWS vs GCP vs Azure vs Digital Ocean” published in 2018 used a single reference cluster with 100 vCPU cores and 400 GB of memory. As a point of comparison, here is how much my calculation shows that cluster would cost (using on-demand prices) on each of these platforms.

  • AKS: $51,465/year
  • EKS: $43,138/year
  • GKE: $30,870/year

Hopefully this article + notebook will help you in your journey to evaluate the major managed Kuberentes offerings and/or save $$$ on your cloud infrastructure by taking advantage of the available cost saving opportunities.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK