Analyze data for your containers

To learn more about Kubernetes, refer the following topics:

Container cost allocation

Container Cost Allocation in Cloudability helps you to accurately allocate costs by Kubernetes Clusters, Namespaces, Labels, workloads, and others methods.

Allocation and idle resources

If a pod is in the guaranteed Quality of Service tier, as the amount of resources requested is reserved, Cloudability utilizes the request data for allocation. For more information, see Configure Quality of Service for Pods. If a pod is classified as burstable, Cloudability utilizes the larger of either request or usage information for allocation. If a pod is classified as best effort, we leverage the usage information for allocation.

The cost for idle resources is distributed across a given dimension based on the percent share of the total cost during that timeframe.

Cost basis

To source resource costs for allocation, Cloudability defaults to Cost (Adjusted). If you do not utilize a Cost (Adjusted) metric, Cloudability uses Cost (Total) in the calculation. Cloudability also supports the amortized cost metric in container cost allocation. This helps you understand the full cost of your Kubernetes cluster, including any consumed reserved instances (RIs) and savings plans (SPs). RIs and SPs are popular instruments for reducing the cost of virtual machines (V Ms), the key cloud resources which back Kubernetes clusters. By switching to the amortized cost basis, you can include the full cost of consumed RIs and SPs when you analyze clusters and split costs via namespace, services, and labels. You can switch back the cash cost basis to represent what was actually charged in the given period.

If you have custom pricing enabled, both the cost basis will reflect your adjusted costs. You can use these metrics with the container-specific reporting dimensions Cluster Name, Namespace, and Labels.

How it works

The Cloudability collection agent compiles metrics from your Kubernetes clusters and sends them to Cloudability for analysis. Using native metric sources, Cloudability allocates cost and provides insight into idle resources in your clusters. For more information, refer to Containers.

Idle cost distribution

Overview

The containerized infrastructure runs a certain amount of overhead capacity that is not used by underlying workloads. This “idle” usage has an associated cost (for the backing VMs and volumes) that needs to be accounted for. Cloudability distributes these idle container costs within its reports and dashboards, as well as in the Container Cost Allocation feature.

This support is implemented through the introduction of a new metric category “Containers”, which makes available six new metrics. These metrics enable users to view separately the utilized, idle and fairshare costs either with a cash or amortized basis. For customers with custom pricing enabled these will all be represented as “adjusted” metrics.

The Container Cost Allocation feature evaluates resource utilization on each node and marries this to the billing data to calculate the cost of each cluster and to associate a direct, “utilized cost”, to Kubernetes namespace and label values (this has been available within core reporting by using the namespace or a label dimension). With this enhancement you can also report on the idle cost via the new metric, which is allocated to the namespace and label values proportionally based on their direct cost contribution of each node. The Fairshare Cost is simply the Utilized Cost and Idle Cost combined - you could think of it as the total cost. Here are some considerations and reporting ideas to keep in mind with these new metrics:

  • For non-container costs these new metrics will all return as $0. To filter to container only data try a filter such as “Cluster Name not equals (not set)”
  • Use these metrics with different dimensions to easily visualize utilized vs idle. For example, list out by Cluster Name or resource ID.
  • For the first time you can use cash and amortized cost basis together for detailed container cost reporting.

Container allocation data export

Overview

Container cost allocation now can export your allocation data in .csv format, allowing you to work with the data in external tools.

You can export data when allocating across clusters, or within a single cluster, by Namespace, Service, or Label.

.csv data definitions

Name Definition
Type Defines whether the row is allocation data, or reporting on unallocated (idle) usage or cost.
Namespace Indicates that you are looking at a Kubernetes Namespace object name.
Service Indicates that you are looking at a Kubernetes Service object name.
Label Indicates that you are looking at a Kubernetes Label value.
cpu/reserved:allocation Percentage of CPU usage allocated to that row during the timeframe queried.
cpu/reserved:fairShare Percentage of CPU usage allocated to that row during the timeframe queried when sharing distributing across objects.
cpu/reserved:resource:mean Average CPU usage observed during the time frame queried.
cpu/reserved:resource:unit Unit of measurement for CPU usage.
memory/reserved_rss:allocation Percentage of Memory Resident Set Size usage allocated to that row during the time frame queried.
memory/reserved_rss:fairShare Percentage of Memory Resident Set Size usage allocated to that row during the timeframe queried when distributing unallocated (idle) across objects.
memory/reserved_rss:resource:mean Average Memory Resident Set Size usage observed during the timeframe queried.
memory/reserved_rss:resource:unit Unit of measurement for Memory Resident Set Size usage.
network/tx:allocation Percentage of Network TX usage allocated to that row during the timeframe queried.
network/tx:fairShare Percentage of Network TX usage allocated to that row during the timeframe queried when distributing unallocated (idle) across objects.
network/tx:resource:mean Average Network TX usage observed during the timeframe queried.
network/tx:resource:unit Unit of measurement for Network TX usage.
network/rx:allocation Percentage of Network RX usage allocated to that row during the timeframe queried.
network/rx:fairShare Percentage of Network RX usage allocated to that row during the timeframe queried when distributing unallocated across objects.
network/rx:resource:mean Average Network RX usage observed during the timeframe queried.
network/rx:resource:unit Unit of measurement for Network RX usage.
filesystem/usage:allocation Percentage of Container Filesystem usage allocated to that row during the timeframe queried.
filesystem/usage:fairShare Percentage of Container Filesystem usage allocated to that row during the timeframe queried when distributing unallocated (idle) across objects.
filesystem/usage:resource:mean Average Container Filesystem usage observed during the timeframe queried.
filesystem/usage:resource:unit Unit of measurement for Container Filesystem usage.
percentages:allocation Overall Percentage across Memory, CPU, Network RX/TX, and Filesystem allocated to that row during the timeframe queried.
percentages:fairShare Overall Percentage across Memory, CPU, Network RX/TX, and Filesystem allocated to that row during the timeframe queried when distributing unallocated (idle) across objects.
percentages:fairShareUnallocated Overall Percentage of Unallocated (idle) across Memory, CPU, Network RX/TX, and Filesystem that is shared by that row when distributing Unallocated (idle) across objects.
costs:allocation Overall Cost across Memory, CPU, Network RX/TX, and Filesystem allocated to that row during the timeframe queried.
costs:fairShare Overall Cost of Unallocated (idle) across Memory, CPU, Network RX/TX, and Filesystem that is shared by that row when distributing Unallocated (idle) across objects.
costs:unallocated Overall Unallocated (idle) Cost across Memory, CPU, Network RX/TX, and Filesystem during them timeframe queried when not distributed across objects.

Supported Kubernetes configurations

As the most popular container orchestrator out there, there are many different ways to deploy Kubernetes and OpenShift. We strive to support all versions that are certified by the CNCF (Cloud Native Computing Foundation), and we will keep this matrix updated as we roll out support for additional configurations.

Service Vendor Memory/CPU/Disk Average % Allocation $ Allocation

None

AWS

Yes Yes Yes
None

Azure

Yes Yes Yes
None

GCP

Yes Yes Yes

GKE

GCP

Yes Yes Yes
EKS AWS Yes Yes Yes
AKS Azure Yes Yes Yes