This page shows how to investigate problems related to the execution of Init Containers. The example command lines below refer to the Pod as <pod-name>
and the Init Containers as <init-container-1>
and <init-container-2>
.
You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:
To check the version, enterkubectl version
. Display the status of your pod:
kubectl get pod <pod-name>
For example, a status of Init:1/2
indicates that one of two Init Containers has completed successfully:
NAME READY STATUS RESTARTS AGE
<pod-name> 0/1 Init:1/2 0 7s
See Understanding Pod status for more examples of status values and their meanings.
View more detailed information about Init Container execution:
kubectl describe pod <pod-name>
For example, a Pod with two Init Containers might show the following:
Init Containers:
<init-container-1>:
Container ID: ...
...
State: Terminated
Reason: Completed
Exit Code: 0
Started: ...
Finished: ...
Ready: True
Restart Count: 0
...
<init-container-2>:
Container ID: ...
...
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 1
Started: ...
Finished: ...
Ready: False
Restart Count: 3
...
You can also access the Init Container statuses programmatically by reading the status.initContainerStatuses
field on the Pod Spec:
kubectl get pod nginx --template '{{.status.initContainerStatuses}}'
This command will return the same information as above in raw JSON.
Pass the Init Container name along with the Pod name to access its logs.
kubectl logs <pod-name> -c <init-container-2>
Init Containers that run a shell script print commands as they're executed. For example, you can do this in Bash by running set -x
at the beginning of the script.
A Pod status beginning with Init:
summarizes the status of Init Container execution. The table below describes some example status values that you might see while debugging Init Containers.
Status | Meaning |
---|---|
Init:N/M | The Pod has M Init Containers, and N have completed so far. |
Init:Error | An Init Container has failed to execute. |
Init:CrashLoopBackOff | An Init Container has failed repeatedly. |
Pending | The Pod has not yet begun executing Init Containers. |
PodInitializing or Running
| The Pod has already finished executing Init Containers. |
© 2022 The Kubernetes Authors
Documentation Distributed under CC BY 4.0.
https://kubernetes.io/docs/tasks/debug-application-cluster/debug-init-containers/