Kubernetes: How to debug a pod?

The first step in debugging a Pod is taking a look at it and check the status of each container.

kubectl describe pods <pod-name>

My pod stays pending

If a Pod is stuck in Pending it means that it can not be scheduled onto a node. Have a look at the reason column. There may be two reasons

  • You don’t have enough resources
    • Your resources like CPU or Memory may be exhausted
    • Try changing resource request and delete and re-create pod
  • You are using hostPort
    • hostPort is unnecessary, try using a Service object to expose your Pod
    • If you do require hostPort then you can only schedule as many Pods as there are nodes

My pod stays waiting

If a Pod is stuck in the Waiting state, then it has been scheduled to a worker node, but it can’t run on that machine. The most common cause of Waiting pods is a failure to pull the image.

  • Make sure that you have the name of the image correct.
  • Have you pushed the image to the repository?
  • Run a manual docker pull image on your machine to see if the image can be pulled

My pod is crashing or unhealthy

# check the current logs
kubectl logs <pod-name> <container-name>

# if failed previously
kubectl logs --previous <pod-name> <container-name>

# check the logs in a container
kubectl exec <pod-name> -c <container-name> -- <cmd> <args...>​