logo

How Adobe is Optimizing Resource Usage in Kubernetes

2022-05-20

Authors:   Carlos Sanchez


Summary

Optimizing resource usage in Kubernetes clusters through hibernation and workload distribution
  • Built hibernation and workload distribution systems to optimize resource usage
  • Applied at both application and infrastructure levels
  • Recommendations for setting CPU and memory requests and limits
  • Use of standard VMs with CPU to memory ratio based on application usage
  • Explicitly setting JVM heap size to avoid surprises
The speaker mentioned that they enforce policies on pull requests to ensure requests and limits for both CPU and memory are set. They also provide tools for teams to optimize their resource usage, but ultimately leave it up to the teams to make the necessary adjustments. The speaker emphasized the importance of setting JVM heap size explicitly, as relying on default settings can lead to unexpected changes in garbage collection algorithms and heap size.

Abstract

Moving to Kubernetes opens the door to a world of possibilities, the amount of workloads that can be run and the flexibility it provides. However this comes at a cost on managing the resources used by many applications and teams. At Adobe we make extensive use of standard Kubernetes capabilities to reduce resource usage and we have also built some solutions at several levels of the stack to improve it. From autoscaling to workload hibernation, from automated resource requests to Kubernetes Jobs, we have experimented with and implemented several features that decrease our resource usage and lower the cost of running many Kubernetes clusters at scale. Both at workload resource level and also at achieving higher density clusters that reduce the number of clusters we need and the operating costs.Click here to view captioning/translation in the MeetingPlay platform!

Materials: