CKA Troubleshooting Practice Question
A pod is in 'CrashLoopBackOff' state. Which THREE of the following are possible causes?
⚠ Common exam trap
The CKA exam often tests the distinction between CrashLoopBackOff and ImagePullBackOff, where candidates confuse image-related issues (like a missing image) with application-level startup failures that cause the container to crash.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
The container's startup command has invalid arguments
Option A is correct because if the container's startup command (ENTRYPOINT/CMD) contains invalid arguments, the process exits immediately with a non-zero code, causing kubelet to restart it repeatedly and enter CrashLoopBackOff. Option C is correct because if the application attempts to bind to a port already in use inside the container, it fails at startup and exits, triggering the same restart loop. Option E is correct because a missing required environment variable typically causes the application to fail fast during initialization, again producing repeated crashes. Option B is not a CrashLoopBackOff cause: a nonexistent image results in an ImagePullBackOff or ErrImagePull state, since the container never starts. Option D is also not correct: an unbound PVC leaves the pod stuck in Pending (or ContainerCreating) due to an unschedulable volume, not in CrashLoopBackOff.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✓
The container's startup command has invalid arguments
Why this is correct
A container whose startup command includes invalid arguments (for example, a misspelled flag, undefined positional parameter, or a file path that does not exist) causes the runtime to launch the process only for it to exit immediately with a non-zero exit code. Because the process fails before it can do meaningful work, the kubelet sees a completed/error container and applies the restartPolicy, which rapidly restarts it and transitions to CrashLoopBackOff. The backoff timer doubles on each restart, but the underlying command flaw remains, so the crash loop persists until the arguments are corrected.
- ✗
The container image does not exist
Why it's wrong here
If the container image does not exist or the tag is invalid, the kubelet cannot pull it in the first place; this results in ImagePullBackOff (and eventually ErrImagePull) rather than CrashLoopBackOff. The pod is never in a Running state because there is no container process to crash. The failure happens at the container runtime level during the image pull phase, whereas CrashLoopBackOff requires successful image pull and container startup followed by an exit.
- ✓
The application tries to bind to a port that is already in use
Why this is correct
When an application inside a container attempts to bind to a network port that is already occupied within its network namespace—for instance, by a previous instance of the same pod on a single-container setup or a hostNetwork process—the socket bind system call fails with 'Address already in use'. The application logs this fatal error and exits, causing Kubernetes to restart the container according to the restart policy. Since the port conflict is persistent, each restart repeats the same failure, producing CrashLoopBackOff.
- ✗
The PersistentVolumeClaim is not bound
Why it's wrong here
An unbound PersistentVolumeClaim prevents the pod from being scheduled; the kubelet cannot attach and mount the volume because the PVC has not been fulfilled by an available PersistentVolume. Consequently, the pod remains in Pending state with events indicating 'waiting for a volume to be created', and its containers never start. CrashLoopBackOff, by contrast, is a post-start phase—the container image must have been pulled and the container started and exited at least once, which cannot happen when volume association fails.
- ✓
A required environment variable is not set
Why this is correct
A required environment variable that the application expects (e.g., DATABASE_URL, API_KEY, or CONFIG_PATH) is often read during early initialization; if absent, the program may throw an unhandled exception, call os.Exit(1), or panic with nil dereference, causing an immediate non-zero exit. The container starts successfully at the runtime level, so Kubernetes re-launches it as per restartPolicy, but every attempt fails identically because the variable is still absent. This leads to a crash loop, and it is often caught by inspecting logs for the specific missing configuration key.
Go deeper
Related to this question
Key term
Pod Failure Troubleshooting
Pod failure troubleshooting is the process of identifying and resolving issues that cause Kubernetes pods to crash, restart, or become unavailable.
Key term
Persistent Volumes
A Persistent Volume is a piece of storage in a Kubernetes cluster that has been provisioned by an administrator and exists independently of any single pod that uses it.
About these practice questions
Courseiva writes every CKA question from scratch — 726 in total, each with an explanation and a wrong-answer breakdown. None are copied from real exams or dumps. Learn why practice questions differ from exam dumps →
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This CKA practice question is part of Courseiva's free CNCF certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the CKA exam.