@@ -41,6 +41,7 @@ import (
41
41
"k8s.io/klog/v2"
42
42
"k8s.io/kubernetes/cmd/kube-controller-manager/names"
43
43
pkgcontroller "k8s.io/kubernetes/pkg/controller"
44
+ "k8s.io/kubernetes/pkg/controller/devicetainteviction"
44
45
endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
45
46
"k8s.io/kubernetes/pkg/controller/garbagecollector"
46
47
namespacecontroller "k8s.io/kubernetes/pkg/controller/namespace"
@@ -231,6 +232,32 @@ func startTaintEvictionController(ctx context.Context, controllerContext Control
231
232
return nil , true , nil
232
233
}
233
234
235
+ func newDeviceTaintEvictionControllerDescriptor () * ControllerDescriptor {
236
+ return & ControllerDescriptor {
237
+ name : names .DeviceTaintEvictionController ,
238
+ initFunc : startDeviceTaintEvictionController ,
239
+ requiredFeatureGates : []featuregate.Feature {
240
+ // TODO update app.TestFeatureGatedControllersShouldNotDefineAliases when removing these feature gates.
241
+ features .DynamicResourceAllocation ,
242
+ features .DRADeviceTaints ,
243
+ },
244
+ }
245
+ }
246
+
247
+ func startDeviceTaintEvictionController (ctx context.Context , controllerContext ControllerContext , controllerName string ) (controller.Interface , bool , error ) {
248
+ deviceTaintEvictionController := devicetainteviction .New (
249
+ controllerContext .ClientBuilder .ClientOrDie (names .DeviceTaintEvictionController ),
250
+ controllerContext .InformerFactory .Core ().V1 ().Pods (),
251
+ controllerContext .InformerFactory .Resource ().V1beta1 ().ResourceClaims (),
252
+ controllerContext .InformerFactory .Resource ().V1beta1 ().ResourceSlices (),
253
+ controllerContext .InformerFactory .Resource ().V1alpha3 ().DeviceTaintRules (),
254
+ controllerContext .InformerFactory .Resource ().V1beta1 ().DeviceClasses (),
255
+ controllerName ,
256
+ )
257
+ go deviceTaintEvictionController .Run (ctx )
258
+ return nil , true , nil
259
+ }
260
+
234
261
func newCloudNodeLifecycleControllerDescriptor () * ControllerDescriptor {
235
262
return & ControllerDescriptor {
236
263
name : cpnames .CloudNodeLifecycleController ,
0 commit comments