Ir al contenido principal

El ciclo de vida y sus fases, en las cargas de trabajo (workloads) de kubernetes.



 El ciclo de vida en Kubernetes se refiere a las diferentes fases por las que pasa un pod o una carga de trabajo (como una aplicación) desde su creación hasta su eliminación. A lo largo de su ciclo de vida, los pods en Kubernetes pueden ser administrados y ajustados de diferentes maneras para asegurar que la aplicación se mantenga disponible, actualizada y funcionando correctamente. Vamos a desglosar las fases principales y cómo Kubernetes las gestiona:

Fases del ciclo de vida de un Pod

  1. Pending (Pendiente):
    • Cuando un pod es creado, entra en la fase Pending. Esto significa que Kubernetes está evaluando en qué nodo del clúster debe desplegarse el pod, y está asignando los recursos necesarios. Durante este tiempo, Kubernetes intenta localizar nodos con suficiente capacidad (CPU, memoria, etc.) para ejecutar el pod.
  2. Running (En ejecución):
    • Una vez que se han encontrado los recursos necesarios y el pod ha sido programado en un nodo, pasa a la fase Running. Aquí, los contenedores dentro del pod se están ejecutando. Si el pod tiene más de un contenedor, todos deben iniciarse correctamente para que el pod esté completamente en estado "Running".
  3. Succeeded (Exitoso):
    • Esta fase ocurre cuando el pod ha completado su trabajo y se ha detenido correctamente. Es común en trabajos que tienen una tarea definida y limitada en el tiempo, como un Job. Los pods en esta fase ya no se ejecutan, pero se consideran completados con éxito.
  4. Failed (Fallido):
    • Si un pod no puede completar su tarea, entra en la fase Failed. Esto sucede cuando uno o más de los contenedores del pod terminan con un estado de error. Kubernetes puede reiniciar el pod dependiendo de su configuración, intentando recuperar la carga de trabajo.
  5. Unknown (Desconocido):
    • Esta es una fase poco común y ocurre cuando el kubelet (el componente de Kubernetes que se ejecuta en cada nodo) no puede determinar el estado del pod, posiblemente debido a problemas de comunicación entre el nodo y el control plane.

Mecanismos de Kubernetes para gestionar el ciclo de vida

A lo largo del ciclo de vida, Kubernetes ofrece mecanismos para gestionar los pods y garantizar que las aplicaciones se mantengan disponibles y resilientes. Algunos de estos mecanismos son:

  1. Readiness Probes (Sondas de preparación):

    • Estas sondas ayudan a Kubernetes a determinar cuándo un pod está listo para recibir tráfico. Solo cuando el pod pasa la sonda de preparación se le puede añadir a la lista de pods disponibles para atender solicitudes. Es útil cuando un pod tarda en inicializarse, ya que evita que se envíe tráfico a un pod que aún no está listo.
  2. Liveness Probes (Sondas de vida):

    • Estas sondas verifican que un pod está vivo y funcionando correctamente. Si un pod falla esta sonda, Kubernetes puede reiniciarlo automáticamente. Esto asegura que las aplicaciones continúen funcionando sin intervención manual si un contenedor dentro del pod se bloquea o se cuelga.
  3. Startup Probes:

    • Similar a las sondas de vida, pero específicamente diseñadas para aplicaciones que tardan en arrancar. Estas sondas permiten darle a un pod más tiempo para inicializarse antes de considerarlo fallido.
  4. Scaling (Escalado):

    • A medida que la demanda de una aplicación aumenta o disminuye, Kubernetes puede escalar automáticamente el número de pods en función del uso de recursos, como CPU o memoria, a través del Horizontal Pod Autoscaler (HPA). Esto asegura que la aplicación puede manejar más tráfico si es necesario, y reduce los recursos cuando la demanda es baja.
  5. Rolling Updates (Actualizaciones continuas):

    • Como parte del ciclo de vida de las cargas de trabajo, las aplicaciones deben actualizarse sin interrumpir su funcionamiento. Kubernetes gestiona esto con las actualizaciones continuas (Rolling Updates), que reemplazan de manera gradual los pods antiguos con nuevos pods, manteniendo siempre un mínimo de pods en ejecución para no interrumpir el servicio.
  6. Recreate Strategy (Estrategia de recreación):

    • Alternativamente, en algunas situaciones se puede optar por la estrategia Recreate, donde Kubernetes destruye todos los pods de una aplicación antes de crear nuevos. Esto garantiza que no haya conflictos entre versiones, pero puede causar un tiempo de inactividad.

¿Por qué es importante entender el ciclo de vida?

Entender el ciclo de vida de un pod es fundamental para aprovechar las capacidades de autosuficiencia y escalabilidad de Kubernetes. El ciclo de vida permite que las aplicaciones sean:

  • Resilientes: Si un pod falla, Kubernetes puede reiniciarlo automáticamente o crear uno nuevo, minimizando el tiempo de inactividad.
  • Escalables: Kubernetes puede aumentar o reducir la cantidad de pods en función de las necesidades de la aplicación.
  • Seguras: Al saber cuándo un pod está listo o cuándo ha fallado, Kubernetes protege la disponibilidad de los servicios.
  • Fácil de gestionar: Las actualizaciones y reversiones se manejan automáticamente, lo que permite a los equipos de operaciones implementar nuevas versiones sin interrupciones.

Comentarios

Entradas populares de este blog

Autenticación y Autorización (Kubernetes).

La autenticación en Kubernetes es un aspecto crítico para la seguridad y control de acceso dentro de un clúster. Kubernetes proporciona varios mecanismos de autenticación para usuarios y cuentas de servicio, que deben pasar a través del API Server para realizar cualquier operación. En este artículo, revisaremos cómo funciona la autenticación y cómo puedes usar herramientas como kubectl y curl para interactuar de manera segura con el clúster. En primer lugar, ¿Qué es la autenticación y la autorización? •     Autenticación:  Es el proceso de verificar quién es un usuario. Responde a la pregunta "¿Quién eres?". •     Autorización: El proceso de determinar qué acciones puede realizar un usuario autenticado. Responde a la pregunta "¿Qué puedes hacer?". Primer paso: Autenticación. La autenticación en Kubernetes es el proceso mediante el cual el sistema verifica la identidad de los usuarios y cuentas de servicio que intentan acceder al clúster.  ...

Tip 1. Exámen CKA. Economiza y optimiza tu tiempo; Usa --help con el paginador Less en la ayuda.

📘 Domina los comandos --help y el uso de less en el examen CKA Durante el examen CKA (Certified Kubernetes Administrator) , uno de los recursos más potentes y completamente permitidos es el uso del --help en los comandos de Kubernetes. Además, puedes combinarlo con el paginador less para buscar y navegar fácilmente entre opciones. ✅ ¿Está permitido usar --help ? Sí, está 100% permitido . Puedes usar el --help de cualquier comando disponible en el entorno del examen: kubectl --help kubeadm init --help kubelet --help kubectl explain pod.spec.containers Estos comandos muestran la ayuda y las opciones disponibles directamente desde el sistema, sin necesidad de ir a la documentación. 🔍 ¿Cómo usar less para buscar rápidamente? Cuando la salida del comando es larga, puedes usar | less para verla de forma paginada y navegar más cómodamente. kubeadm init --help | less Una vez dentro de less , puedes buscar cualquier texto escribiendo /texto . Por ejemplo: /pod-networ...

TLS Bootstrapping en Kubernetes: Qué es, cómo funciona y por qué importa en el examen CKA

                                                       Uno de los conceptos que a menudo pasan desapercibidos en la administración de Kubernetes —pero que resultan clave tanto en entornos reales como en el examen CKA— es el TLS Bootstrapping . En este artículo entenderás qué es, cómo funciona, qué lo diferencia del kubeadm join tradicional y cómo puede aparecer en el examen. ¿Qué es TLS Bootstrapping? TLS Bootstrapping es el proceso por el cual el kubelet , el agente que corre en cada nodo, obtiene automáticamente un certificado TLS firmado por el clúster para autenticarse con el kube-apiserver . En otras palabras: permite que un nuevo nodo se una de forma segura al clúster sin necesidad de copiar manualmente los certificados. ¿Por qué es necesario? Cuando añades un nuevo nodo worker, su kubelet necesita autentic...