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