Bird
Raised Fist0
Kubernetesdevops~5 mins

OOMKilled containers in Kubernetes - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the term OOMKilled mean in Kubernetes?
OOMKilled means a container was stopped because it used more memory than allowed, and the system killed it to protect other processes.
Click to reveal answer
beginner
How can you check if a container was OOMKilled?
Use the command kubectl describe pod <pod-name> and look for Last State: Terminated with reason OOMKilled.
Click to reveal answer
beginner
What Kubernetes resource controls the memory limit for a container?
The resources.limits.memory field in the container spec sets the maximum memory a container can use.
Click to reveal answer
beginner
Why is setting memory limits important in Kubernetes?
Memory limits prevent one container from using too much memory and crashing other containers or the node.
Click to reveal answer
beginner
What is a simple way to fix an OOMKilled container?
Increase the memory limit in the pod spec or optimize the application to use less memory.
Click to reveal answer
What does OOMKilled indicate in a Kubernetes container?
AThe container completed its task successfully
BThe container was restarted manually
CThe container was deleted by the user
DThe container was killed because it used too much memory
Which command helps you find if a pod was OOMKilled?
Akubectl describe pod &lt;pod-name&gt;
Bkubectl get nodes
Ckubectl logs &lt;pod-name&gt;
Dkubectl get services
What field sets the memory limit for a container in Kubernetes?
Aresources.limits.memory
Bspec.containers.image
Cmetadata.name
Dspec.replicas
If a container is OOMKilled, what is a common fix?
AChange the container image
BIncrease memory limits or optimize memory use
CReduce CPU limits
DDelete the pod immediately
Why does Kubernetes kill containers that exceed memory limits?
ATo save disk space
BTo restart the container automatically
CTo protect other containers and the node from crashing
DTo update the container image
Explain what causes a container to be OOMKilled in Kubernetes and how you can detect it.
Think about memory limits and pod status details.
You got /3 concepts.
    Describe two ways to prevent OOMKilled errors in Kubernetes containers.
    One is configuration, the other is code or app behavior.
    You got /2 concepts.

      Practice

      (1/5)
      1. What does it mean when a Kubernetes container status shows OOMKilled?
      easy
      A. The container was deleted manually by the user.
      B. The container was restarted due to a network failure.
      C. The container completed its task successfully.
      D. The container was stopped because it used more memory than allowed.

      Solution

      1. Step 1: Understand OOMKilled meaning

        OOMKilled means Out Of Memory Killed, which happens when a container uses more memory than its limit.
      2. Step 2: Relate to container status

        When a container exceeds its memory limit, Kubernetes stops it to protect the system.
      3. Final Answer:

        The container was stopped because it used more memory than allowed. -> Option D
      4. Quick Check:

        OOMKilled = Memory limit exceeded [OK]
      Hint: OOMKilled means container used too much memory [OK]
      Common Mistakes:
      • Confusing OOMKilled with network errors
      • Thinking OOMKilled means container finished normally
      • Assuming OOMKilled is a manual stop
      2. Which kubectl command helps you check why a pod's container was OOMKilled?
      easy
      A. kubectl get pods --all-namespaces
      B. kubectl logs <pod-name>
      C. kubectl describe pod <pod-name>
      D. kubectl exec <pod-name> -- top

      Solution

      1. Step 1: Identify command to get pod details

        kubectl describe pod <pod-name> shows detailed pod info including container status and reasons for restarts.
      2. Step 2: Confirm OOMKilled reason visibility

        This command shows events and container states, including if a container was OOMKilled.
      3. Final Answer:

        kubectl describe pod <pod-name> -> Option C
      4. Quick Check:

        Describe pod shows OOMKilled reason [OK]
      Hint: Use 'kubectl describe pod' to see OOMKilled details [OK]
      Common Mistakes:
      • Using 'kubectl get pods' which lacks detailed reason
      • Checking logs which may not show OOMKilled cause
      • Running exec commands which don't show pod status
      3. Given this pod description snippet, what caused the container to stop?
      State: Terminated
      Reason: OOMKilled
      Exit Code: 137
      
      medium
      A. The container was killed because it used too much memory.
      B. The container ran out of CPU resources.
      C. The container was terminated due to a manual stop.
      D. The container crashed due to a software error.

      Solution

      1. Step 1: Analyze the Reason field

        The Reason is 'OOMKilled', which means the container was killed because it exceeded memory limits.
      2. Step 2: Understand Exit Code 137

        Exit code 137 means the process was killed by signal 9 (SIGKILL), typical for OOMKilled events.
      3. Final Answer:

        The container was killed because it used too much memory. -> Option A
      4. Quick Check:

        Reason OOMKilled + Exit 137 = Memory kill [OK]
      Hint: Exit code 137 with OOMKilled means memory limit exceeded [OK]
      Common Mistakes:
      • Confusing CPU limits with memory limits
      • Assuming manual stop without checking reason
      • Thinking software error caused termination
      4. You see a pod's container repeatedly OOMKilled. Which change fixes this issue?
      medium
      A. Increase the container's memory limit in the pod spec.
      B. Decrease the container's CPU limit in the pod spec.
      C. Remove the memory limit from the pod spec.
      D. Restart the pod manually every time it OOMKills.

      Solution

      1. Step 1: Identify cause of repeated OOMKilled

        Repeated OOMKilled means the container needs more memory than allowed.
      2. Step 2: Choose proper fix

        Increasing the memory limit lets the container use more memory and prevents OOMKilled.
      3. Final Answer:

        Increase the container's memory limit in the pod spec. -> Option A
      4. Quick Check:

        More memory limit stops OOMKilled [OK]
      Hint: Raise memory limit to stop OOMKilled repeats [OK]
      Common Mistakes:
      • Lowering CPU limit which doesn't affect memory
      • Removing memory limit causing instability
      • Relying on manual restarts instead of fixing limits
      5. A pod's container is OOMKilled even though its memory limit is set to 512Mi. You want to prevent this without increasing the limit. What is the best approach?
      hard
      A. Increase the CPU limit to speed up processing.
      B. Optimize the application to use less memory inside the container.
      C. Remove the memory limit to avoid OOMKilled.
      D. Add more replicas of the pod to distribute load.

      Solution

      1. Step 1: Understand memory limit and OOMKilled

        The container hits the 512Mi limit and is killed. Increasing limit is not an option.
      2. Step 2: Find alternative to increasing memory

        Optimizing the app to use less memory reduces usage below the limit, preventing OOMKilled.
      3. Step 3: Evaluate other options

        Removing limit risks node stability, increasing CPU doesn't reduce memory, adding replicas doesn't fix memory per container.
      4. Final Answer:

        Optimize the application to use less memory inside the container. -> Option B
      5. Quick Check:

        Lower memory use avoids OOMKilled without raising limit [OK]
      Hint: Reduce app memory use to avoid OOMKilled without raising limit [OK]
      Common Mistakes:
      • Removing memory limits causing node crashes
      • Increasing CPU expecting memory fix
      • Adding replicas without fixing memory use