Contenedores y servicios desplegados en un clúster con registros de arranque

Bitácora técnica · migración de servicios

Migrar un servicio legado a contenedores: errores que se repiten

Supuestos sobre estado, red y arranque que rompen la primera versión

El contenedor arranca en la laptop sin drama. Lo subís al clúster y a los pocos minutos empieza a reiniciarse. Casi nunca es un problema del runtime: es el servicio legado que daba por sentadas cosas que en un pod ya no existen. Rutas absolutas que apuntan a un disco que no está montado, un archivo de configuración que se escribía en /var/lib/app y ahora vive en una capa efímera, o una conexión a una base que se resolvía por nombre de host del servidor viejo.

Antes de exponer tráfico conviene hacer una pasada por tres frentes. Primero, el estado: revisá qué escribe el proceso en disco y si eso sobrevive a un reinicio del pod. Segundo, la red: listá cada dependencia saliente y confirmá que resuelve dentro del clúster, no por un hosts heredado. Tercero, el arranque: medí cuánto tarda el servicio en aceptar la primera petición real, no en abrir el puerto.

Ese último punto es el que más dolores de cabeza genera. Muchos servicios legados abren el socket antes de terminar de cargar cachés, índices o pools de conexiones. Si la sonda de readiness solo verifica que el puerto responde, va a mandar tráfico a un proceso que todavía no está listo y vas a ver errores intermitentes que no aparecen en local. La liveness, por su parte, no debería reiniciar un arranque lento: separá los tiempos y dejá que la readiness haga el trabajo de contener el tráfico.

La configuración del entorno es otro punto donde se rompe la imagen. Si el servicio lee variables de entorno, rutas o credenciales embebidas en el build, cada cambio obliga a reconstruir. Conviene mover todo lo que cambia entre entornos a variables o a un volumen montado, y dejar en la imagen solo lo que es igual en todos lados. Así el mismo artefacto pasa por staging y producción sin sorpresas.

Nada de esto es teoría de manual: son los patrones que aparecen una y otra vez cuando un servicio que llevaba años corriendo en una VM se muda a un clúster. La secuencia de verificación antes de exponer tráfico ahorra la mayor parte de los reinicios en cascada.

Migrar un servicio legado a contenedores: errores que se repiten

Antes de seguir, conviene aclarar el alcance. Lo que viene abajo son patrones de fallo que aparecen una y otra vez cuando un servicio que corría en una máquina propia pasa a un contenedor dentro de un clúster. No es un manual de contenerización universal ni una receta que funcione igual en cualquier stack. Es una lista de supuestos que el código viejo daba por ciertos y que dejan de serlo apenas cambia el entorno de ejecución.

Hablamos de servicios con años encima, escritos sin pensar en orquestadores: procesos que escriben en disco, que leen rutas absolutas, que asumen que la red interna es estable o que tardan en levantar más de lo que una sonda tolera. Si tu caso es un servicio nuevo, diseñado desde el arranque para correr en contenedores, buena parte de esto no te va a aplicar. Si estás moviendo algo heredado, probablemente reconozcas más de un punto.

Contenedores y servicios desplegados en un clúster con registros de arranque

Migrar un servicio legado a contenedores: errores que se repiten

Supuestos sobre estado, red y arranque que rompen la primera versión. Estas son las señales que aparecen una y otra vez cuando el contenedor funciona en local pero el clúster lo reinicia sin piedad.

Contenedores y servicios desplegados en un clúster con registros de arranque Rutas y estado

El código escribía en /var/lib y ahora ese disco es efímero

Contenedores y servicios desplegados en un clúster con registros de arranque Arranque

La sonda de vida dispara antes de que el servicio termine de cargar

Contenedores y servicios desplegados en un clúster con registros de arranque Red

Dependencias que asumían DNS interno y puertos fijos del host

Contenedores y servicios desplegados en un clúster con registros de arranque Configuración

Recompilar la imagen para cambiar una variable de entorno

Migrar un servicio legado a contenedores: errores que se repiten

Bitácora técnica independiente

Esta entrada sobre migración de servicios legados a contenedores la firma el equipo de ingeniería que sostiene la bitácora. No hay una persona con nombre y apellido detrás de cada texto: lo que se publica sale de trabajo real en producción y se revisa entre varios antes de subirlo.

El criterio es simple. Si un fragmento de configuración, una captura de panel o una comparativa de herramientas no se probó en un entorno con tráfico, no entra. Tampoco hay patrocinio: cuando un proveedor aparece mencionado es porque formaba parte del escenario que se estaba documentando, no porque haya pagado por el espacio.

Los temas que se cubren con más frecuencia son Kubernetes, Terraform, observabilidad, colas de mensajes, costos de instancias y los errores que se repiten al mover servicios legados a arquitecturas distribuidas. La audiencia natural son equipos de plataforma, SRE y desarrolladores backend que necesitan decisiones concretas y no una introducción teórica.

Si querés seguir el hilo, hay un boletín semanal con las entradas nuevas y la búsqueda por etiquetas como redes, almacenamiento o CI/CD sirve para llegar directo a lo que te interesa.

Configuracion de cookies

Usamos cookies para mantener el sitio estable, recordar opciones basicas y entender que paginas resultan utiles. Puedes aceptar, rechazar o revisar la configuracion antes de continuar.