<p>What approach do you take in order to identify feasible values for resource requests and limits for <a href="https://kubernetes.io/docs/concepts/policy/resource-quotas/" rel="nofollow noreferrer"><code>ResourceQuota</code></a> and <a href="https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/" rel="nofollow noreferrer"><code>LimitRange</code></a> objects in OpenShift/Kubernetes projects?</p>

<p>I am <strong>not</strong> asking how to create quotas or limit ranges, but rather how to rationalize cpu/memory request/limit values instead of simply guessing.</p>

<p>I have come across <a href="https://blog.openshift.com/full-cluster-part-3-capacity-management/" rel="nofollow noreferrer">this blog post</a> which is a good starting point, and was hoping to find more resources or recommendations for best practices. I understand that I will have to tinker with these settings as there is no one-size-fits-all solution.</p>

<p>I think you kind of answered the question yourself. There's no size fit all, it really depends on the types of workloads. This also an opinion on how much slack you want to leave on the resources.</p>

<p><strong>IMO</strong></p>

<p>For compute resources:</p>

<ul>
<li>CPUs and Memory: Anything under 10% is probably underutilized, anything over 80% overutilized. You always want to strive here for more utilization on both of these because these resources tend to be the ones that cost the most.</li>
<li>Disk: Anything at 80% means you probably need to increase the size of the disk, or do garbage collection.</li>
</ul>

<p>For K8s resource limits like number of ConfigMaps there's no max per se, it's just a feature for you to make sure cluster users don't abuse resource creation just because cluster resources are never infinite. One example I can think of is you can say that every Deployment has on average 2 ConfigMaps and you'd like to have 100 Deployments and you might want to set a limit of 220 ConfigMaps.</p>
