Placeholder user Preemption fails status.hostIPs[0].ip

I’m running a JH deployment on AWS EKS (k8s v1.29, JH helm chart v3.2.1, in a private VPC).

I’ve implemented user placeholders for efficient autoscaling as described in Optimizations — Zero to JupyterHub with Kubernetes documentation.

However, when spawning a new user server that should trigger preemption and take one of the slots allocated to a placeholder user, the scheduler instead fails to schedule the pod causing the cluster to scale up.

I see the following error in the scheduler logs

E0318 20:52:53.050975       1 preemption.go:365] "Preparing pod preemption" err="Pod \"user-placeholder-2\" is invalid: status.hostIPs[0].ip: Invalid value: \"<NODE_IP>\": must be equal to `hostIP`" pod="jupyterhub/user-placeholder-2" preemptor="jupyterhub/jupyter-gshand"

Anyone know where else I could look to troubleshoot this further?

Seems to be hitting this error

1 Like

We are hitting the same error, any luck finding a workaround?

Edit: This will be fixed on 4+ as the kube-scheduler version will be 1.28.13. That version includes the following fix: Pod IP temporarily removed from status when pod transitions to a terminal state · Issue #125370 · kubernetes/kubernetes · GitHub

Our current workaround is to pull the helm chart manually, and make the following changes:

  • jupyterhub/templates/scheduling/user-scheduler/configmap.yaml: change endpointsleases to leases
  • jupyterhub/values.yaml: Change userScheduler image tag from 1.26.11 to 1.28.13