Session

Invisible Infrastructure at Scale: Operating 5,000 Daily Notebook Servers Across Multiple Kubernetes

Starting a Jupyter notebook appears to be one simple action. At approximately 5,000 real notebook-server sessions on a typical day, that action becomes considerably more complex - especially because the workloads are not identical. Each notebook may require a different combination of CPU, memory, GPU capacity, container image, storage, and runtime configuration, with some resources available only in particular clusters.

This talk presents how we extended KubeSpawner to separate the JupyterHub control plane from the Kubernetes clusters where notebook servers run. We follow a notebook through its complete lifecycle: interpreting its resource requirements, selecting a suitable cluster, creating its pod and service in the correct context, observing startup, retrieving its endpoint, monitoring health, and terminating it safely.

We cover context-aware Kubernetes clients, per-cluster state tracking, progress reporting, timeout recovery, stale-state detection, and cross-cluster cleanup. The result is a reusable architecture that lets JupyterHub operate across bare-metal and managed cloud clusters without exposing infrastructure complexity to notebook users.

Karthik Ravi

Senior Software Engineer, AI/ML Infrastructure at PayPal

Mountain View, California, United States

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top