Adopting Kubernetes
Correctly dimensioning Kubernetes clusters and all their environments is a complex subject. During the pandemic, many companies accelerated their digital transformation. This included a major overhaul of their applications, including migration to the cloud, leading to exponential adoption of Kubernetes.
Now, with market conditions less conducive to spending, many companies are asking their IT teams to slow down, mainly due to the rapid growth of their Cloud invoices. A recent study by Wancloud revealed that 81% of CTOs and CIOs say their top management has asked them to reduce Cloud spending.
Cloud cost issues are beginning to take precedence over development teams’ objectives of speed and velocity. Companies are faced with a difficult decision: should they focus on controlling cloud costs, knowing that this could compromise their technical teams’ ability to deliver innovations at a high rate?
Is it possible to focus on both?
Scaling with Kubernetes
First of all, it’s important to note that right sizing isn’t just about reducing costs. Above all, it is very important to build resilient systems. Undersizing can be just as dangerous as oversizing.
Risks associated with oversizing: excessive costs (clusters without appropriate limits lead to oversizing, and therefore to expenditure on unused resources).
Risks associated with undersizing : pod memory exhaustion (when a pod’s memory reaches its limit, it is evicted to protect the entire node hosting that pod), node memory exhaustion (when a node runs out of memory, cluster stability is affected), pod eviction (if a node does not have adequate resources, it may unexpectedly remove pods), CPU shortage (when applications are forced to share a limited amount of CPU, others on the same node may not receive enough).
In short, when you oversize, your cloud budget suffers, and when you undersize, your users suffer. Both aspects need to be taken into account to optimize business results and operational expenses.
Optimum sizing
Here are some tips for optimizing your cluster sizing:
- Start with substantial resources for your first production deployment. You can always reduce them once you’ve estimated your real needs.
- Opt for several small pods rather than a few large ones. This strategy will provide higher availability for your default applications.
- Even so, don’t launch too many pods. This can lead to resource exhaustion and/or overload by creating too many connections on your server, making diagnostics difficult and the debugging process slower.
- Periodically review your past resource utilization and take corrective action where necessary. Measuring and analyzing capacity utilization over time is the best way to avoid consuming too many resources.
- Test the performance of workloads on correctly scaled instances to ensure they don’t suffer. Use load-testing tools to evaluate performance.
- Prioritize problems.
- Communicate regularly with developers. This will enable them to provide more precise capacity requirements in the future.
- Repeat these steps regularly. Usage and demand can change over time: what is correctly sized today may not be so in three months’ time.
In short, optimizing Kubernetes cluster sizing is essential for balancing Cloud costs and application performance. It’s also important to ensure the resilience of your systems.
Depending on the size of your resources, these steps may seem too complex to be carried out manually for each workload. Don’t hesitate to contact us if you’d like us to help you maximize results and keep your operating costs under control!