Kubernetes es un orquestador de contenedores: un sistema que se encarga de correr, coordinar y mantener vivos muchos contenedores repartidos en varias máquinas. Docker resuelve empaquetar y correr un contenedor; Kubernetes resuelve el problema que aparece cuando hay que correr muchos: que no se caigan, que se reinicien solos si fallan, que se actualicen sin cortar el servicio y que aguanten picos de tráfico. Para empezar alcanza con tres piezas. El pod es la unidad mínima que Kubernetes ejecuta: envuelve uno o más contenedores muy relacionados. El deployment le dice a Kubernetes cuántas copias del pod querés y él se encarga de que siempre haya esa cantidad, reemplazando las que fallen y actualizándolas de forma ordenada. El service le da a ese grupo de pods una dirección estable y reparte el tráfico entre ellos, porque los pods van y vienen. Todo se describe de forma declarativa: escribís el estado deseado y Kubernetes trabaja para alcanzarlo. Es potente, pero también complejo: para una aplicación chica suele ser exagerado.
Ver índice de contenidos
Qué problema resuelve
Con Docker podés empaquetar tu aplicación y correrla en un contenedor. Perfecto para una aplicación pequeña en un servidor. Pero apenas la cosa crece, aparecen preguntas que Docker por sí solo no responde:
- ¿Qué pasa si el contenedor se cae a las tres de la mañana? ¿Quién lo reinicia?
- Si necesito diez copias para aguantar el tráfico, ¿las arranco y vigilo a mano en varias máquinas?
- ¿Cómo actualizo a una versión nueva sin que el servicio deje de responder ni un segundo?
- Si una máquina entera muere, ¿cómo se mueven sus contenedores a otra?
Orquestar: coordinar muchos contenedores
Kubernetes es un orquestador: automatiza correr y coordinar contenedores a través de un grupo de máquinas (un clúster). Vos le describís qué querés que ocurra —«mantené diez copias de esta aplicación corriendo siempre»— y él se encarga del cómo: los distribuye entre las máquinas, reinicia lo que falla, los mueve si una máquina muere y ajusta la cantidad. Es la diferencia entre manejar un contenedor y gobernar una flota.
El pod: la unidad que corre
La unidad mínima que Kubernetes ejecuta no es el contenedor: es el pod. Un pod envuelve uno o más contenedores muy relacionados que comparten red y almacenamiento, y actúan como una sola cosa. En la práctica, muchas veces un pod tiene un único contenedor, pero el pod es siempre la pieza que Kubernetes programa en una máquina.
La característica que hay que grabarse es que un pod es efímero: puede morir y ser reemplazado en cualquier momento —porque falló, porque su máquina se apagó, porque se actualizó la aplicación—. Cuando muere, no «revive»: nace otro pod nuevo, con otra identidad y otra dirección. Esa naturaleza descartable es justamente lo que hace falta gestionar, y para eso están las otras dos piezas.
El deployment: mantener el estado
Nadie crea pods a mano en un sistema serio. Se usa un deployment: un objeto al que le decís cuántas copias (réplicas) del pod querés que existan, y con qué imagen. A partir de ahí, el deployment vigila continuamente el estado real contra el deseado.
# Estado deseado: 3 copias de la aplicación, con esta imagen
apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-app
spec:
replicas: 3
template:
spec:
containers:
- name: web
image: mi-app:1.2.0Si uno de los tres pods se cae, el deployment crea otro para volver a tres. Si una máquina muere con dos pods dentro, los recrea en otras máquinas. Y cuando cambiás la versión de la imagen, el deployment reemplaza los pods viejos por los nuevos de forma gradual —esto es un rolling update—, sin cortar el servicio. Todo por describir un número, no por operar a mano.
El service: exponer y balancear
Queda un problema: si los pods van y vienen y cada uno tiene una dirección distinta y cambiante, ¿a dónde se conecta quien quiere usar la aplicación? La respuesta es el service: le da al grupo de pods una dirección estable y un nombre fijo, y reparte el tráfico entrante entre las copias disponibles, haciendo de balanceador de carga.
Quien usa la aplicación —otro servicio, o el mundo exterior— se conecta al service, que dirige cada petición a un pod que esté sano. Así, aunque los pods se reemplacen constantemente por detrás, la dirección de entrada nunca cambia. Esta separación entre la dirección estable (service) y las copias descartables (pods) es lo que permite que la maquinaria de abajo se mueva sin que nadie afuera lo note. Es la base de la operación y de las actualizaciones sin corte.
Con esas tres piezas —pods que corren, un deployment que los mantiene y un service que los expone— ya se entiende el 80 % de lo que ocurre en un clúster. El resto (almacenamiento, configuración, secretos, ingress, autoescalado) se apoya sobre esta base.
Cuándo usarlo (y cuándo no)
Kubernetes es potente, pero también es complejo de operar y fácil de sobredimensionar. La honestidad que conviene tener:
- Tiene sentido cuando corrés muchos servicios, necesitás alta disponibilidad real, escalás según la demanda, y tenés un equipo que pueda operarlo. En ese contexto, resuelve problemas caros.
- Suele ser exagerado para una aplicación pequeña, un sitio con poco tráfico o un proyecto de una sola persona. Ahí, un par de contenedores con Docker en un servidor, o una plataforma gestionada, resuelven lo mismo con una fracción de la complejidad.
- Antes de adoptarlo, conviene dominar Docker: Kubernetes orquesta contenedores, así que sin entenderlos primero, todo lo demás queda en el aire.
La regla general del costo de infraestructura aplica también a la complejidad: la herramienta correcta es la más simple que resuelve el problema que realmente tenés, no la más impresionante.
Errores frecuentes
- Adoptar Kubernetes sin necesitarlo. Para una app chica, agrega más problemas de los que resuelve.
- Saltar Docker. Kubernetes orquesta contenedores; sin entenderlos, nada tiene sentido.
- Confundir pod con contenedor. El pod es la unidad que Kubernetes ejecuta; puede envolver más de un contenedor.
- Conectarse a un pod en vez de al service. Los pods cambian de dirección; el service es el punto estable.
- Guardar estado en el pod. Los pods son efímeros; los datos van en almacenamiento persistente.
- Pensar de forma imperativa. No se «arranca» a mano: se declara el estado deseado y Kubernetes lo alcanza.
- Meter secretos en los manifiestos versionados. Van en objetos de secretos y gestores aparte, no en el YAML del repositorio.
Preguntas frecuentes
¿Qué es Kubernetes y qué hace?
Kubernetes es un orquestador de contenedores, es decir, un sistema que se encarga de correr, coordinar y mantener en funcionamiento muchos contenedores repartidos a través de un grupo de máquinas llamado clúster. Mientras que Docker resuelve el problema de empaquetar y ejecutar un contenedor individual, Kubernetes resuelve el problema que aparece cuando hay que ejecutar muchos y a escala: que no se caigan, que se reinicien automáticamente si fallan, que se distribuyan entre las máquinas disponibles, que se muevan a otra máquina si la suya se apaga, que se actualicen a versiones nuevas sin cortar el servicio y que aumenten o reduzcan su cantidad según el tráfico. Funciona de manera declarativa: uno describe el estado que desea que exista y Kubernetes trabaja de forma continua para alcanzarlo y mantenerlo, reparando por su cuenta cualquier desvío. Es una herramienta muy potente, adoptada ampliamente en la industria para operar aplicaciones grandes y críticas.
¿Qué son los pods, los deployments y los services?
Son las tres piezas básicas de Kubernetes. El pod es la unidad mínima que Kubernetes ejecuta: envuelve uno o más contenedores muy relacionados que comparten red y almacenamiento, y es efímero, lo que significa que puede morir y ser reemplazado por otro nuevo con una identidad y una dirección distintas en cualquier momento. El deployment es un objeto al que se le indica cuántas copias idénticas del pod deben existir y con qué imagen, y que vigila continuamente el estado real frente al deseado, creando pods nuevos cuando alguno se cae y encargándose además de actualizar la aplicación reemplazando los pods viejos por los nuevos de forma gradual y sin cortes. El service resuelve que, como los pods van y vienen y cambian de dirección, se necesita un punto de entrada estable: ofrece una dirección y un nombre fijos para todo el grupo de pods y reparte el tráfico entre las copias disponibles, actuando como balanceador de carga. Con estas tres piezas se entiende la mayor parte de lo que ocurre en un clúster.
¿Cuál es la diferencia entre Docker y Kubernetes?
No son competidores sino piezas de niveles distintos que suelen usarse juntas. Docker se ocupa de empaquetar una aplicación con su entorno en una imagen y de correr contenedores individuales; resuelve el «en mi máquina funciona» y es la base sobre la que se apoya todo lo demás. Kubernetes se ocupa de un problema de nivel superior: orquestar muchos contenedores a través de varias máquinas, manteniéndolos vivos, distribuyéndolos, escalándolos y actualizándolos de forma coordinada y automática. Dicho de otro modo, Docker te da un contenedor que corre, y Kubernetes gobierna una flota entera de contenedores en producción. Por eso el orden de aprendizaje natural es primero Docker y después Kubernetes, y por eso adoptar Kubernetes sin entender antes los contenedores lleva a la frustración: casi todo lo que Kubernetes coordina son, en el fondo, contenedores como los que crea Docker.
¿Qué significa que Kubernetes es declarativo?
Significa que uno no le da a Kubernetes una lista de órdenes paso a paso sobre qué hacer, sino que le describe en archivos de configuración el estado final que desea que exista: cuántas copias de la aplicación deben correr, qué imagen deben usar, cómo deben exponerse. A partir de esa descripción, Kubernetes se encarga por su cuenta de llevar el sistema a ese estado y, lo más importante, de mantenerlo así en el tiempo. Si en algún momento el estado real se desvía del deseado —porque un pod se cayó, una máquina murió o algo cambió— Kubernetes detecta la diferencia y actúa para corregirla, sin que nadie tenga que intervenir. Este enfoque declarativo contrasta con el imperativo, en el que uno ejecutaría comandos concretos y tendría que vigilar y reaccionar manualmente ante cada problema. La ventaja es enorme en robustez y en reproducibilidad, y es la base de prácticas avanzadas como GitOps, donde ese estado deseado vive versionado en un repositorio.
¿Kubernetes sirve para cualquier proyecto?
No, y creer que sí es uno de los errores más costosos. Kubernetes brilla cuando se corren muchos servicios, se necesita alta disponibilidad real, se escala según la demanda y se cuenta con un equipo capaz de operarlo, porque en ese contexto resuelve problemas genuinamente difíciles y caros. Pero para una aplicación pequeña, un sitio con poco tráfico o un proyecto de una sola persona, suele ser una solución claramente sobredimensionada que introduce una enorme complejidad operativa —muchas piezas, mucha configuración, mucho que puede fallar— a cambio de beneficios que ese proyecto no necesita. En esos casos, un par de contenedores corriendo con Docker en un servidor, o una plataforma gestionada que se ocupe de la infraestructura, resuelven lo mismo con una fracción del esfuerzo. La regla sana es elegir la herramienta más simple que resuelva el problema que realmente se tiene, no la más impresionante ni la que está de moda, porque la complejidad innecesaria también es un costo.
¿Dónde guardo los secretos en Kubernetes?
Kubernetes ofrece un tipo de objeto específico para credenciales y datos sensibles, pensado para mantenerlos separados de la configuración común de la aplicación, y en entornos serios se combina con un gestor de secretos externo dedicado y con el cifrado de esos datos en reposo. Lo que nunca hay que hacer es escribir contraseñas, claves o tokens directamente en los archivos de manifiesto que describen los deployments y services, porque esos archivos suelen versionarse en un repositorio y compartirse con el equipo, de modo que cualquier secreto escrito ahí queda expuesto. La regla es la misma que rige en el código fuente, en las imágenes de contenedor y en los pipelines: los secretos viven en un mecanismo aparte diseñado para protegerlos y se inyectan en el momento de la ejecución, no quedan grabados en lo que se versiona o se distribuye. Además, conviene limitar quién puede leer esos secretos dentro del clúster mediante los controles de acceso que Kubernetes provee.
Fuentes
Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.
Aportes de la comunidad Underc0de
- Underc0de, foro. Sección GNU/Linux. Consultas sobre servidores, contenedores y orquestación.
- Underc0de, foro. Sección Redes. Balanceo, exposición de servicios y comunicación entre nodos.
Documentación oficial
- The Kubernetes Authors / CNCF. Documentación oficial de Kubernetes, en español. La referencia principal.
- Kubernetes. Pods. La unidad mínima que se despliega.
- Kubernetes. Deployments. Cómo se mantiene y actualiza un conjunto de pods.
- Kubernetes. Services. Cómo se exponen y balancean los pods.