- Herramienta de runtime desarrollada para reducir el desperdicio de recursos de contenedores inactivos en entornos Kubernetes
- Si no hay conexiones TCP durante cierto tiempo, guarda automáticamente un checkpoint del contenedor en disco
- Funciona en forma de containerd shim, guarda el estado de memoria del contenedor y luego lo detiene, para después restaurarlo en pocos milisegundos en la primera conexión
- Al restaurarse, todo el estado de la aplicación se recupera tal cual, por lo que desde la perspectiva del usuario casi no hay latencia
- Usa redirección basada en eBPF para enviar los paquetes TCP al proxy y, una vez completada la restauración, cambia a conexión directa
- Realiza el checkpoint y la restauración con CRIU - Checkpoint and Restore in Userspace
- Ofrece un flujo de restauración automática en la primera solicitud mediante la secuencia de activación (activation sequence)
- Incluye una lógica de espera inteligente que rastrea la actividad TCP reciente para evitar pausas y restauraciones frecuentes
- En Kubernetes, se percibe como si el contenedor siguiera ejecutándose, lo que evita reinicios del runtime
- Al ejecutar el comando
kubectl exec, se restaura automáticamente y se puede acceder como a un contenedor normal
- Cada proceso shim recopila métricas, y el zeropod-manager a nivel de nodo las integra y las expone mediante un endpoint HTTP
- Si el clúster lo soporta, ofrece in-place scaling para ajustar dinámicamente las solicitudes de recursos
- Al drenar un nodo, permite migrar Pods reducidos de escala a otros nodos
- También soporta migración en vivo como función experimental
- Es adecuado para servicios de bajo tráfico, entornos de desarrollo y staging, tiers económicos de plataformas tipo Heroku y backends para sitios estáticos
- La mayoría de los programas funcionan sin cambios adicionales y los errores de CRIU pueden analizarse mediante los logs de containerd
4 comentarios
¿La reinvención de
inetd? (broma)La Elastic Machine Pool de Platform 9 que vi el año pasado en AWS re:Invent en ese momento me daba algo de carga probarla por encima porque era solo para B2B, pero esto se ve bien porque la instalación es sencilla y el funcionamiento es intuitivo. Quería asignar recursos de forma agresiva en el entorno de desarrollo sin perjudicar la experiencia del usuario, y si después de hacer una PoC sale bien, parece que valdría la pena adoptarlo.
Me preguntaba en qué se diferencia de KNative, y parece que estas dos frases de abajo son la clave.
lambda. . .. ?