...
1
16
17
18
19
20 package app
21
22 import (
23 "context"
24
25 "k8s.io/client-go/dynamic"
26 "k8s.io/client-go/scale"
27 "k8s.io/controller-manager/controller"
28 "k8s.io/kubernetes/cmd/kube-controller-manager/names"
29 "k8s.io/kubernetes/pkg/controller/disruption"
30 )
31
32 func newDisruptionControllerDescriptor() *ControllerDescriptor {
33 return &ControllerDescriptor{
34 name: names.DisruptionController,
35 aliases: []string{"disruption"},
36 initFunc: startDisruptionController,
37 }
38 }
39
40 func startDisruptionController(ctx context.Context, controllerContext ControllerContext, controllerName string) (controller.Interface, bool, error) {
41 client := controllerContext.ClientBuilder.ClientOrDie("disruption-controller")
42 config := controllerContext.ClientBuilder.ConfigOrDie("disruption-controller")
43 scaleKindResolver := scale.NewDiscoveryScaleKindResolver(client.Discovery())
44 scaleClient, err := scale.NewForConfig(config, controllerContext.RESTMapper, dynamic.LegacyAPIPathResolverFunc, scaleKindResolver)
45 if err != nil {
46 return nil, false, err
47 }
48
49 go disruption.NewDisruptionController(
50 ctx,
51 controllerContext.InformerFactory.Core().V1().Pods(),
52 controllerContext.InformerFactory.Policy().V1().PodDisruptionBudgets(),
53 controllerContext.InformerFactory.Core().V1().ReplicationControllers(),
54 controllerContext.InformerFactory.Apps().V1().ReplicaSets(),
55 controllerContext.InformerFactory.Apps().V1().Deployments(),
56 controllerContext.InformerFactory.Apps().V1().StatefulSets(),
57 client,
58 controllerContext.RESTMapper,
59 scaleClient,
60 client.Discovery(),
61 ).Run(ctx)
62 return nil, true, nil
63 }
64
View as plain text