<p>I have a simple container that consists of OpenLDAP installed on Alpine.  It's installed to run as a non-root user.  I am able to run the container without any issues using my local Docker engine.  However, when I deploy it to our Kubernetes system it is killed almost immediately as OOMKilled.  I've tried increasing the memory without any change.  I've also looked at the memory usage for the pod and don't see anything unusual.</p>
<p>The server is started as <code>slapd -d debug -h ldap://0.0.0.0:1389/ -u 1000 -g 1000</code>, where <code>1000</code> is the uid and gid, respectively.</p>
<p>The node trace shows this output:</p>
<pre><code>May 13 15:33:44 pu1axb-arcctl00 kernel: Task in /kubepods/burstable/podbac2e0ae-9e9c-420e-be4e-c5941a2d562f/7d71b550e2d37e5d8d78c73ba8c7ab5f7895d9c2473adf4443675b9872fb84a4 killed as a result of limit of /kubepods/burstable/podbac2e0ae-9e9c-420e-be4e-c5941a2d562f
May 13 15:33:44 pu1axb-arcctl00 kernel: memory: usage 512000kB, limit 512000kB, failcnt 71
May 13 15:33:44 pu1axb-arcctl00 kernel: memory+swap: usage 0kB, limit 9007199254740988kB, failcnt 0
May 13 15:33:44 pu1axb-arcctl00 kernel: kmem: usage 7892kB, limit 9007199254740988kB, failcnt 0
May 13 15:33:44 pu1axb-arcctl00 kernel: Memory cgroup stats for /kubepods/burstable/podbac2e0ae-9e9c-420e-be4e-c5941a2d562f: cache:0KB rss:0KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:0KB active_anon:0KB inactive_file:0KB active_file:0KB unevictable:
May 13 15:33:44 pu1axb-arcctl00 kernel: Memory cgroup stats for /kubepods/burstable/podbac2e0ae-9e9c-420e-be4e-c5941a2d562f/db65b4f82efd556a780db6eb2c3ddf4b594774e4e5f523a8ddb178fd3256bdda: cache:0KB rss:44KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:
May 13 15:33:44 pu1axb-arcctl00 kernel: Memory cgroup stats for /kubepods/burstable/podbac2e0ae-9e9c-420e-be4e-c5941a2d562f/59f908d8492f3783da587beda7205c3db5ee78f0744d8cb49b0491bcbb95c4c7: cache:0KB rss:0KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:0
May 13 15:33:44 pu1axb-arcctl00 kernel: Memory cgroup stats for /kubepods/burstable/podbac2e0ae-9e9c-420e-be4e-c5941a2d562f/7d71b550e2d37e5d8d78c73ba8c7ab5f7895d9c2473adf4443675b9872fb84a4: cache:4KB rss:504060KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_a
May 13 15:33:44 pu1axb-arcctl00 kernel: [ pid ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
May 13 15:33:44 pu1axb-arcctl00 kernel: [69022]     0 69022      242        1    28672        0          -998 pause
May 13 15:33:44 pu1axb-arcctl00 kernel: [69436]  1000 69436      591      454    45056        0           969 docker-entrypoi
May 13 15:33:44 pu1axb-arcctl00 kernel: [69970]  1000 69970      401        2    45056        0           969 nc
May 13 15:33:44 pu1axb-arcctl00 kernel: [75537]  1000 75537      399      242    36864        0           969 sh
May 13 15:33:44 pu1axb-arcctl00 kernel: [75544]  1000 75544      648      577    45056        0           969 bash
May 13 15:33:44 pu1axb-arcctl00 kernel: [75966]  1000 75966   196457   126841  1069056        0           969 slapd
May 13 15:33:44 pu1axb-arcctl00 kernel: Memory cgroup out of memory: Kill process 75966 (slapd) score 1961 or sacrifice child
May 13 15:33:44 pu1axb-arcctl00 kernel: Killed process 75966 (slapd) total-vm:785828kB, anon-rss:503016kB, file-rss:4348kB, shmem-rss:0kB
</code></pre>
<p>I find it hard to believe it's really running out of memory.  It's a simple LDAP container with only 8-10 elements in the directory tree and the pod is not showing memory issues on the dashboard (Lens).  We have other Alpine images which don't have this issue.</p>
<p>I'm relatively new to Kubernetes, so I'm hoping the users on SO can give me some guidance on how to debug this.  I can provide more info once I know what is helpful.  As I mentioned increasing the memory has no affect.  I plan to switch from &quot;burstable&quot; to &quot;guaranteed&quot; deployment and see if that makes a difference.</p>
<p><strong>===== UPDATE - Is working now =====</strong></p>
<p>I believe I was confusing the meaning of resource &quot;limits&quot; vs &quot;requests&quot;.  I had been trying several variations on these before making the original post.  After reading through the responses I now have the pod deployed with the following settings:</p>
<pre><code>  resources:
    limits:
      cpu: 50m
      memory: 1Gi
    requests:
      cpu: 50m
      memory: 250Mi
</code></pre>
<p>Looking at the memory footprint in Lens it's holding steady at around 715Mi for the usage.  This is higher that our other pods by at least 25%.  Perhaps the LDAP server just needs more.  Regardless, I thank you all for your timely help.</p>

<p>Check your deployment or pod spec for resource limits.</p>
<p>If your application requires more memory than it is allowed, it will be OOMKilled by the kubernetes.</p>
<pre><code>...
resources:
  limits:
    memory: 200Mi
  requests:
    memory: 100Mi
...
</code></pre>
<p><strong>Equivalent JAVA JVM flags to better understand this concept</strong></p>
<p>requests = Xms</p>
<p>limits = Xmx</p>
<p>Read more:</p>
<p><a href="https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/" rel="nofollow noreferrer">https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/</a></p>
<p><a href="https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/</a></p>
