The problem: Traditional Kubernetes eviction kills pods and restarts them elsewhere. This breaks stateful workloads like databases, long-running computations, and anything that can't tolerate restarts. It's a major blocker for cluster optimization - you can't bin-pack efficiently when half your workloads are "untouchable."
Our approach uses CRIU (Checkpoint/Restore In Userspace) with custom Kubernetes orchestration: >Checkpoint running containers with their full memory state >Transfer state to destination node while app keeps running >Brief pause (~100ms) for final state sync >Resume on new node with preserved TCP connections and PIDs
Key technical details: >Works with multi-container pods, StatefulSets, bare pods >Preserves IP addresses via forked AWS VPC CNI >Incremental memory transfer reduces migration time >Fallback to traditional eviction if migration fails >Currently AWS EKS + Kubernetes 1.30+, expanding to other clouds
The impact: We're seeing 40-60% better cluster utilization because Evictor (our bin-packing optimizer) can now move stateful workloads that were previously stuck. A Redis instance with 4GB RAM migrates in ~2-3 seconds with zero dropped connections.
This is early access on AWS EKS. We're particularly interested in feedback from folks running stateful workloads that currently can't be optimized due to restart sensitivity.
Detailed video: https://www.youtube.com/watch?v=WUxMYl2XWCQ Docs: https://docs.cast.ai/docs/clm-overview