K8s Troubleshooting β Pod in Container Creating Status
Last updated
Last updated
In K8s, when a pod status shows βContainerCreatingβ, it means that the pod has been scheduled on a node (the decision has been made regarding which node the pod should run on), and the kubelet
on that node is in the process of creating the containers for that pod.
During this phase, the following actions are performed:
Pulling the required Docker images onto the node (if they are not already available locally).
Creating the containers from these images.
Starting the containers.
If everything goes as expected, the pod status transitions from βContainerCreatingβ to βRunningβ once all of the containers within the pod are up and running.
If a pod is stuck in ContainerCreating status for a long time, it generally indicates that thereβs an issue preventing the containers from being successfully created. Some of the common reasons include:
Image Pull Issues: This is one of the most common issues. It could be that the specified image doesnβt exist, the image name is misspelled, or thereβs a network issue preventing the image from being pulled.
Insufficient Resources: If the node doesnβt have enough CPU or memory resources available to run the containers, then the pod will not be able to move past the βContainerCreatingβ status.
Network Issues: If thereβs a network issue, such as a problem with the CNI (Container Network Interface) plugin, it might prevent the containers from being created.
Security Context Issues: If the security context for the pod or container is not properly configured (for example, the pod is trying to run as a specific user that doesnβt exist), it can prevent the container from starting.
Docker or Runtime Issues: If there are issues with the Docker daemon or container runtime, it could prevent the containers from being created.
Issues with Persistent Volumes: If the pod is dependent on a Persistent Volume Claim (PVC) and that PVC is not available or canβt be mounted for some reason, the pod will remain in the βContainerCreatingβ state.
You can use the kubectl describe pod <pod-name>
command to check the events of the pod.
Look for βFailed to pull imageβ or βImagePullBackOffβ events. These would indicate issues with pulling the Docker image.
Use the kubectl describe node <node-name>
command to check the resources on your node.
You can check Pod status use kubectl
command:
Looking for errors like:
Then check the PVC status:
If the STATUS of a PVC is not βBoundβ, there might be issues with storage provisioning.
Network issues can be a bit harder to diagnose. You can check the logs of your CNI plugin (which depends on the specific CNI you are using). For example, if youβre using Calico, you can check the logs of the Calico pods:
Check the security context of your Pod using the kubectl get pod <pod-name> -o yaml
command.
Check the logs on your node. The way to do this depends on your nodeβs operating system and your container runtime. For Docker on a system using systemd
, you can use: