Jupyterhub scheduler configuration

Hello,

i installed jupyterhub and everything works. But I have the impression that the distribution of pods is not optimized. When defining the profiles, you can indicate the limit resource and the reserved resource. I have indicated low reserved resources and a high limit. So that a user can pull resources as needed.

I also have nodes with different capacities, typically:

  • two nodes of 30 cpu and 150 GB of memory
  • a node of 1tb of memory and 120 cpu

The problem is that kubernetes seems to distribute the pods evenly between the nodes and thus to saturate the small nodes while the large node is free.

Is it possible to configure the scheduler so that it creates the pods on the node with the most available resources? what do you recommend as a scheduler configuration?

scheduling:
userScheduler:
enabled: true
replicas: 2
logLevel: 4
# plugins ref: Scheduler Configuration | Kubernetes
plugins:
score:
disabled:
- name: SelectorSpread
- name: TaintToleration
- name: PodTopologySpread
- name: NodeResourcesBalancedAllocation
- name: NodeResourcesLeastAllocated
# Disable plugins to be allowed to enable them again with a different
# weight and avoid an error.
- name: NodePreferAvoidPods
- name: NodeAffinity
- name: InterPodAffinity
- name: ImageLocality
enabled:
- name: NodePreferAvoidPods
weight: 161051
- name: NodeAffinity
weight: 14631
- name: InterPodAffinity
weight: 1331
- name: NodeResourcesMostAllocated
weight: 121
- name: ImageLocality
weight: 11

Thank you