Saltar al contenido principal

Capítulo 3.4 - Ciclo de Vida de los Pods

Objetivos de Aprendizaje​

Al final de este capítulo, usted será capaz de:

  • Comprender las fases de un Pod
  • Identificar los estados de un Pod
  • Comprender las condiciones
  • Gestionar los reinicios

Fases de un Pod​

Un Pod pasa por varias fases durante su ciclo de vida:


Estados Detallados​

1. Pending​

El Pod ha sido aceptado por Kubernetes pero los contenedores aún no han sido creados.

Posibles razones:

  • Imagen en proceso de descarga
  • No hay nodo disponible
  • Recursos insuficientes

2. Running​

El Pod está asignado a un nodo y todos los contenedores han sido creados. Al menos un contenedor está en ejecución.

3. Succeeded​

Todos los contenedores del Pod han finalizado correctamente y no serán reiniciados.

4. Failed​

Al menos un contenedor ha finalizado con error.

5. Unknown​

No se puede obtener el estado del Pod (problema de comunicación con el nodo).


Condiciones de un Pod​

Las condiciones proporcionan más detalles sobre el estado:

conditions:
- type: PodScheduled
status: "True"
reason: ""
- type: Initialized
status: "True"
- type: ContainersReady
status: "True"
- type: Ready
status: "True"

Tipos de condiciones:

  • PodScheduled: El Pod ha sido asignado a un nodo
  • Initialized: Todos los init containers han finalizado
  • ContainersReady: Todos los contenedores están listos
  • Ready: El Pod puede servir tráfico

Restart Policy​

Determina cuándo reiniciar los contenedores:

spec:
restartPolicy: Always # Siempre reiniciar
# restartPolicy: OnFailure # Reiniciar solo en caso de fallo
# restartPolicy: Never # Nunca reiniciar

Init Containers​

Los init containers se ejecutan antes de los contenedores principales:

spec:
initContainers:
- name: init-db
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do sleep 2; done']
containers:
- name: app
image: my-app:1.0

Casos de uso:

  • Esperar a que una dependencia esté lista
  • Inicializar la base de datos
  • Descargar archivos de configuración

Comandos Útiles​

# Ver el estado de un Pod
kubectl get pod my-pod

# Detalles completos con condiciones
kubectl describe pod my-pod

# Ver los eventos
kubectl get events --field-selector involvedObject.name=my-pod

# Logs de un contenedor que ha fallado
kubectl logs my-pod --previous

Resumen​

En este capítulo, usted ha aprendido:

Fases: Pending → Running → Succeeded/Failed
Condiciones: PodScheduled, Initialized, ContainersReady, Ready
Restart Policy: Always, OnFailure, Never
Init Containers: Se ejecutan antes de los contenedores principales
Diagnóstico: kubectl describe, get events, logs --previous


Próximos Pasos​

Ahora que usted comprende el ciclo de vida:

Capítulo 3.5: ReplicaSets - Gestión de la Replicación
Lab 3.1: Creación y Gestión de Pods


Capítulo creado el: Diciembre 2024