@@ -17,31 +17,16 @@ limitations under the License.
17
17
package app
18
18
19
19
import (
20
- "context"
21
- "os"
22
-
23
20
"k8s.io/apimachinery/pkg/runtime"
24
21
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
25
- "k8s.io/apimachinery/pkg/util/uuid"
26
- "k8s.io/apiserver/pkg/server"
27
- "k8s.io/client-go/informers"
28
- "k8s.io/client-go/kubernetes"
29
22
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
30
- "k8s.io/client-go/rest"
31
- restclient "k8s.io/client-go/rest"
32
- "k8s.io/client-go/tools/clientcmd"
33
- "k8s.io/client-go/tools/leaderelection"
34
- "k8s.io/client-go/tools/leaderelection/resourcelock"
35
- "k8s.io/klog/v2"
36
23
"k8s.io/klog/v2/klogr"
37
24
38
25
ctrl "sigs.k8s.io/controller-runtime"
39
26
"sigs.k8s.io/controller-runtime/pkg/healthz"
40
27
41
28
schedulingv1a1 "sigs.k8s.io/scheduler-plugins/apis/scheduling/v1alpha1"
42
29
"sigs.k8s.io/scheduler-plugins/pkg/controllers"
43
- schedclientset "sigs.k8s.io/scheduler-plugins/pkg/generated/clientset/versioned"
44
- schedformers "sigs.k8s.io/scheduler-plugins/pkg/generated/informers/externalversions"
45
30
)
46
31
47
32
var (
@@ -55,38 +40,10 @@ func init() {
55
40
utilruntime .Must (schedulingv1a1 .AddToScheme (scheme ))
56
41
}
57
42
58
- func newConfig (kubeconfig , master string , inCluster bool ) (* restclient.Config , error ) {
59
- var (
60
- config * rest.Config
61
- err error
62
- )
63
- if inCluster {
64
- config , err = rest .InClusterConfig ()
65
- } else {
66
- config , err = clientcmd .BuildConfigFromFlags (master , kubeconfig )
67
- }
68
- if err != nil {
69
- return nil , err
70
- }
71
- return config , nil
72
- }
73
-
74
43
func Run (s * ServerRunOptions ) error {
75
- ctx := context .Background ()
76
- config , err := newConfig (s .KubeConfig , s .MasterUrl , s .InCluster )
77
- if err != nil {
78
- klog .ErrorS (err , "Failed to parse config" )
79
- os .Exit (1 )
80
- }
44
+ config := ctrl .GetConfigOrDie ()
81
45
config .QPS = float32 (s .ApiServerQPS )
82
46
config .Burst = s .ApiServerBurst
83
- stopCh := server .SetupSignalHandler ()
84
- schedClient := schedclientset .NewForConfigOrDie (config )
85
- kubeClient := kubernetes .NewForConfigOrDie (config )
86
-
87
- schedInformerFactory := schedformers .NewSharedInformerFactory (schedClient , 0 )
88
-
89
- coreInformerFactory := informers .NewSharedInformerFactory (kubeClient , 0 )
90
47
91
48
// Controller Runtime Controllers
92
49
ctrl .SetLogger (klogr .New ())
@@ -105,16 +62,18 @@ func Run(s *ServerRunOptions) error {
105
62
}
106
63
107
64
if err = (& controllers.PodGroupReconciler {
108
- Client : mgr .GetClient (),
109
- Scheme : mgr .GetScheme (),
65
+ Client : mgr .GetClient (),
66
+ Scheme : mgr .GetScheme (),
67
+ Workers : s .Workers ,
110
68
}).SetupWithManager (mgr ); err != nil {
111
69
setupLog .Error (err , "unable to create controller" , "controller" , "PodGroup" )
112
70
return err
113
71
}
114
72
115
73
if err = (& controllers.ElasticQuotaReconciler {
116
- Client : mgr .GetClient (),
117
- Scheme : mgr .GetScheme (),
74
+ Client : mgr .GetClient (),
75
+ Scheme : mgr .GetScheme (),
76
+ Workers : s .Workers ,
118
77
}).SetupWithManager (mgr ); err != nil {
119
78
setupLog .Error (err , "unable to create controller" , "controller" , "ElasticQuota" )
120
79
return err
@@ -129,53 +88,9 @@ func Run(s *ServerRunOptions) error {
129
88
return err
130
89
}
131
90
132
- run := func (ctx context.Context ) {
133
- setupLog .Info ("starting manager" )
134
- if err := mgr .Start (ctrl .SetupSignalHandler ()); err != nil {
135
- setupLog .Error (err , "unable to start manager" )
136
- panic (err )
137
- }
138
-
139
- select {}
140
- }
141
- schedInformerFactory .Start (stopCh )
142
- coreInformerFactory .Start (stopCh )
143
- if ! s .EnableLeaderElection {
144
- run (ctx )
145
- } else {
146
- id , err := os .Hostname ()
147
- if err != nil {
148
- return err
149
- }
150
- // add a uniquifier so that two processes on the same host don't accidentally both become active
151
- id = id + "_" + string (uuid .NewUUID ())
152
-
153
- rl , err := resourcelock .New ("endpoints" ,
154
- "kube-system" ,
155
- "sched-plugins-controller" ,
156
- kubeClient .CoreV1 (),
157
- kubeClient .CoordinationV1 (),
158
- resourcelock.ResourceLockConfig {
159
- Identity : id ,
160
- })
161
- if err != nil {
162
- klog .ErrorS (err , "Resource lock creation failed" )
163
- os .Exit (1 )
164
- }
165
-
166
- leaderelection .RunOrDie (context .TODO (), leaderelection.LeaderElectionConfig {
167
- Lock : rl ,
168
- Callbacks : leaderelection.LeaderCallbacks {
169
- OnStartedLeading : run ,
170
- OnStoppedLeading : func () {
171
- klog .ErrorS (err , "Leaderelection lost" )
172
- os .Exit (1 )
173
- },
174
- },
175
- Name : "scheduler-plugins controller" ,
176
- })
91
+ if err := mgr .Start (ctrl .SetupSignalHandler ()); err != nil {
92
+ setupLog .Error (err , "unable to start manager" )
93
+ return err
177
94
}
178
-
179
- <- stopCh
180
95
return nil
181
96
}
0 commit comments