# NamespacedKubeSpawner

**URL:** https://discourse.jupyter.org/t/namespacedkubespawner/223
**Category:** JupyterHub
**Created:** [November 28, 2018, 10:21pm UTC](https://discourse.jupyter.org/t/namespacedkubespawner/223 "2018-11-28T22:21:42Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![athornton](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/athornton/32/5361_2.png) [@athornton](https://discourse.jupyter.org/u/athornton)
#### Post date: [November 28, 2018, 10:21pm UTC](https://discourse.jupyter.org/t/namespacedkubespawner/223/1 "2018-11-28T22:21:42Z")

</div>

I’ve created a NamespacedKubeSpawner that puts each user into an individual namespace. It also comes with some convenience methods we need here at LSST to shadow NFS PVs into the user namespaces.

> **[lsst-sqre/namespacedkubespawner](https://github.com/lsst-sqre/namespacedkubespawner)**
>
> Namespaced KubeSpawner for JupyterHub - puts user pods in individual namespaces - lsst-sqre/namespacedkubespawner

  

> **[namespacedkubespawner](https://pypi.org/project/namespacedkubespawner/)**
>
> Namespaced Spawner for Kubernetes

Thanks to Adam Tilghman (@agt-ucsd), on whose work in [https://github.com/jupyterhub/kubespawner/pull/218/](https://github.com/jupyterhub/kubespawner/pull/218/) mine is largely based.

Rather than doing mine as a PR to KubeSpawner, it’s a subclass that fits on top of it.

---

<div class="post-metadata">

### Author: ![choldgraf](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/choldgraf/32/1264_2.png) [@choldgraf](https://discourse.jupyter.org/u/choldgraf)
#### Post date: [November 29, 2018, 5:03pm UTC](https://discourse.jupyter.org/t/namespacedkubespawner/223/2 "2018-11-29T17:03:28Z")

</div>

very cool! thanks for sharing!

I wonder how many “non-core” spawners there are out there…would be good to find a way to keep them discoverable etc
