KubeCon 2020 Recap: Cost Visibility and Optimization in Kubernetes

As part of KubeCon 2020, the FinOps Foundation announced new members of the Technical Advisory Council, which included Eugene Khvostov, VP of product and engineering at Apptio, who was quoted in the announcement:

Managing cloud costs and usage continues to be a top concern as cloud spending accelerates even faster than forecasted as a result of the business disruption, we’ve experienced this year. It’s been incredible to watch the FinOps Foundation grow from Cloudability’s Quarterly Customer Advisory Board meetings to a robust community dedicated to helping the industry manage cloud costs more effectively. We look forward to continuing our support of the Foundation’s efforts to standardize best practices and education for cloud financial management.

As part of the FinOps Summit at KubeCon, Casey Doran, product director with Apptio Cloudability, spoke on how to apply cloud financial management in a cloud-native container environment.

Managing the visibility and optimization of costs is hard enough in the Cloud, but the introduction of Kubernetes adds another layer of virtualization to manage. In today’s session at the FinOps summit, I discussed the challenges associated with getting visibility into, and optimization of, Kubernetes – alongside your non-Kubernetes costs.

Why Cloud Financial Management is harder in Kubernetes

Cost allocations for Kubernetes have different challenges than traditional environments. Non-container environments generally have a one-to-one mapping of applications to virtual machines (VMs). Assigning accountability for those apps is simply a mapping exercise of app vendor tags to team. While some resources and services like support charges may be shared, the vast majority are likely not.

With Kubernetes, one-to-one mappings of tags to teams fall short. Containers are deployed in cloud environments within Kubernetes clusters, which consume cloud resources (such as compute) just as any other tenant would. The challenge lies in the fact that within each cluster you generally have multiple teams consuming portions of those underlying resources.

Containers deployed through Kubernetes sit on top of shared pools of cloud resources (e.g., EC2 instances and EBS volumes). Although you may have robust cloud financial management practices generally, including tagging strategies and team level visibility, these shared container costs sit stubbornly outside such processes.  Reaching inside each container cluster to understand who is driving resource consumption and fairly allocating the resulting costs is a very complex problem. Additionally, vendor billing data generally focus on billable elements such as detailed resource level billing or service fees, which do not help teams break out shared costs.

Many organizations setup a manual process to split up these container-based costs and allocate them to delivery teams. Due to the inherent complexity of this work, these processes are labor intensive and prone to error.

In reality, organizations need to be able to apply cloud financial management to both container and non-container environments together – they need full and accurate allocation of shared cluster resources and off-cluster resources.

Overcoming Kubernetes cloud cost management challenges with best practices

Organizations should align their tag and label strategy to their allocation needs (e.g., apps, team, business unit.). By applying a single strategy across vendor tags and Kubernetes labels, organizations can analyze and report their Kubernetes container cost data alongside their non-container cloud cost data. Also, collect utilization of underlying cluster resources by container object types. Include label key and value pairs and utilize existing monitoring tools.

On top of the unified model for looking at Kubernetes and non-Kubernetes costs, you want to be sure to calculate allocations accurately. Be sure to allocate requests when the requests are higher than actual usage. Factor in Node Pinning when your teams are using node selectors to only run certain workloads on certain nodes in the cluster. Assure you are using actual costs, inclusive of any credits and discounts you may receive. And finally, track idle resources in the cluster, and use that data to optimize.

Shared costs have always been difficult to manage, but increased container adoption makes it harder. Adapt current financial management practices so that container costs can be seamlessly managed, and leadership gets the necessary visibility into container costs and optimization opportunities.

Container Cost Allocation Preview - KubeCon 2020 Recap: Cost Visibility and Optimization in Kubernetes - Apptio

Start seeing the potential of Cloudability by signing up for a free FREE trial today!

Article Contents



Additional Resources