<p>I am running single node K8s cluster and my machine has 250GB memory. I am trying to launch multiple pods each needing atleast 50GB memory. I am setting my pod specifications as following.</p>
<p><a href="https://i.stack.imgur.com/xS1Em.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/xS1Em.png" alt="enter image description here" /></a></p>
<p>Now I can launch first four pods and they starts &quot;Running&quot; immediately; however the  fifth pod is &quot;Pending&quot;. <code>kubectl describe pods</code> shows <code>0/1 node available; 1 insufficient memory</code></p>
<p>now at first this does not make sense - i have 250GB memory so <strong>i should be able to launch five pods</strong> each requesting 50GB memory. <strong>shouldn't i?</strong></p>
<p>on second thought - this might be too tight for K8s to fulfill as, if it schedules the fifth pod than the worker node has no memory left for anything else (kubelet kube-proxy OS etc). if this is the case for denial than <strong>K8s must be keeping some amount of node resources (CPU memory storage network) always free or reserved. What is this amount? is it static value or N% of total node resource capacity? can we change these values when we launch cluster?</strong></p>
<p>where can i find more details on related topic? i tried googling but nothing came which specifically addresses these questions. can you help?</p>

ankit patel
<blockquote>
<p>now at first this does not make sense - i have 250GB memory so i should be able to launch five pods each requesting 50GB memory. shouldn't i?</p>
</blockquote>
<p>This depends on how much memory that is &quot;allocatable&quot; on your node. Some memory may be reserved for e.g. OS or other system tasks.</p>
<p>First list your nodes:</p>
<pre><code>kubectl get nodes
</code></pre>
<p>Then you get a list of your nodes, now describe one of your nodes:</p>
<pre><code>kubectl describe node &lt;node-name&gt;
</code></pre>
<p>And now, you should see how much &quot;allocatable&quot; memory the node has.</p>
<p>Example output:</p>
<pre><code>...
Allocatable:
  cpu:                4
  memory:             2036732Ki
  pods:               110
...
</code></pre>
<h2>Set custom reserved resources</h2>
<blockquote>
<p>K8s must be keeping some amount of node resources (CPU memory storage network) always free or reserved. What is this amount? is it static value or N% of total node resource capacity? can we change these values when we launch cluster?</p>
</blockquote>
<p>Yes, this can be configured. See <a href="https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/" rel="nofollow noreferrer">Reserve Compute Resources for System Daemons</a>.</p>
