1
16
17
18
19
20 package app
21
22 import (
23 "context"
24 "fmt"
25 "time"
26
27 "k8s.io/client-go/util/flowcontrol"
28 "k8s.io/controller-manager/controller"
29 "k8s.io/kubernetes/cmd/kube-controller-manager/names"
30 "k8s.io/kubernetes/pkg/controller/daemon"
31 "k8s.io/kubernetes/pkg/controller/deployment"
32 "k8s.io/kubernetes/pkg/controller/replicaset"
33 "k8s.io/kubernetes/pkg/controller/statefulset"
34 )
35
36 func newDaemonSetControllerDescriptor() *ControllerDescriptor {
37 return &ControllerDescriptor{
38 name: names.DaemonSetController,
39 aliases: []string{"daemonset"},
40 initFunc: startDaemonSetController,
41 }
42 }
43 func startDaemonSetController(ctx context.Context, controllerContext ControllerContext, controllerName string) (controller.Interface, bool, error) {
44 dsc, err := daemon.NewDaemonSetsController(
45 ctx,
46 controllerContext.InformerFactory.Apps().V1().DaemonSets(),
47 controllerContext.InformerFactory.Apps().V1().ControllerRevisions(),
48 controllerContext.InformerFactory.Core().V1().Pods(),
49 controllerContext.InformerFactory.Core().V1().Nodes(),
50 controllerContext.ClientBuilder.ClientOrDie("daemon-set-controller"),
51 flowcontrol.NewBackOff(1*time.Second, 15*time.Minute),
52 )
53 if err != nil {
54 return nil, true, fmt.Errorf("error creating DaemonSets controller: %v", err)
55 }
56 go dsc.Run(ctx, int(controllerContext.ComponentConfig.DaemonSetController.ConcurrentDaemonSetSyncs))
57 return nil, true, nil
58 }
59
60 func newStatefulSetControllerDescriptor() *ControllerDescriptor {
61 return &ControllerDescriptor{
62 name: names.StatefulSetController,
63 aliases: []string{"statefulset"},
64 initFunc: startStatefulSetController,
65 }
66 }
67 func startStatefulSetController(ctx context.Context, controllerContext ControllerContext, controllerName string) (controller.Interface, bool, error) {
68 go statefulset.NewStatefulSetController(
69 ctx,
70 controllerContext.InformerFactory.Core().V1().Pods(),
71 controllerContext.InformerFactory.Apps().V1().StatefulSets(),
72 controllerContext.InformerFactory.Core().V1().PersistentVolumeClaims(),
73 controllerContext.InformerFactory.Apps().V1().ControllerRevisions(),
74 controllerContext.ClientBuilder.ClientOrDie("statefulset-controller"),
75 ).Run(ctx, int(controllerContext.ComponentConfig.StatefulSetController.ConcurrentStatefulSetSyncs))
76 return nil, true, nil
77 }
78
79 func newReplicaSetControllerDescriptor() *ControllerDescriptor {
80 return &ControllerDescriptor{
81 name: names.ReplicaSetController,
82 aliases: []string{"replicaset"},
83 initFunc: startReplicaSetController,
84 }
85 }
86
87 func startReplicaSetController(ctx context.Context, controllerContext ControllerContext, controllerName string) (controller.Interface, bool, error) {
88 go replicaset.NewReplicaSetController(
89 ctx,
90 controllerContext.InformerFactory.Apps().V1().ReplicaSets(),
91 controllerContext.InformerFactory.Core().V1().Pods(),
92 controllerContext.ClientBuilder.ClientOrDie("replicaset-controller"),
93 replicaset.BurstReplicas,
94 ).Run(ctx, int(controllerContext.ComponentConfig.ReplicaSetController.ConcurrentRSSyncs))
95 return nil, true, nil
96 }
97
98 func newDeploymentControllerDescriptor() *ControllerDescriptor {
99 return &ControllerDescriptor{
100 name: names.DeploymentController,
101 aliases: []string{"deployment"},
102 initFunc: startDeploymentController,
103 }
104 }
105
106 func startDeploymentController(ctx context.Context, controllerContext ControllerContext, controllerName string) (controller.Interface, bool, error) {
107 dc, err := deployment.NewDeploymentController(
108 ctx,
109 controllerContext.InformerFactory.Apps().V1().Deployments(),
110 controllerContext.InformerFactory.Apps().V1().ReplicaSets(),
111 controllerContext.InformerFactory.Core().V1().Pods(),
112 controllerContext.ClientBuilder.ClientOrDie("deployment-controller"),
113 )
114 if err != nil {
115 return nil, true, fmt.Errorf("error creating Deployment controller: %v", err)
116 }
117 go dc.Run(ctx, int(controllerContext.ComponentConfig.DeploymentController.ConcurrentDeploymentSyncs))
118 return nil, true, nil
119 }
120
View as plain text