OOMKill en Kubernetes y Linux (Código de salida 137) explica por qué un contenedor o proceso puede terminar inesperadamente cuando el sistema se queda sin memoria y cómo identificar y mitigar ese problema.

Qué significa el código de salida 137: cuando el kernel de Linux ejecuta el OOM Killer para recuperar memoria, envía la señal SIGKILL al proceso afectado. Los procesos terminados por SIGKILL aparecen con código de salida 137 en Kubernetes porque el código se calcula como 128 más el número de la señal, en este caso 9. Kubernetes marca el contenedor como OOMKilled y registra ese código, lo que es una pista clave al diagnosticar fallos por falta de memoria.

Por qué ocurre un OOMKill: Linux permite sobreasignación de memoria para optimizar uso de recursos, de modo que las aplicaciones pueden reservar más memoria de la físicamente disponible. Si la demanda real supera la capacidad del sistema y no hay suficiente memoria libre ni swap, el kernel selecciona procesos para matar y liberar memoria. En entornos con contenedores, esto suele suceder cuando un contenedor supera su límite de memoria configurado en Kubernetes.

Cómo decide el kernel qué matar: el OOM Killer utiliza puntuaciones de oom_score y oom_score_adj para priorizar qué procesos terminar. En Kubernetes, los límites de memoria en los cgroups y las políticas de Quality of Service influyen en estas decisiones. Un contenedor sin límites o con límites mal ajustados puede ser objetivo del OOM Killer.

Señales y códigos de salida relacionados: además de 137, es importante saber que algunos códigos de salida tienen significados especiales en sistemas Unix y scripts, por ejemplo códigos reservados entre 1 y 2 y otros rangos, por lo que es recomendable no reutilizarlos para errores de aplicación y evitar confusiones durante el diagnóstico.

Pasos prácticos para diagnosticar un OOMKill en Kubernetes: inspeccionar el estado del pod con kubectl describe pod para ver la razón OOMKilled; revisar kubectl logs del contenedor; mirar entradas de dmesg o journalctl para mensajes del OOM Killer; consultar métricas de cgroup y del nodo para uso de memoria; revisar kubelet y eventos del clúster. También conviene comprobar si hay procesos en el pod que consumen memoria de forma imprevista o fugas de memoria en la aplicación.

Recomendaciones para prevenir OOMKills: configurar requests y limits de memoria adecuados para los contenedores; preferir una QoS de tipo Guaranteed cuando sea crítico que el pod no sea penalizado; usar probes de liveness y readiness para reinicios ordenados; aplicar políticas de autoscaling vertical u horizontal según la carga; ajustar oom_score_adj con precaución si se necesita proteger procesos específicos; monitorizar con herramientas como Prometheus y establecer alertas tempranas sobre uso de memoria.

Buenas prácticas a nivel de infraestructura: en entornos productivos evaluar configuración de swap y cgroups según la versión de kernel y cgroup v2, evitar sobreasignación excesiva si la estabilidad es prioridad, y dimensionar nodos y pools según los patrones de consumo reales de las aplicaciones.

Cómo podemos ayudar desde Q2BSTUDIO: somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones que incluyen inteligencia artificial, ciberseguridad y servicios cloud. Si necesita optimizar su plataforma Kubernetes, ajustar el dimensionado de recursos o implementar análisis y alertas para evitar OOMKills, nuestro equipo puede diseñar e implementar soluciones a medida. Ofrecemos desarrollo de aplicaciones y sistemas escalables como parte de nuestro servicio de desarrollo de aplicaciones a medida y ayudamos a desplegar y gestionar infraestructuras robustas con servicios cloud AWS y Azure para asegurar disponibilidad y rendimiento.

Servicios complementarios y keywords: en Q2BSTUDIO también aportamos experiencia en inteligencia artificial para empresas, agentes IA, ciberseguridad y pentesting para proteger sus entornos, servicios de inteligencia de negocio y Power BI para monitorización avanzada y reporting. Si su proyecto necesita software a medida, soluciones de ia para empresas o integración con herramientas de Business Intelligence, podemos asesorarle y ejecutar la implementación.

Resumen rápido de acciones recomendadas: revisar límites y requests, analizar logs del OOM Killer, monitorizar memoria en nodos y contenedores, aplicar estrategias de autoscaling y QoS adecuado, y contar con alertas proactivas. Para un diagnóstico y solución profesional, contacte a Q2BSTUDIO y aprovechar nuestra experiencia en software a medida, IA y operaciones cloud.