@@ -21,6 +21,7 @@ import (
2121 "crypto/tls"
2222 "flag"
2323 "os"
24+ "strconv"
2425 "time"
2526
2627 // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
@@ -597,7 +598,14 @@ func setupTimeSeriesAndWatchGlobalConfigChanges(ctx context.Context, mgr manager
597598 os .Exit (1 )
598599 }
599600 config .SetGlobalConfig (globalConfig )
600-
601+ // set env so scheduler default preemption reads effective preempt cluster-wide
602+ preemptVal := strconv .FormatBool (globalConfig .PreemptClusterWideFromEnv )
603+ if err := os .Setenv (constants .SchedulerPreemptClusterWideEnv , preemptVal ); err != nil {
604+ setupLog .Error (err , "failed to set preempt cluster-wide env" )
605+ }
606+ // get env PreemptClusterWideFromEnv
607+ preemptClusterWideFromEnv := os .Getenv (constants .SchedulerPreemptClusterWideEnv )
608+ setupLog .Info ("preempt cluster-wide from env" , "preemptClusterWideFromEnv" , preemptClusterWideFromEnv )
601609 // only init TSDB and evaluator in leader
602610 needTSDB := enableAlert || enableAutoScale
603611
@@ -636,8 +644,16 @@ func watchAndHandleConfigChanges(ctx context.Context, mgr manager.Manager, needT
636644 "configPath" , dynamicConfigPath )
637645 continue
638646 }
647+ // check if preemptClusterWideFromEnv is changed
648+ if globalConfig .PreemptClusterWideFromEnv != config .GetGlobalConfig ().PreemptClusterWideFromEnv {
649+ preemptVal := strconv .FormatBool (globalConfig .PreemptClusterWideFromEnv )
650+ if err := os .Setenv (constants .SchedulerPreemptClusterWideEnv , preemptVal ); err != nil {
651+ ctrl .Log .Error (err , "failed to set preempt cluster-wide env" )
652+ }
653+ preemptClusterWideFromEnv := os .Getenv (constants .SchedulerPreemptClusterWideEnv )
654+ ctrl .Log .Info ("preempt cluster-wide from env" , "preemptClusterWideFromEnv" , preemptClusterWideFromEnv )
655+ }
639656 config .SetGlobalConfig (globalConfig )
640-
641657 // handle alert rules update
642658 go func () {
643659 <- alertEvaluatorReady
0 commit comments