Kubernetes (K8s) adoption has exploded over the past few years. But it hasn’t been easy to monitor, manage, and optimize K8s costs. To provide greater cost visibility into Kubernetes clusters and environments, Kubecost launched in 2019 while OpenCost debuted in 2022.
OpenCost has several founding contributors. But it is Kubecost that developed the cost allocation engine that the OpenCost implementation uses. Kubecost also announced the launch of OpenCost on June 2, 2022. Both tools have remarkably similar features for managing Kubernetes costs.
But OpenCost and Kubecost differ in crucial respects, as we’ll discover in this guide.
Table of Contents
First, a little background.
What Does Kubecost Do?
Kubecost is a tool for monitoring and optimizing Kubernetes costs. Kubecost collects, visualizes, and reports real-time cost data within and outside Kubernetes clusters. In addition, the platform runs continuously, so you can view your K8s cost metrics as they change and optimize them as necessary.
Credit: Kubecost dashboard – ContainIQ
Kubecost started out as an open-source project for small engineering teams. It still maintains a freemium plan and tightly integrates with cloud-native, open-source tools, including Kubernetes, Prometheus, and Grafana.
Kubecost features include the following:
- Cost allocation – Kubecost can allocate costs based on any Kubernetes concept, such as a service, deployment, namespace label, cluster, pod, team, environment, product, or custom label. You can also view your costs across multiple clusters in one place, using a single API endpoint.
- Real-time Kubernetes cost monitoring – Combine and view your in-cluster costs (CPU, RAM, network, storage, etc) together with out-of-cluster costs (costs from AWS, Azure, and Google Cloud infrastructure and services) in a single place.
- Customized K8s cost optimization recommendations – Get cluster-level insights customized to your environment and usage patterns to prevent overprovisioning (waste) or under-provisioning (performance degradation).
- Customizable alerts and governance – Receive real-time alerts via email or Slack about anomalous spend patterns, budget overruns, and non-efficient Kubernetes tenants.
So, how does OpenCost compare?
What Does OpenCost Do?
OpenCost is an open-source cost monitoring and optimization platform for Kubernetes. OpenCost measures and allocates in-cluster and some external Kubernetes costs in real-time. It is currently at the Cloud Native Computing Foundation sandbox project maturity level.
OpenCost collects, analyzes, and reports your cost insights continuously around the clock, just like Kubecost. So you can identify any cost anomalies or trends early enough to avoid cost overruns.
Kubecost, RedHat, AWS, Adobe, SUSE, Armory, Google Cloud, Pixie, Mindcurv, D2IQ, and New Relic are all founding contributors of the OpenCost project.
OpenCost features include:
- Fully open-source – The free forever platform is vendor-neutral and seamlessly integrates with open-source tooling. You can use OpenCost to measure and allocate container and infrastructure cost data via the major cloud providers’ billing APIs.
- Real-time K8s cost allocation – Collect, analyze, and report on cost insights by Kubernetes concepts — at the container-level.
- Continuous Kubernetes cost monitoring and optimization – Get on-going cost allocation capabilities for in-cluster resources, including CPU, RAM, load balancers, storage, persistent volumes, and more.
- On-prem Kubernetes support – Measure and allocate Kubernetes costs on-premises with custom pricing sheets.
- Expert support – Kubernetes specialists from providers like AWS, Google Cloud, SUSE, and Kubecost deliver knowledgeable support.
OpenCost and Kubecost are quick to install and get started on as well. So, what makes each platform unique?
What Are The Differences Between OpenCost And Kubecost?
Kubecost and OpenCost have more similarities than differences. But the differences make all the difference. Here’s a closer look.
1. Kubecost vs. OpenCost: Product vs. Project
OpenCost is fully open-source (Apache 2.0 license), vendor-agnostic, and is currently a sandbox project with the Cloud Native Computing Foundation (CNCF). It uses a community-driven specification, cost allocation engine, and leverages technical support from its 11 founding contributors. The cost allocation engine uses a Golang implementation that conforms to the community-driven spec.
OpenCost ingests cost data from Kubernetes scheduling APIs, on-prem environments, and cloud provider APIs. The project provides an implementation of the spec for Amazon Kubernetes Service (AWS), Azure Kubernetes Service (Azure), Google Kubernetes Engine (Google Cloud), and on-premises K8s clusters (using custom pricing sheets).
You need Kubernetes 1.8 and later to install and use OpenCost. Also, you need to first install Prometheus, which scrapes cost metrics for OpenCost. Just run the following command for express Prometheus installation:
This installation uses the Prom community helm chart, which may scrape unnecessary metrics by default. So for production, follow the Kubecost user metrics list so you can filter with ‘keep’. Refer to the Kubecost installation chart for scrape config.
Kubecost began as an open-source project. It is currently a commercial product with free and paid tiers. Kubecost seamlessly runs on Kubernetes, on-premises, air gapped, AWS (including Amazon EKS), Microsoft Azure (including AKS), and Google Cloud (including GKE).
Also, you can use custom webhooks to build a Kubecost stage in Spinnaker.
One more thing. Kubecost is also launching Kubecost Cloud, the hosted version of Kubecost. Generally available from early 2023, Kubecost Cloud is a fully managed solution that helps teams speed up their Kubecost implementation, time-to-value, and ongoing maintenance.
2. Kubecost vs. OpenCost: Pricing
OpenCost is free to use on-premises and in the cloud (where Kubernetes can run). This provides a self-service platform you can scale to the size of your Kubernetes deployment, multi-cloud requirements, and custom reporting with tools like Prometheus and Grafana.
You pay for the managed Prometheus instance you deploy and the data you write and query. So, your costs will vary based on the size of your Kubernetes data, typically less than 1% of total Amazon EKS Cluster costs.
For Kubecost pricing, you can choose from a freemium or a paid version.
Kubecost pricing plans – Kubecost
The always-free Kubecost plan delivers unlimited individual clusters and customized cost savings recommendations. But, your cost metrics will only be retained for 15 days as opposed to 30 days with a Business plan and an unlimited time with an Enterprise plan.
Starting at $449 per month for 100 nodes, the Business plan goes up to $799 per month for 200 nodes (monitoring unlimited clusters). You can also perform multi-cluster monitoring and optimization, get saved reports, and access advanced support.
The Enterprise plan delivers unlimited metric storage, SAML/SSO security, dedicated support, and custom integrations if you have more than 200 nodes. Pricing is also custom and you get a unified view of all your multi-cluster data to ease analysis and decision making.
You can try any Kubecost plan for 30 days free to see if it meets your K8s cost monitoring, allocation, and optimization needs.
3. Kubecost vs. OpenCost: Kubernetes cost monitoring and reporting
OpenCost enables you to export cost data to Prometheus in real-time. You can then write custom queries to gain cost insights.
The kubectl-cost plugin delivers quick CLI access to cost allocation metrics in Kubernetes through the OpenCost API. This way, you can quickly figure out the cost and efficiency of each Kubernetes workload you choose for accurate chargeback, showback, and ongoing reporting.
Here are the metrics available with OpenCost:
OpenCost computes a running pod’s cost based on CPU, memory, GPU, and storage usage. It calculates the cost of each item based on the charges of the underlying infrastructure. Then it divides the cost of a compute instance into CPU, memory, and GPU, calculating the cost per hour for each.
With Kubecost, you can estimate costs using a model calculation or connect your hypervisor to get exact figures.
Some things to note here (at the time of publishing this guide):
- OpenCost does not support Amazon EKS on Amazon ECS or AWS Fargate, which Kubecost does.
- OpenCost does not provide custom cost savings recommendations, but Kubecost does.
- While Kubecost enables you to collect, analyze, combine, and distribute shared out-of-cluster and in-cluster costs, OpenCost limits capabilities for out-of-cluster cost monitoring and allocation.
However, the founding contributors expect to add those capabilities (environmental cost of your clusters and workloads) in the coming months.
4. Kubecost vs. OpenCost: Governance
OpenCost is still forming its governance model. It plans to align it to CNCF best practices. Today, OpenCost bases code submissions on the inputs and feedback of its founding contributors. The founding members co-authored the OpenCost spec.
Ultimately, OpenCost seeks to standardize Kubernetes cost tracking, allocation, and measurements.
This way, teams can use a single cost allocation model for all infrastructure environments across teams and an entire organization, as well as across cloud platforms and Kubernetes distributions.
With Kubecost, you can build a proactive and automated governance model. You can customize alerts, set up budget parameters, and automate ongoing cost reports. Like OpenCost, Kubecost uses read-only Kubernetes privileges. It does not export any data.
Best Kubernetes Cost Optimization Platform: CloudZero Vs. Kubecost Vs. OpenCost
OpenCost and Kubecost are helpful for monitoring, allocating, and optimizing Kubernetes costs granularly. Both monitor Kubernetes costs in K8s environments, but neither goes beyond that.
For costs outside of Kubernetes, or to consolidate costs of containerized and non-containerized resources in one place, you’ll likely need another service, adding complexity and expense.
Alternatively, you can use a Kubernetes cost optimization platform that does both.
CloudZero provides granular Kubernetes cost analysis across major cloud providers, including single-cloud, multi-cloud, and hybrid clouds — down to individual customers (unit economics).
With CloudZero’s Kubernetes Cost Analysis, you can:
- Measure and allocate Kubernetes costs across Kubernetes, AWS, Google Cloud, and Azure. No tagging required.
- Collect, analyze, and act on granular Kubernetes cost insights by any Kubernetes concept — namespace, label, service, environment, cluster, pod, deployments, and more.
- Accurately allocate in-cluster and out-of-cluster cost data seamlessly — even if you have messy cost allocation tags.
- Measure your cost of goods sold (COGS) across containerized infrastructure.
- Get an accurate picture of your cloud costs by combining containerized and non-containerized resources. Compare K8s costs with those from AWS, GCP, Azure, or platforms like Snowflake, Databricks, MongoDB, and New Relic.
- Leverage real-time and historical Kubernetes cost data to derive cost insights in the context of your business — down to the pod level, by the hour.
- Go beyond mere visibility by seeing your Kubernetes costs in business dimensions, including cost per individual customer, software feature, product, project, team, environment, and more.
- Share contextual Kubernetes cost insights by role; Finance, engineering, or FinOps.
- Take advantage of real-time cost anomaly detection and smart alerts straight to your Slack, email, or incident response tool and prevent cost overruns.
- Get budgeting, cost allocation, and forecasting tools in one place to organize and optimize your Kubernetes spend.
- Get cost-saving recommendations from CloudZero partners (ProsperOps) and have them automatically applied.
- Identify unallocated resources so you can remove or optimize them.
- Get customized recommendations on the best instance to use based on factors such as pricing, instance type, instance size, resource, service, and more with CloudZero Advisor.