Skip to content

Commit adf2321

Browse files
author
Xi Chen
committed
Support extra pod spec for user placeholder pods
Add configuration `scheduling.userPlaceholder.extraPodSpec` for arbitrary extra pod spec for the user placeholder statefulset. This change arose from a desire to add pod topology spread constraints to the placeholder pods. Our singleuser pods run in different availability zones at runtime, as their corresponding persistent volumes are created in different availability zones. Adding pod topology spread constraints across zones helps improving singleuser pod startup time in different availability zones. For example, ``` scheduling: userPlaceholder: extraPodSpec: topologySpreadConstraints: - maxSkew: 1 topologyKey: zone whenUnsatisfiable: DoNotSchedule labelSelector: matchLabels: foo: bar ```
1 parent e5bd5a1 commit adf2321

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

jupyterhub/templates/scheduling/user-placeholder/statefulset.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,7 @@ spec:
7777
securityContext:
7878
{{- . | toYaml | nindent 12 }}
7979
{{- end }}
80+
{{- with .Values.scheduling.userPlaceholder.extraPodSpec }}
81+
{{- . | toYaml | nindent 6 }}
82+
{{- end }}
8083
{{- end }}

jupyterhub/values.schema.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1526,6 +1526,7 @@ properties:
15261526
2. proxy.chp.extraPodSpec
15271527
3. proxy.traefik.extraPodSpec
15281528
4. scheduling.userScheduler.extraPodSpec
1529+
5. scheduling.userPlaceholder.extraPodSpec
15291530
15301531
One real-world use of these settings is to enable host networking. For
15311532
example, to configure host networking for the hub pod, add the
@@ -2648,6 +2649,7 @@ properties:
26482649
Unless specified here, the placeholder pods will request the same
26492650
resources specified for the real singleuser pods.
26502651
containerSecurityContext: *containerSecurityContext-spec
2652+
extraPodSpec: *extraPodSpec-spec
26512653
corePods:
26522654
type: object
26532655
additionalProperties: false

jupyterhub/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,7 @@ scheduling:
600600
seccompProfile:
601601
type: "RuntimeDefault"
602602
resources: {}
603+
extraPodSpec: {}
603604
corePods:
604605
tolerations:
605606
- key: hub.jupyter.org/dedicated

tools/templates/lint-and-validate-values.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,14 @@ scheduling:
521521
revisionHistoryLimit: 1
522522
replicas: 1
523523
resources: *resources
524+
extraPodSpec:
525+
topologySpreadConstraints:
526+
- maxSkew: 1
527+
topologyKey: zone
528+
whenUnsatisfiable: DoNotSchedule
529+
labelSelector:
530+
matchLabels:
531+
foo: bar
524532
corePods:
525533
tolerations:
526534
- key: mock-taint-key-corePods

0 commit comments

Comments
 (0)