Cómo funciona Kubernetes: del estado deseado a las cargas en ejecución

Cómo funciona Kubernetes, explicado en un lienzo interactivo: los manifiestos, el plano de control, la planificación y el bucle de reconciliación que mantiene las cargas en ejecución.

Kubernetes ejecuta aplicaciones en contenedores reconciliando sin parar: tú declaras el estado deseado, y el plano de control y los nodos de trabajo trabajan para que el clúster coincida con él.

Cómo funciona Kubernetes: del estado deseado a las cargas en ejecución

El lienzo interactivo de FlowJam de esta explicación: cada carril, cada fila y cada flecha de arriba forma parte de un diagrama real de QueryChart que puedes abrir y editar.

Cómo leer este diagrama

  • Lee las cuatro columnas de izquierda a derecha: Declaración, Planificación, Ejecución y Mantenimiento.
  • Las filas del plano de control (arriba) deciden; las de los nodos de trabajo (abajo) hacen. Las flechas de arriba abajo son órdenes; el bucle que sube desde «¿El pod está sano?» es el ciclo de reconciliación.
  • El estado deseado del manifiesto es la única fuente de verdad: todas las demás cajas existen para acercar la realidad a él.

Declarar el estado deseado

«kubectl apply de un manifiesto de estado deseado» es como empieza todo: el desarrollador describe el objetivo —«3 réplicas de la API, imagen v2.1, puerto 8080»— y lo envía. «El servidor de API guarda el estado deseado en etcd» es el punto de confirmación: el servidor de API del plano de control es la puerta de entrada y etcd es la única fuente de verdad del clúster. Todo lo que sigue es consecuencia de esa única escritura.

La planificación

«El planificador observa y elige nodos para los pods» y «El planificador asigna cada pod a un nodo sano» son el plano de control eligiendo dónde se ejecuta el trabajo. El planificador tiene en cuenta los recursos y las restricciones de cada nodo y coloca el pod en el mejor candidato: el desarrollador no elige máquinas, solo el estado deseado.

Ejecutar en los nodos de trabajo

«El kubelet del nodo descarga imágenes y arranca contenedores» es la mitad obrera del acuerdo: el kubelet es el agente del plano de control en cada nodo, habla con el runtime de contenedores para arrancar los pods asignados e informa del estado de salud. «Un Service enruta el tráfico a los pods en ejecución» añade el punto de entrada de red estable: los pods van y vienen, pero el nombre del Service no cambia.

Mantener el estado

«El controlador reconcilia: reinicia los fallos y escala las réplicas» es el bucle de realimentación, y «¿El pod está sano?» es su sonda: las comprobaciones de liveness y readiness deciden si un pod se sustituye (la rama «No» vuelve a la reconciliación) o se mantiene. «El Deployment se mantiene en el estado deseado» es el estado final: no un trabajo terminado, sino un sistema en ejecución que coincide con su manifiesto.

Relaciones clave y conclusiones

  • Kubernetes es declarativo: declaras el objetivo, no los pasos, y el sistema hace el resto.
  • El plano de control decide y el kubelet ejecuta: nada se ejecuta sin el estado deseado en etcd.
  • La reconciliación es el bucle: comparar, aplicar la diferencia y repetir, siempre.
  • Las sondas deciden la salud y la salud decide la sustitución: un pod que falla se reinicia sin intervención humana.
  • Kubernetes orquesta los contenedores que empaqueta Docker, y por eso los dos diagramas se conectan.

Cuándo usar este diagrama

  • Explicar la distinción entre plano de control y nodos de trabajo a un equipo que empieza con Kubernetes.
  • Enseñar el modelo declarativo antes de que alguien escriba sus primeros manifiestos de Deployment y Service.
  • Anclar una conversación sobre la autorreparación: qué arregla Kubernetes solo y qué sigue necesitando a un operador.

Cómo funciona

  1. Anota el manifiesto que ejecutas de verdad

    En el paso del apply, añade notas sobre tu Deployment y tu Service reales —número de réplicas, imágenes, puertos— para que el diagrama refleje tu clúster.

  2. Añade la capa de red

    Inserta una caja de Ingress entre el Service y los usuarios y anota cómo expone el tráfico tu clúster, porque es la parte que la mayoría de los equipos personaliza primero.

  3. Muestra tus reglas de escalado

    Amplía el paso de reconciliación con una rama de Horizontal Pod Autoscaler que escale las réplicas según la CPU o métricas personalizadas, y termínala en su propio estado.

  4. Añade los caminos de fallo y de almacenamiento

    Incluye volúmenes persistentes para las cargas con estado y las reglas de antiafinidad que uses, cada una con un comentario que explique por qué.

Preguntas frecuentes

¿Qué es Kubernetes en términos sencillos?

Kubernetes es un sistema que ejecuta aplicaciones en contenedores sobre un clúster de máquinas y las mantiene en marcha. Le dices lo que quieres —cuántas copias de cada aplicación, qué imagen, qué puertos— y él planifica el trabajo sobre las máquinas, reinicia los fallos, escala hacia arriba y hacia abajo y enruta el tráfico. El diagrama lo recoge como declarar, planificar, ejecutar y mantener.

¿Qué es el plano de control en Kubernetes?

El plano de control es el conjunto de componentes que toman las decisiones del clúster: el servidor de API que acepta tus manifiestos, etcd que guarda el estado deseado, el planificador que coloca los pods y los controladores que reconcilian la realidad hacia el estado deseado. Es el cerebro. Los nodos de trabajo son el músculo: cada uno ejecuta un kubelet que arranca y vigila los pods que se le asignan.

¿Qué significa «declarativo» en Kubernetes?

Significa que describes el estado objetivo en lugar de dar órdenes para alcanzarlo. Aplicas un manifiesto que dice «ejecuta tres réplicas»; Kubernetes deduce los pasos y los sigue dando cada vez que la realidad se desvía. Si un pod muere, el controlador crea un sustituto para volver a tres, sin que nadie vuelva a lanzar un comando. El manifiesto es la única fuente de verdad y la reconciliación es el mecanismo.

¿Cómo mantiene Kubernetes sanas las aplicaciones?

Mediante las sondas y el bucle de reconciliación. Las sondas liveness le dicen a Kubernetes si un contenedor está vivo: una sonda liveness que falla lo reinicia. Las sondas readiness le dicen si un pod puede atender tráfico: una sonda readiness que falla lo saca del Service. El controlador compara el estado en ejecución con el estado deseado y aplica la diferencia de forma continua, que es el bucle que representa la decisión «¿El pod está sano?» del diagrama.

Edita este diagrama en QueryChart (FlowJam)

Abre ese mismo lienzo de Kubernetes como tu propio diagrama, renombra los componentes con los de tu clúster y anota tus cargas de trabajo.

Edita este diagrama en QueryChart (FlowJam)

Más en Explicaciones visuales