jupyterhub / zero-to-jupyterhub-k8s

Helm Chart & Documentation for deploying JupyterHub on Kubernetes
https://zero-to-jupyterhub.readthedocs.io
Other
1.56k stars 799 forks source link

More customization for the image puller #3490

Open DeepCowProductions opened 2 months ago

DeepCowProductions commented 2 months ago

Proposed change

A per image node selector for the images pulled by the image puller.

To be more precise: Some images, specifically very large cuda-images for development, do not need to be present on nodes without any gpus. It would be great if we could instruct the image puller to only pull those images onto nodes where the workloads are actually running. So: TPU Images onto TPU enabled or labeled nodes GPU to GPU nodes cpu only to cpu only nodes etc...

Alternative options

The current best alternative, to not "waste" local node storage (which sometime can be limited if user storage is hosted else where) is to do this job manually with some custom automation.

Who would use this feature?

Hopefully all users with a heterogeneous cluster.

(Optional): Suggest a solution

I am not familiar with go, but I would guess It's not too difficult to extract already existing fields in the profile list or single user config, such as "node_selector" and copy them to the pods/deamonsets generated by the image puller. If not (and probably a better way altogether), a more general customization for the image puller would be required.

If you have a better or already working solution, I'm also keen to learn about it! And ofc, thanks for your work !