<p>I have multiple nodes, which are lying mostly idle, but getting an error while scheduling pods/services saying &quot;Insufficient CPU&quot;</p>
<p>Node usage output :-</p>
<pre><code>top - 17:59:45 up 17 days,  2:52,  1 user,  load average: 5.61, 7.85, 8.58
Tasks: 2030 total,   3 running, 1771 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.5 us,  2.3 sy,  0.4 ni, 90.4 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem : 39616812+total, 29776403+free, 30507960 used, 67896128 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 35842112+avail Mem
</code></pre>
<p>As it can be seen, whole bunch of memory/cpu is lying idle (~ 80 to 90 % is free)</p>
<p>Same can be confirmed by the fact :-</p>
<pre><code>$ kubectl top nodes
W0615 14:03:16.457271     108 top_node.go:119] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
node1    4680m        29%    14943Mi         47%
node10   9524m        19%    44735Mi         11%
node11   273m         0%     1614Mi          0%
node12   289m         0%     1617Mi          0%
node2    1736m        10%    11683Mi         37%
node3    3223m        20%    17837Mi         56%
node4    1680m        10%    15075Mi         47%
node5    7386m        15%    39163Mi         10%
node6    5392m        22%    26448Mi         20%
node7    2457m        5%     28002Mi         7%
node8    4853m        10%    51863Mi         13%
node9    3620m        7%     18299Mi         4%
</code></pre>
<p>But when scheduling pods, getting an error (kubectl describe pod POD_NAME) :-</p>
<pre><code>Events:
Type     Reason            Age   From               Message
----     ------            ----  ----               -------
Warning  FailedScheduling  62m   default-scheduler  0/12 nodes are available: 5 node(s) had taints that the pod didn't tolerate, 7 Insufficient cpu.
</code></pre>
<p>The reason I understand why this is happening is (kubectl descibe node node10) :-</p>
<pre><code>Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests          Limits
  --------           --------          ------
  cpu                47887m (99%)      92270m (192%)
  memory             59753371Ki (15%)  87218649344 (21%)
  ephemeral-storage  2Gi (0%)          2Gi (0%)
  hugepages-1Gi      0 (0%)            0 (0%)
  hugepages-2Mi      0 (0%)            0 (0%)
</code></pre>
<p>The pods have allocated all of the cpu resources across all the nodes</p>
<p>Even though the actual usage is very low, k8s thinks the nodes are fully occupied.
What I am trying to achieve is how to overcommit the resources ?
I tried editing &quot;Allocatable&quot; cpu 2x times the &quot;Capacity&quot;, but changes don't persist.
Any suggestion how can I overcommit ?</p>

<p>You cannot overcommit on requests, as those form the minimum required resources for a given pod to run. You can overcommit on limits, as you can see by your <code>192%</code> there.</p>
