La Gran Mentira de Kubernetes: Desmontando el Hype con la Suite de HashiCorp
La Mentira
La Estrategia: "Componentes que hacen una sola cosa"
En lugar de capas infinitas de abstracción opaca, usaremos componentes que siguen la filosofía UNIX: hacer una cosa y hacerla perfecta.
-
El Cerebro (Nomad): Orquestación simple. Un solo binario. Sin etcd, sin nodos maestros que devoran memoria.
-
El Mapa (Consul): Service Discovery. Si un microservicio respira, Consul sabe dónde vive.
-
El Enrutador (Fabio): Un balanceador de carga que se configura solo leyendo el mapa de Consul. Cero configuración manual.
-
El Músculo (Quarkus): Microservicios Java que arrancan en milisegundos, no en minutos.
-
El Terreno (WSL2): El campo de batalla. Un entorno Linux real, sin la pesadez de una VM tradicional.
Fase 1: El Monolito Frágil (Lo que la mayoría hacemos)
Para entender la solución, primero debemos ver el problema. La mayoría de los desarrolladores desplegamos así: Un nodo. Un puerto fijo. Una base de datos.
Este es nuestro archivo
monolith.nomad. Es funcional, pero es un castillo de naipes. Al menos funciona para un
"Hola Mundo".
group "backend" {
count = 1 # El punto único de fallo
network {
port "http" { static = 8080 } # Puerto rígido
}
# ...
Si ejecuto esto, funciona. Puedo llamar a
localhost:8080 y
Quarkus responde. Pero, ¿qué pasa si el proceso falla? ¿Qué pasa si recibo más
tráfico del que un solo hilo puede manejar?
Hice la prueba. Lancé un ataque con
k6 y maté el proceso
manualmente. Resultado:
Connection Refused. El servicio murió instantáneamente (obviamente). Tiempo de inactividad
total. Pérdida de dinero.
Esta es la fragilidad que te obliga a buscar "orquestadores". Y aquí es donde K8s te atrapa. Pero hay otra salida.
Fase 2: La Evolución (El Clúster Resiliente)
Aquí es donde rompemos la Matrix. Vamos a transformar ese monolito en un sistema distribuido, tolerante a fallos y auto-balanceado.
Para lograrlo en WSL2 (que tiene una red notoriamente aislada), tuve que usar una técnica poco documentada. Tuve que romper la cuarta pared.
En lugar de crear redes virtuales complejas (Overlay Networks) como hace K8s con Flannel o Calico, le ordenamos a nuestros contenedores que se anuncien con la IP real del host.
El Código de la Victoria (stack.nomad):
service {
name = "api-quarkus"
address_mode = "host" # La clave de la simplicidad. Sin proxys.
tags = [
"urlprefix-/api", # Fabio lee esto y enruta el tráfico. Magia.
"quarkus"
]
}
Al desplegar esto, ocurren tres cosas simultáneamente:
-
Nomad levanta 3 réplicas de Quarkus en puertos aleatorios.
-
Consul detecta que están vivas (Health Check).
-
Fabio ve la etiqueta
urlprefix-/apiy automáticamente empieza a repartir tráfico entre las 3.
Sin reiniciar el balanceador. Sin escribir archivos de configuración de Nginx. Sin YAMLs de 500 líneas.
Estado de los nodos:
Estado del balanceador:
La Prueba de Fuego: Benchmark con k6
Las palabras se las lleva el viento. Los datos no. Sometí al clúster evolucionado a una prueba de estrés para demostrar la diferencia.
Escenario de Ataque:
-
Virtual Users: 50 concurrentes golpeando el API sin piedad.
-
Duración: 60 segundos.
-
Evento Caótico: Durante la prueba, asesiné manualmente uno de los contenedores de Quarkus.
Los Resultados:
Mientras yo mataba nodos, Fabio redirigía el tráfico instantáneamente a los supervivientes. Nomad detectaba la muerte y levantaba un reemplazo en segundos. El usuario final (k6) jamás se enteró del caos que ocurría tras bambalinas.
Y todo esto, corriendo en mi laptop, consumiendo menos recursos que dos pestañas de Chrome.
Conclusión
La mentira de Kubernetes es hacerte creer que la complejidad es necesaria para escalar. No lo es. La complejidad es necesaria para venderte soluciones a problemas que ellos mismos crearon.
La suite de HashiCorp (Nomad + Consul) representa el retorno a la ingeniería sensata: piezas pequeñas, bien conectadas, que entiendes y controlas. He logrado en una tarde, y con un solo archivo de configuración, lo que en K8s requiere un equipo de DevOps dedicado.
El código está disponible en mi repositorio. La puerta de salida de la "Matrix" está abierta.
¿Te atreves a cruzarla?




تعليقات
إرسال تعليق
Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups
Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/