Differrent Kubernetes Pod status

Kubernetes Pod Status Reference

In Kubernetes, pod health is tracked through a high-level Phase and more specific Container States. When you run kubectl get pods, the STATUS column provides a summary of these combined values.

1. The 5 Pod Phases

The phase is a high-level summary of where the Pod is in its lifecycle.

PhaseDescription
PendingThe Pod is accepted by the cluster, but one or more containers are not yet running. This includes time spent waiting to be scheduled and downloading images.
RunningThe Pod has been bound to a node, all containers have been created, and at least one is still running (or is in the process of starting/restarting).
SucceededAll containers in the Pod have terminated successfully (exit code 0). They will not restart. (Typical for CronJobs/Tasks).
FailedAll containers have terminated, but at least one container exited with a failure (non-zero exit code).
UnknownThe state of the Pod cannot be obtained, typically due to a communication error between the API server and the Node.

2. Common Operational Statuses

These are the detailed strings you frequently see in the kubectl get pods output. They usually indicate specific errors.

Image & Configuration Issues

  • ErrImagePull: The image name is wrong or the registry is unreachable.
  • ImagePullBackOff: Kubernetes is waiting to retry pulling the image after a failure.
  • CreateContainerConfigError: A referenced Secret or ConfigMap is missing.

Runtime Failures

  • CrashLoopBackOff: The application started but crashed. Kubernetes is now in a cooling-off period before trying to start it again.
  • OOMKilled: The container was terminated because it exceeded its defined memory limit.
  • Error: The container crashed once with a non-zero exit code.

Node & Lifecycle Issues

  • Terminating: The Pod is being deleted or moved; it is waiting for its grace period to end.
  • Evicted: The Node ran out of resources (Disk/RAM), and the Pod was forced off to save the Node.
  • NodeLost: The Node the Pod was running on is no longer reachable.

3. Pod Conditions

Conditions are “True/False” flags that explain the transition between phases. You can see these by running kubectl describe pod <name>.

  • PodScheduled: Successfully assigned to a Node.
  • Initialized: All initContainers have completed successfully.
  • ContainersReady: All containers in the Pod are ready.
  • Ready: The Pod is able to serve requests and should be added to the load balancing pools of matching Services.

Troubleshooting Commands

If a Pod is not in the Running state, use these commands to find out why:

Bash

# Get the high-level status
kubectl get pods

# Get detailed logs of events (Check the 'Events' section at the bottom)
kubectl describe pod <pod-name>

# Check the application logs for crashes
kubectl logs <pod-name>

Leave a Reply

Your email address will not be published. Required fields are marked *