1 - Depurar un StatefulSet

Esta tarea muestra cómo depurar un StatefulSet.

Antes de empezar

  • Necesitas un clúster de Kubernetes, y la herramienta de línea de comandos kubectl debe estar configurada para comunicarse con tu clúster.
  • Deberías tener un StatefulSet en ejecución que quieras investigar.

Depurar un StatefulSet

Con el fin de listar todos los Pods que pertenecen a un StatefulSet, que tienen una etiqueta app.kubernetes.io/name=MyApp configurada, puedes utilizar lo siguiente:

kubectl get pods -l app.kubernetes.io/name=MyApp

Si encuentras que cualquiera de los Pods listados está en un estado Unknown o Terminating por un período de tiempo prolongado, consulta la tarea Eliminar Pods de un StatefulSet para instrucciones sobre cómo tratarlos. Puedes depurar Pods individuales en un StatefulSet utilizando la guía Depurar Pods.

¿Qué sigue?

Aprende más sobre Depurar un Init Container.

2 - 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:

Para verificar la versión, ingresa kubectl version.

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.

EstadoSignificado
Init:N/MEl Pod tiene M Init Containers, y por el momento se han completado N.
Init:ErrorHa fallado la ejecución de un Init Container.
Init:CrashLoopBackOffUn Init Container ha fallado de forma repetida.
PendingEl Pod todavía no ha comenzado a ejecutar sus Init Containers.
PodInitializing o RunningEl Pod ya ha terminado de ejecutar sus Init Containers.