Blog Post
10 min read
Best Practices for Maximizing Your Kubernetes ROI
96% of companies now use or are in the process of evaluating Kubernetes. As the maturity and complexity of Kubernetes environments grow, costs quickly spiral out of control when an effective strategy for visibility and optimization is not in place.
Managing Kubernetes (K8s) Costs is Critical to Realizing Cloud-Driven Revenue Growth
The COVID-19 pandemic accelerated digital transformation, driving businesses to double down on the cloud to scale up services and support ‘never-seen-before’ load and demand (e.g., Zoom), and in some cases, efficiently scale down applications in response to changing user patterns (e.g., Uber).
As a result, organizations have scrambled to modernize application development processes and re-architect static, on-premises monoliths as agile, microservice-powered cloud apps, fueling the adoption of containers and container orchestration tools like Kubernetes. All major public cloud providers now offer managed K8s services, and according to CNCF’s Annual Survey for 2021, 96% of organizations are already using or evaluating Kubernetes.
The promises of Kubernetes are shorter software development and release cycles, easier application upgrades and maintenance, better utilization of cloud resources, on-demand scale, and portability between clouds — all potential drivers of corporate revenue growth.
However, in practice, Kubernetes has introduced potent risks to revenue growth, primarily due to the complexity it drives:
Lack of internal experience and expertise with K8s architecture and management have forced businesses to invest in training, outside services, and expensive consultant engagements
High-profile attacks have heightened concerns about security, driving additional budget and investment against vulnerability testing, hardening, and policy enforcement
Engineers and architects, who historically did not have to worry about operational costs, are now on the hook for the financial impact of their code’s resource utilization, their node selections, and pod/container configurations
This guide is designed to help your cross-functional Kubernetes value realization team — whether you call it cloud FinOps, your Cloud Center of Excellence, or it is a simple partnering of DevOps and Finance — come together and remove barriers to maximizing the revenue return on your business’ investment in Kubernetes.
Inform: Empower Kubernetes Stakeholders with Visibility Relevant to Their Role
Stakeholders in managing your Kubernetes deployment costs extend far beyond your end users. Typical K8s cost stakeholder parties include:
Application end-users
Business unit leaders
App users within each line-of-business
Your application engineering team
Your DevOps team and practitioners
Kubernetes admins, engineers, and architects
Your Finance or IT Finance team
Any formalized FinOps organization with your business or Cloud Center of Excellence
Delivering transparency and a single-source-of-truth system for Kubernetes usage data is table stakes for each of these personas, and is required to align business, operations, and DevOps teams. Dashboard, reports, and alerts are all common methodologies of providing visibility, and leading tools will enable customization of views per persona so that each user sees only the data that impacts their role.
Specific visibility requirements will vary per persona and per team. Typical requirements include varying levels of granular visibility (from your clusters to their containers) and analytics across all your public clouds, including non-container resources and workloads. From a reporting and dashboards perspective, users demand instant data on current K8s cost trends and forecasted costs.
Sophisticated multicloud cost management platforms like Anodot enable the per-role visibility business stakeholders need by:
Visualizing and tracking Kubernetes spending and usage across clusters, namespaces, nodes, and pods
Correlating cloud spending with business KPIs
Enabling the deepest visibility, analysis, and breakdowns for the costs of non-K8s and Kubernetes cloud components as individual and shared costs, by cost center, and by other levels of categorization and virtual tagging
Enabling you to unify Kubernetes label keys and traditional resource tag keys to build a combined allocation model
Optimize: Leverage Intelligent Recommendations to Continuously Optimize Kubernetes Costs and Usage
After enabling appropriate visibility across all your stakeholders, you and your FinOps team can finally take on the task of optimizing and reducing Kubernetes spending. With comprehensive K8s visibility, you can fine-tune Kubernetes resource allocation — allocating the exact amount of resources required per cluster, namespace/label, node, pod, and container.
Monitoring and configuring your Kubernetes deployments properly will improve infrastructure utilization, reduce instances of overprovisioning, and reduce application infrastructure costs.
Actually implementing continuous optimization procedures proves challenging for many organizations, even with enough visibility. Prioritizing optimizations is a challenge, and in many organizations, getting the engineering buy-in and cycles to actually implement the infrastructure changes that have been identified as cost-saving measures is difficult (as evidenced by multiple FinOps Foundation studies that have identified “Getting Engineers to Take Action” as the recurring primary priority of FinOps teams).
Anodot provides a shared source of cost visibility and cost optimization recommendations, making continuous improvement a scalable task for multi-stakeholder teams by:
Making next-step actions to implement optimizations blatantly evident (with explicit management console instructions or CLI commands)
Specifically outlining the cost impact of each optimization change
Helping your team to Identify anomalies and underutilization at the node and pod level in an ongoing way
Check out these tips for maximizing cloud ROI
Operate: Formalize Accountability and Allocation for Kubernetes Costs
As a FinOps strategy leader, you must gain consensus and instill proper financial control structures for Kubernetes within your organization. FinOps strategies without accountability and alignment are doomed to failure. Financial governance controls further reduce the risk of overspending and improve predictability.
This operating phase is where the rubber meets the road as far as what results you will gain from your Kubernetes FinOps efforts. If you have put the right controls in place and have an effective formalized cost management process, your team will be enabled to:
Effectively and fully transition from the slow, on-premises CapEx model to the elastic, real-time OpEx model enabled by the cloud
Move from the old-world paradigm of Engineering as requestors/Finance as approvers to Engineering and Finance acting as one
Rully replace predictable, static hardware spend (with long procurement processes) with predictable budgets for on-demand (instant procurement) container resources
All of which helps your organization transition from the antiquated physical infrastructure world with high cost of failure to a paradigm that enables affordable “fast failing” and agile experimentation.
But, how do you ensure formalized accountability practices and procedures are in place? We have established that cost efficiency is a shared responsibility, with the FinOps team in charge of standards. Your FinOps stakeholders must stand up the proper guidelines, cost monitoring, alerting, and optimization processes. Within these constructs, Engineering is tasked with making sure their investments are cost-minded and efficient.
There are additional specific actions you can take to enforce and enhance accountability and cost allocation practices, through:
Organizing resources by application and, when possible, using dedicated clusters for each app
Flexibly and strategically defining and assigning namespaces and labels to align usage with cost centers (application, team, or business unit), and unify this approach with traditional resource tagging so you can allocate costs, analyze by cost centers, and perform full allocation across K8s and non-Kubernetes workloads.
Making sure that the teams that are driving costs (in DevOps/Engineering) have cost and usage information at hand, in addition to providing these same details to your product, project, and system owners and managers
Delivering visibility into which committed-use strategies are in place: this can help incentivize Engineers to leverage Savings-Plan-ready instances over incumbent choices
Regularly hosting review sessions with stakeholders to review high level dashboards and socialize the cost impact of optimizations
Have a solid and comprehensive Kubernetes showback model in place, and leverage the aforementioned visibility and reporting capabilities (like those enabled by Anodot) to help your teams understand how they are doing in terms of costs.
Chargeback approaches (where stakeholders are directly invoiced for their cloud spend impact) are appropriate for teams that have required visibility and education, but avoid creating a culture of Kubernetes cost shameback — which emphasizes inefficiencies and weaknesses rather than building communication, mentorship, and shared education efforts that enable cross-organizational wins.
Above all, create a fluid flow of communication about what efforts are being made, and what savings results are being achieved. Loudly champion any and all wins and successes.
Cloud and Kubernetes cost management tools like Anodot help automate and centralize much of this work:
Automated alerting and reporting can appear within the tools and interfaces your teams already use to show them usage and savings impact without forcing them to regularly open and consult another solution
Calculate Kubernetes unit costs and answer the question, “for each dollar spent in K8s, how many dollars of revenue did we generate?”
Help Engineers to take ownership of the cost impact of their choices by showing the results of cost-conscious resource provisioning and utilization
[CTA id="dcd803e2-efe9-4b57-92d5-1fca2e47b892"][/CTA]
Building Your Strategy for Operationally Maximizing K8s ROI
A successful financial management strategy for Kubernetes infrastructures in the public cloud — whether on AWS, Azure, or GCP — requires educating and uniting stakeholders from parties as diverse as Finance and DevOps around shared goals and processes.
Step 1: Understand Kubernetes Cost Drivers
First, stakeholders from each line of business that consumes Kubernetes services and the FinOps governing team must develop at least a basic awareness and understanding of each K8s cost driver’s function and importance (both direct and indirect).
Step 2: Align on K8s Optimization Strategy and Tools
Next, these same stakeholders can evaluate different strategies for controlling and optimizing costs against each cost driver and identify those that make sense in accordance with the business’ specific focus and goals and objectives.
At this time, it also makes sense to evaluate the Anodot Cloud Cost Management tool that provides comprehensive, cross-cloud (multicloud) and cross-technology (AWS, Azure, GCP + Kubernetes) visibility, optimization, and forecasting capabilities. Anodot is often selected at this stage by organizations that are focused specifically on financial management of cloud and Kubernetes, and who prefer to have a single, focused tool that drives cloud and K8s ROI.
Step 3: Implement a Continuous Kubernetes Optimization Practice
Finally, a FinOps plan for operationalizing the selected strategies in an ongoing manner can be created by leveraging the Inform > Optimize > Operate cyclical framework.
Detecting Kubernetes Cost Anomalies
“Bill shock” is too common an occurrence for businesses that have invested in Kubernetes. Anomaly detection intelligence will continuously monitor your usage and cost data and automatically and immediately alert relevant stakeholders on your team so they can take corrective action.
Anomalies can occur due to a wide variety of factors and in many situations. Common anomaly causes include:
A new deployment consuming more resources than a previous one
A new pod being added to your cluster
Suboptimal scaling rules causing inefficient scale-up
Misconfigured (or not configured) pod resource request specifications (for example, specifying GiB instead of MiB)
Affinity rules causing unneeded nodes to be added
Save your team the pain of end-of-month invoice shock. Any organization running Kubernetes clusters should have mechanisms for K8s anomaly detection and anomaly alerting in place.
Anodot for Kubernetes Cost Management
Anodot’s cloud cost management solution gives organizations visibility into their Kubernetes costs, down to the node and pod level. By combining Kubernetes costs with non-containerized costs and business metrics, businesses get an accurate view of how much it costs to run a microservice, feature, or application.
Anodot provides granular insights about your Kubernetes deployment that no other cloud cost optimization platform offers, with the ability to easily connect to AWS, Azure and GCP.
Anodot helps your FinOps and DevOps teams work together to identify and eliminate waste, so you can maximize the value you get from your cloud environments.
Try Anodot with a 30-day free trial. Instantly get an overview of your cloud usage, costs, and expected annual savings.
Read more