Depurar Contenedores de Inicialización
Esta página muestra cómo investigar problemas relacionados con la ejecución
de los contenedores de inicialización (init containers). Las líneas de comando del ejemplo de abajo
se refieren al Pod como <pod-name>
y a los Init Containers como <init-container-1>
e
<init-container-2>
respectivamente.
Antes de empezar
Debes tener un cluster Kubernetes a tu dispocición, y la herramienta de línea de comandos kubectl
debe estar configurada. Si no tienes un cluster, puedes crear uno utilizando Minikube,
o puedes utilizar una de las siguientes herramientas en línea:
kubectl version
.
- Deberías estar familizarizado con el concepto de Init Containers.
- Deberías conocer la Configuración de un Init Container.
Comprobar el estado de los Init Containers
Muestra el estado de tu pod:
kubectl get pod <pod-name>
Por ejemplo, un estado de Init:1/2
indica que uno de los Init Containers
se ha ejecutado satisfactoriamente:
NAME READY STATUS RESTARTS AGE
<pod-name> 0/1 Init:1/2 0 7s
Echa un vistazo a Comprender el estado de un Pod para más ejemplos de valores de estado y sus significados.
Obtener detalles acerca de los Init Containers
Para ver información detallada acerca de la ejecución de un Init Container:
kubectl describe pod <pod-name>
Por ejemplo, un Pod con dos Init Containers podría mostrar lo siguiente:
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
...
También puedes acceder al estado del Init Container de forma programática mediante
la lectura del campo status.initContainerStatuses
dentro del Pod Spec:
kubectl get pod nginx --template '{{.status.initContainerStatuses}}'
Este comando devolverá la misma información que arriba en formato JSON.
Acceder a los logs de los Init Containers
Indica el nombre del Init Container así como el nombre del Pod para acceder a sus logs.
kubectl logs <pod-name> -c <init-container-2>
Los Init Containers que ejecutan secuencias de línea de comandos muestran los comandos
conforme se van ejecutando. Por ejemplo, puedes hacer lo siguiente en Bash
indicando set -x
al principio de la secuencia.
Comprender el estado de un Pod
Un estado de un Pod que comienza con Init:
especifica el estado de la ejecución de
un Init Container. La tabla a continuación muestra algunos valores de estado de ejemplo
que puedes encontrar al depurar Init Containers.
Estado | Significado |
---|---|
Init:N/M |
El Pod tiene M Init Containers, y por el momento se han completado N . |
Init:Error |
Ha fallado la ejecución de un Init Container. |
Init:CrashLoopBackOff |
Un Init Container ha fallado de forma repetida. |
Pending |
El Pod todavía no ha comenzado a ejecutar sus Init Containers. |
PodInitializing o Running |
El Pod ya ha terminado de ejecutar sus Init Containers. |