@@ -17,8 +17,11 @@ import (
17
17
18
18
kerrors "k8s.io/apimachinery/pkg/api/errors"
19
19
"k8s.io/apimachinery/pkg/runtime/schema"
20
+ "k8s.io/apimachinery/pkg/util/sets"
20
21
utilwait "k8s.io/apimachinery/pkg/util/wait"
21
22
"k8s.io/client-go/dynamic"
23
+ restclient "k8s.io/client-go/rest"
24
+ kctrlmgr "k8s.io/kubernetes/cmd/kube-controller-manager/app"
22
25
cmapp "k8s.io/kubernetes/cmd/kube-controller-manager/app/options"
23
26
kapi "k8s.io/kubernetes/pkg/api"
24
27
"k8s.io/kubernetes/pkg/apis/apps"
@@ -27,6 +30,7 @@ import (
27
30
"k8s.io/kubernetes/pkg/apis/extensions"
28
31
"k8s.io/kubernetes/pkg/apis/policy"
29
32
"k8s.io/kubernetes/pkg/capabilities"
33
+ "k8s.io/kubernetes/pkg/controller"
30
34
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
31
35
kubelettypes "k8s.io/kubernetes/pkg/kubelet/types"
32
36
@@ -602,10 +606,6 @@ func startControllers(oc *origin.MasterConfig, kc *kubernetes.MasterConfig) erro
602
606
oc .RunSecurityAllocationController ()
603
607
604
608
if kc != nil {
605
- _ , _ , _ , rcClient , err := oc .GetServiceAccountClients (bootstrappolicy .InfraReplicationControllerServiceAccountName )
606
- if err != nil {
607
- glog .Fatalf ("Could not get client for replication controller: %v" , err )
608
- }
609
609
_ , _ , _ , rsClient , err := oc .GetServiceAccountClients (bootstrappolicy .InfraReplicaSetControllerServiceAccountName )
610
610
if err != nil {
611
611
glog .Fatalf ("Could not get client for replication controller: %v" , err )
@@ -687,10 +687,79 @@ func startControllers(oc *origin.MasterConfig, kc *kubernetes.MasterConfig) erro
687
687
glog .Fatalf ("Could not get client for garbage collector controller: %v" , err )
688
688
}
689
689
690
+ rootClientBuilder := controller.SimpleControllerClientBuilder {
691
+ ClientConfig : & oc .PrivilegedLoopbackClientConfig ,
692
+ }
693
+ saClientBuilder := controller.SAControllerClientBuilder {
694
+ ClientConfig : restclient .AnonymousClientConfig (& oc .PrivilegedLoopbackClientConfig ),
695
+ CoreClient : oc .PrivilegedLoopbackKubernetesClientsetExternal .Core (),
696
+ AuthenticationClient : oc .PrivilegedLoopbackKubernetesClientsetExternal .Authentication (),
697
+ Namespace : "kube-system" ,
698
+ }
699
+ availableResources , err := kctrlmgr .GetAvailableResources (rootClientBuilder )
700
+ if err != nil {
701
+ return err
702
+ }
703
+
704
+ controllerContext := kctrlmgr.ControllerContext {
705
+ ClientBuilder : saClientBuilder ,
706
+ InformerFactory : oc .Informers .KubernetesInformers (),
707
+ Options : * controllerManagerOptions ,
708
+ AvailableResources : availableResources ,
709
+ Stop : utilwait .NeverStop ,
710
+ }
711
+ controllerInitializers := kctrlmgr .NewControllerInitializers ()
712
+
713
+ // TODO remove this. Using it now to control the migration
714
+ allowedControllers := sets .NewString (
715
+ // "endpoint",
716
+ "replicationcontroller" ,
717
+ // "podgc",
718
+ // "resourcequota",
719
+ // "namespace",
720
+ // "serviceaccount",
721
+ // "garbagecollector",
722
+ // "daemonset",
723
+ // "job",
724
+ // "deployment",
725
+ // "replicaset",
726
+ // "horizontalpodautoscaling",
727
+ // "disruption",
728
+ // "statefuleset",
729
+ // "cronjob",
730
+ // "certificatesigningrequests",
731
+ // "ttl",
732
+ // "bootstrapsigner",
733
+ // "tokencleaner",
734
+ )
735
+
736
+ for controllerName , initFn := range controllerInitializers {
737
+ // TODO remove this. Only call one to start to prove the principle
738
+ if ! allowedControllers .Has (controllerName ) {
739
+ glog .Warningf ("%q is skipped" , controllerName )
740
+ continue
741
+ }
742
+ if ! controllerContext .IsControllerEnabled (controllerName ) {
743
+ glog .Warningf ("%q is disabled" , controllerName )
744
+ continue
745
+ }
746
+
747
+ glog .V (1 ).Infof ("Starting %q" , controllerName )
748
+ started , err := initFn (controllerContext )
749
+ if err != nil {
750
+ glog .Errorf ("Error starting %q" , controllerName )
751
+ return err
752
+ }
753
+ if ! started {
754
+ glog .Warningf ("Skipping %q" , controllerName )
755
+ continue
756
+ }
757
+ glog .Infof ("Started %q" , controllerName )
758
+ }
759
+
690
760
// no special order
691
761
kc .RunNodeController ()
692
762
kc .RunScheduler ()
693
- kc .RunReplicationController (rcClient )
694
763
kc .RunReplicaSetController (rsClient )
695
764
kc .RunDeploymentController (deploymentClient )
696
765
kc .RunGarbageCollectorController (garbageCollectorControllerClient , garbageCollectorControllerConfig )
0 commit comments