Pod Compatibility for Joulie
Joulie uses Kubernetes scheduling constraints as the single source of truth for workload placement intent.
Power profile supply is exposed on node label:
joulie.io/power-profile=performancejoulie.io/power-profile=ecojoulie.io/draining=true|false(independent transition flag)
Workload behavior:
performanceworkload (recommended): requirejoulie.io/power-profile NotIn ["eco"]ecoworkload: requirejoulie.io/power-profile=eco- unconstrained workload: no power-profile affinity, can run on either profile
Best-effort Pod (unconstrained, starting point)
This is the default and recommended starting spec. Do not set power-profile affinity: Kubernetes can schedule the pod on either eco or performance nodes.
| |
Performance Pod (recommended, lines to add)
| |
Why this is recommended:
- it avoids eco nodes while still allowing high-performance nodes which are not managed by Joulie;
- explicitly requiring
performancecan exclude unlabeled nodes that are still valid for performance workloads and are managed by Joulie.
Eco-only Pod (advanced, lines to add)
This is an advanced/rare pattern. Use it only when you explicitly need jobs to run on eco supply. In most cases, users should either:
- use
NotIn ["eco"]for performance-sensitive pods, or - keep pods unconstrained (best-effort) and let Joulie manage power behavior.
If you choose eco-only, adding joulie.io/draining=false avoids nodes in transition from performance to eco, which are labelled with joulie.io/power-profile=eco but still have a performance power profile (DrainingPerformance state).
| |
Reference manifests: