Holaaa. ¡Qué emoción!!! En este post vamos a dar un primer esbozo sobre Kubernetes (K8s 🐳 para los panas).
¡Vamos de una al tema!
Básicamente K8s es un orquestador de contenedores: un sistema que decide dónde y cómo corren tus aplicaciones dentro de un clúster de máquinas, sin que tengas que hacerlo a mano una por una.
De forma muy burda, un clúster de K8s se compone de dos piezas: el master 🧠 (o control plane) y los nodos 🚢. Para los diagramas de esta serie usaré solo 3 nodos, mantengamos las cosas simples.
Como me gusta mucho el mar 🌊, haré un montón de analogías sobre el mar.
Ahora quiero que pienses en el master como una aduana 🛃 y en los nodos como barcos: la aduana decide qué carga va en cada barco y les da la orden de zarpar. Ese es nuestro primer nivel de abstracción, ya iremos bajando de nivel.

El master (el cerebro) 🧠
La primera vez que estudié K8s, pensaba en el master como un monolito de un solo componente, pero realmente ¡no! El master no es una sola cosa, sino un conjunto de componentes que colaboran entre sí. Así que vamos a desglosarlos uno por uno.

API server 🚪
Probablemente el componente más importante, y con el que más contacto tendrás mientras trabajas con K8s (a menos que te metas más a fondo en el control plane).
El API server es la puerta de entrada: todo lo que quieras hacer en el clúster pasa por él, ya sea mandando requests en formato JSON directamente, o usando kubectl, la herramienta de línea de comandos con la que en la práctica vas a interactuar día a día. (No preguntes cómo se pronuncia, K8s ya de por sí se lee de mil formas distintas, llámalo como te guste, estudiando, viendo videos en YouTube y TikTok. Todo el mundo lo pronuncia diferente.)
Ningún otro componente del master habla directo con el usuario: todos pasan por el API server, incluyendo el propio kubectl.
Scheduler 📋
El scheduler decide en qué nodo va cada Pod (todavía no hemos hablado de Pods a detalle, por ahora piénsalo como “un contenedor o grupo de contenedores”; más adelante veremos la diferencia con precisión).
Cuando pides crear algo, la petición llega primero al API server, y este es quien le avisa al scheduler que hay trabajo pendiente. El scheduler mira los recursos disponibles (CPU, memoria, restricciones que hayas definido) en cada nodo y elige el que mejor le queda a ese trabajo. El scheduler nunca ejecuta nada directamente, solo decide y asigna. 🎯
Controller manager 🎛️
Esta caja agrupa varios controladores, cada uno vigilando una parte distinta del estado del clúster. Los más relevantes para empezar:
- Node controller 🛰️: se encarga de vigilar el estado de los nodos. Si uno deja de responder, es quien detecta la caída y actualiza su estado.
- Replication controller 🔁: se asegura de que el número de réplicas que pediste (por ejemplo, “quiero 3 copias de este Pod corriendo siempre”) se mantenga; si una muere, este pide que se levante otra.
- Endpoints controller 🔌: conecta los Services con los Pods que deben recibir su tráfico, manteniendo esa lista actualizada según Pods aparecen o desaparecen.
- Service Account & Token controllers 🔑: manejan cuentas de servicio y los tokens de autenticación que usan los procesos dentro del clúster para hablar con el API server.
La idea detrás de todos ellos es la misma: comparan el estado deseado (lo que tú pediste) contra el estado actual del clúster, y si hay diferencia, actúan para corregirla. Este patrón de “reconciliación” ♻️ es el corazón filosófico de K8s y lo vas a ver repetirse en todos lados.
etcd 🗄️
Es la base de datos del clúster. Todo lo que existe o existió en K8s (el estado deseado, el estado observado, configuración, secretos) se guarda aquí. Es un almacén clave-valor distribuido, y es probablemente el componente más crítico de todo el master: si etcd se cae o se corrompe, el clúster pierde su memoria. ⚠️

Los nodos 🚢
Ya vimos el master, ¡sigamos con los barcos!!! Cada nodo corre tres piezas (súper importantes para entender cómo funcionan realmente):

Kubelet 📡
Es el agente que vive en cada nodo y hace de puente con el master: recibe instrucciones (qué Pods deben correr ahí) y reporta de vuelta el estado real de esos Pods. También es quien efectivamente arranca, detiene y supervisa los contenedores en ese nodo, apoyándose en el container runtime.
Kube-proxy 🌐
Se encarga de la parte de red: mantiene las reglas que permiten que el tráfico llegue al Pod correcto, tanto si viene de otro Pod dentro del clúster como si viene de fuera. Es lo que hace que un Service (una IP y nombre estables) siempre encuentre a los Pods reales detrás, aunque estos cambien de dirección constantemente.
Container runtime 📦
Es el software que en verdad crea y corre los contenedores (containerd o CRI-O son los más comunes hoy). El kubelet le dice qué correr, y el container runtime es quien sabe cómo hacerlo a bajo nivel.
Pods vs. contenedores 🫛
Ahora sí, hablemos de la unidad mínima de K8s: el Pod. En Kubernetes nunca despliegas un contenedor suelto, siempre despliegas un Pod.
Hablaré más adelante en otro post sobre qué realmente es un Pod, porque creo que lo amerita.
Un Pod puede contener uno o más contenedores, pero todos los contenedores dentro de un mismo Pod:
- comparten la misma dirección IP y el mismo espacio de red (pueden hablarse entre sí por
localhost), - pueden compartir volúmenes de almacenamiento,
- se programan siempre juntos en el mismo nodo, y viven y mueren juntos.
Lo normal es que un Pod tenga un solo contenedor (tu aplicación). Cuando tiene más de uno, suele ser un patrón tipo sidecar: un contenedor principal más otro que le da soporte (por ejemplo, uno que recolecta logs o hace de proxy de red), sin que ese segundo contenedor tenga sentido corriendo por su cuenta.

Con esto ya tenemos el mapa completo 🗺️: la aduana (master) decide qué se necesita y a dónde va, y los barcos (nodos) ejecutan y sostienen la carga real (los Pods).
¡Fin del primer post! Espero que te haya gustado, a medida que vayamos avanzando, iré adentrándome más a detalle en K8s, por ahora estamos literal en la orilla de este océano.
La canción del post
AMO ESTE ÁLBUM, más que una canción hablemos de lo increíble de este álbum. Es una fusión de rap, hip-hop y jazz, quisiera explicarte todo lo que implica, pero creo que es mejor que lo escuches por ti mismo, es justo como K8s una mezcla de componentes. Espero que te guste.
Jazzmatazz, Vol. 1 · Guru