Una pequeña alerta en un clúster de prueba de Kubernetes sirvió para destapar una fuga de memoria introducida en la versión 1.36 del sistema. El autor, tras actualizar a esa versión en un nodo único de 2 GiB de RAM del servicio gestionado DOKS de DigitalOcean, detectó reinicios de Pods sin que ningún contenedor mostrara un crecimiento anómalo. Al abrir un shell en el nodo, comprobó que el proceso kubelet había aumentado de tamaño hasta devolver el sistema a un estado inestable.
El siguiente paso consistió en volcar el perfil de memoria del kubelet mediante pprof y la API de depuración de Kubernetes. Los resultados revelaron casi un millón de contextos cancelables retenidos, concentrados en la ruta del bucle de reconciliación de Pods y, en concreto, en la función WaitForAttachAndMount del gestor de volúmenes. Con ayuda de la herramienta de programación Codex, se identificó que el 19 de febrero de 2026 se sustituyó la inicialización condicional de un contexto con cancelación por una creación directa en cada iteración, lo que sobrescribe el puntero a la función cancel anterior sin invocarla y deja hijos huérfanos del contexto padre. Al repetirse esta lógica en cada ciclo de sincronización de cada Pod, los contextos se acumulan sin liberarse. El autor envío un parche al proyecto Kubernetes, donde se le ayudó en el proceso de revisión y fusión de la corrección.
