Kubernetes
Produção
DevOps
Containers
Infraestrutura

Kubernetes en producción: lo que nadie te dice antes de migrar

Kubernetes resuelve problemas reales de escala y crea otros nuevos que sólo se descubren después de haber migrado.

Kubernetes en producción: lo que nadie te dice antes de migrar

La mayoría de los equipos que migran a Kubernetes llegan convencidos de que están resolviendo un problema de infraestructura. Lo que descubren, generalmente seis meses después, es que han cambiado un conjunto de problemas por uno mucho más sofisticado y que la complejidad operativa que pensaban haber eliminado simplemente ha cambiado.

Lo que Kubernetes realmente hace bien

Kubernetes nació para resolver un problema concreto: orquestar contenedores a escala, con resiliencia y capacidad de recuperación automática. Lo hace muy bien. Si su organización opera docenas de servicios con patrones de tráfico variables, necesita implementaciones sin tiempo de inactividad y tiene un equipo maduro para operar la plataforma, Kubernetes ofrece valor real.

La programación de la carga de trabajo, la gestión de recursos, el soporte para estrategias de implementación progresiva y la integración con herramientas de observabilidad son realmente buenos. Estos beneficios no son marketing: existen, funcionan y marcan la diferencia en la producción.

El problema no es lo que promete Kubernetes. Eso es lo que exige a cambio.

La complejidad que aparece después de la migración

La creación de redes en Kubernetes no es una configuración sencilla. Es una capa completa de abstracción (complementos CNI, mallas de servicio, políticas de red, DNS interno, controladores de ingreso) que necesita comprender, mantener y depurar cuando algo falla. Y algo se romperá.

El almacenamiento es otro punto de fricción que la mayoría subestima. Volúmenes persistentes, StorageClasses, modos de acceso, instantáneas, PVC de respaldo: todos estos deben diseñarse cuidadosamente. Las aplicaciones con estado en Kubernetes son significativamente más complejas que las mismas aplicaciones que se ejecutan en máquinas virtuales convencionales.

RBAC, a su vez, es el tipo de cosas que nadie documenta bien durante la migración y que se convierte en deuda técnica en cuestión de semanas. Establecer permisos granulares para distintos espacios de nombres, cuentas de servicio y cargas de trabajo requiere una disciplina que los equipos bajo presión de entrega rara vez pueden mantener.

Las actualizaciones de clústeres son otro capítulo. Kubernetes tiene un ciclo de vida agresivo: las versiones se vuelven obsoletas rápidamente y cada actualización requiere validación de compatibilidad de API, manifiestos, gráficos de Helm y operadores. Ignore esto durante unos meses y ejecutará una versión no compatible en producción.

La paradoja de la ERE

Existe una ironía bien conocida en el hecho de que los equipos adopten Kubernetes sin una planificación adecuada: se necesitan ingenieros de confiabilidad experimentados para operar la herramienta que se supone debe reducir la necesidad de operación manual. Kubernetes fue creado para la escala de Google. Él lleva esta herencia.

Los equipos pequeños a menudo descubren que dedican más tiempo a operar la plataforma que a desarrollar el producto. Cada incidente implica registros de múltiples pods, seguimiento de eventos de programación, análisis de límites de recursos y depuración de la red que solo tiene sentido para aquellos que comprenden profundamente las abstracciones internas.

Esto no es un defecto de diseño. Es una consecuencia directa de la generalidad de la plataforma. Kubernetes resuelve problemas complejos de maneras complejas, y esa complejidad no desaparece solo porque los contenedores se están ejecutando.

Cuando Kubernetes administrado cambia el cálculo

EKS, GKE y AKS no eliminan la complejidad operativa, pero distribuyen parte de ella al proveedor de la nube. El plano de control (etcd, servidor API, programador, administrador del controlador) es responsabilidad del proveedor. Las actualizaciones de versiones se vuelven menos traumáticas. La integración con los servicios de identidad, almacenamiento y red del proveedor viene preconfigurada.

Para los equipos que ya operan dentro de un proveedor de nube específico, Kubernetes administrado reduce significativamente el costo de entrada. No es cero, pero es sustancialmente menor que operar un clúster autogestionado.

El cálculo vuelve a cambiar cuando se considera el bloqueo. GKE Autopilot, por ejemplo, abstrae tanto que se pierde el control sobre la programación y la configuración de los nodos. Es un intercambio válido para algunos equipos e inaceptable para otros. La elección depende de dónde se quiere soberanía y dónde se acepta la delegación.

Cuando una estrategia más simple es la decisión inteligente

Kubernetes no es la respuesta adecuada para todas las cargas de trabajo. Si opera un monolito bien estructurado con tráfico predecible, una instancia EC2 bien configurada con un proceso de implementación automatizado puede ser más confiable, más barata y mucho más fácil de operar.

Herramientas como Fly.io, Railway, Render o incluso AWS App Runner ofrecen la mayoría de los beneficios operativos de Kubernetes (tiempo de inactividad cero, escalado automático, reversiones) sin la capa de abstracciones que requieren mantenimiento de expertos.

La pregunta que los equipos rara vez hacen antes de migrar es sencilla: ¿qué problema específico resolverá Kubernetes que la infraestructura actual no puede resolver? Si la respuesta es vaga ("escalabilidad", "modernización", "mejor gestión de contenedores"), la inversión operativa probablemente no esté justificada.

Kubernetes tiene sentido cuando tienes múltiples servicios con ciclos de implementación independientes, la necesidad de aislamiento entre cargas de trabajo, patrones de tráfico altamente variables y un equipo con capacidad real para operar la plataforma. Estos cuatro criterios juntos rara vez aparecen antes de que una organización tenga docenas de ingenieros y años de madurez de contenedores.

La decisión que ocurre en el momento equivocado

La migración a Kubernetes casi siempre ocurre en el momento de menor preparación. El equipo está creciendo, ha aparecido la presión para escalar, alguien vio una charla en KubeCon y la decisión se toma antes de que el equipo tenga suficiente experiencia para comprender lo que están asumiendo.

El resultado típico: seis meses de esfuerzo para migrar, seguidos de otros seis intentando estabilizar el medio ambiente. Los problemas que motivaron la migración (despliegues frágiles, falta de aislamiento, dificultad para escalar) continúan existiendo, ahora con una capa adicional de diagnóstico.

Esto no significa que la migración fuera incorrecta. Significa que necesitaba más planificación, un cronograma realista y capacitación antes de la ejecución. Kubernetes es una plataforma poderosa. Pero el poder y la simplicidad rara vez coexisten, y aquellos que no entienden esta distinción aprenden después de que ya se ha tomado la decisión.

Lea también