mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
make all controllers obey the disable flags
This commit is contained in:
parent
0fad9ce5e2
commit
8be9a216d4
@ -262,7 +262,19 @@ func IsControllerEnabled(name string, disabledByDefaultControllers sets.String,
|
|||||||
type InitFunc func(ctx ControllerContext) (bool, error)
|
type InitFunc func(ctx ControllerContext) (bool, error)
|
||||||
|
|
||||||
func KnownControllers() []string {
|
func KnownControllers() []string {
|
||||||
return sets.StringKeySet(newControllerInitializers()).List()
|
ret := sets.StringKeySet(newControllerInitializers())
|
||||||
|
|
||||||
|
ret.Insert(
|
||||||
|
saTokenControllerName,
|
||||||
|
nodeControllerName,
|
||||||
|
serviceControllerName,
|
||||||
|
routeControllerName,
|
||||||
|
pvBinderControllerName,
|
||||||
|
attachDetatchControllerName,
|
||||||
|
)
|
||||||
|
|
||||||
|
// add "special" controllers that aren't initialized normally
|
||||||
|
return ret.List()
|
||||||
}
|
}
|
||||||
|
|
||||||
var ControllersDisabledByDefault = sets.NewString(
|
var ControllersDisabledByDefault = sets.NewString(
|
||||||
@ -335,12 +347,21 @@ func getAvailableResources(clientBuilder controller.ControllerClientBuilder) (ma
|
|||||||
return allResources, nil
|
return allResources, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
saTokenControllerName = "serviceaccount-token"
|
||||||
|
nodeControllerName = "node"
|
||||||
|
serviceControllerName = "service"
|
||||||
|
routeControllerName = "route"
|
||||||
|
pvBinderControllerName = "persistentvolume-binder"
|
||||||
|
attachDetatchControllerName = "attachdetach"
|
||||||
|
)
|
||||||
|
|
||||||
func StartControllers(controllers map[string]InitFunc, s *options.CMServer, rootClientBuilder, clientBuilder controller.ControllerClientBuilder, stop <-chan struct{}) error {
|
func StartControllers(controllers map[string]InitFunc, s *options.CMServer, rootClientBuilder, clientBuilder controller.ControllerClientBuilder, stop <-chan struct{}) error {
|
||||||
versionedClient := rootClientBuilder.ClientOrDie("shared-informers")
|
versionedClient := rootClientBuilder.ClientOrDie("shared-informers")
|
||||||
sharedInformers := informers.NewSharedInformerFactory(versionedClient, ResyncPeriod(s)())
|
sharedInformers := informers.NewSharedInformerFactory(versionedClient, ResyncPeriod(s)())
|
||||||
|
|
||||||
// always start the SA token controller first using a full-power client, since it needs to mint tokens for the rest
|
// always start the SA token controller first using a full-power client, since it needs to mint tokens for the rest
|
||||||
if len(s.ServiceAccountKeyFile) > 0 {
|
if len(s.ServiceAccountKeyFile) > 0 && IsControllerEnabled(saTokenControllerName, ControllersDisabledByDefault, s.Controllers...) {
|
||||||
privateKey, err := serviceaccount.ReadPrivateKey(s.ServiceAccountKeyFile)
|
privateKey, err := serviceaccount.ReadPrivateKey(s.ServiceAccountKeyFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error reading key for service account token controller: %v", err)
|
return fmt.Errorf("error reading key for service account token controller: %v", err)
|
||||||
@ -367,6 +388,9 @@ func StartControllers(controllers map[string]InitFunc, s *options.CMServer, root
|
|||||||
).Run(int(s.ConcurrentSATokenSyncs), stop)
|
).Run(int(s.ConcurrentSATokenSyncs), stop)
|
||||||
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
glog.Warningf("%q is disabled", saTokenControllerName)
|
||||||
}
|
}
|
||||||
|
|
||||||
availableResources, err := getAvailableResources(clientBuilder)
|
availableResources, err := getAvailableResources(clientBuilder)
|
||||||
@ -403,11 +427,13 @@ func StartControllers(controllers map[string]InitFunc, s *options.CMServer, root
|
|||||||
glog.Infof("Started %q", controllerName)
|
glog.Infof("Started %q", controllerName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// all the remaning plugins want this cloud variable
|
||||||
cloud, err := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile)
|
cloud, err := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cloud provider could not be initialized: %v", err)
|
return fmt.Errorf("cloud provider could not be initialized: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ctx.IsControllerEnabled(nodeControllerName) {
|
||||||
_, clusterCIDR, err := net.ParseCIDR(s.ClusterCIDR)
|
_, clusterCIDR, err := net.ParseCIDR(s.ClusterCIDR)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", s.ClusterCIDR, err)
|
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", s.ClusterCIDR, err)
|
||||||
@ -443,6 +469,11 @@ func StartControllers(controllers map[string]InitFunc, s *options.CMServer, root
|
|||||||
nodeController.Run()
|
nodeController.Run()
|
||||||
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
||||||
|
|
||||||
|
} else {
|
||||||
|
glog.Warningf("%q is disabled", nodeControllerName)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctx.IsControllerEnabled(serviceControllerName) {
|
||||||
serviceController, err := servicecontroller.New(
|
serviceController, err := servicecontroller.New(
|
||||||
cloud,
|
cloud,
|
||||||
clientBuilder.ClientOrDie("service-controller"),
|
clientBuilder.ClientOrDie("service-controller"),
|
||||||
@ -456,7 +487,15 @@ func StartControllers(controllers map[string]InitFunc, s *options.CMServer, root
|
|||||||
go serviceController.Run(stop, int(s.ConcurrentServiceSyncs))
|
go serviceController.Run(stop, int(s.ConcurrentServiceSyncs))
|
||||||
}
|
}
|
||||||
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
||||||
|
} else {
|
||||||
|
glog.Warningf("%q is disabled", serviceControllerName)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctx.IsControllerEnabled(routeControllerName) {
|
||||||
|
_, clusterCIDR, err := net.ParseCIDR(s.ClusterCIDR)
|
||||||
|
if err != nil {
|
||||||
|
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", s.ClusterCIDR, err)
|
||||||
|
}
|
||||||
if s.AllocateNodeCIDRs && s.ConfigureCloudRoutes {
|
if s.AllocateNodeCIDRs && s.ConfigureCloudRoutes {
|
||||||
if cloud == nil {
|
if cloud == nil {
|
||||||
glog.Warning("configure-cloud-routes is set, but no cloud provider specified. Will not configure cloud provider routes.")
|
glog.Warning("configure-cloud-routes is set, but no cloud provider specified. Will not configure cloud provider routes.")
|
||||||
@ -470,7 +509,11 @@ func StartControllers(controllers map[string]InitFunc, s *options.CMServer, root
|
|||||||
} else {
|
} else {
|
||||||
glog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", s.AllocateNodeCIDRs, s.ConfigureCloudRoutes)
|
glog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", s.AllocateNodeCIDRs, s.ConfigureCloudRoutes)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
glog.Warningf("%q is disabled", routeControllerName)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctx.IsControllerEnabled(pvBinderControllerName) {
|
||||||
alphaProvisioner, err := NewAlphaVolumeProvisioner(cloud, s.VolumeConfiguration)
|
alphaProvisioner, err := NewAlphaVolumeProvisioner(cloud, s.VolumeConfiguration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("an backward-compatible provisioner could not be created: %v, but one was expected. Provisioning will not work. This functionality is considered an early Alpha version.", err)
|
return fmt.Errorf("an backward-compatible provisioner could not be created: %v, but one was expected. Provisioning will not work. This functionality is considered an early Alpha version.", err)
|
||||||
@ -490,11 +533,14 @@ func StartControllers(controllers map[string]InitFunc, s *options.CMServer, root
|
|||||||
volumeController := persistentvolumecontroller.NewController(params)
|
volumeController := persistentvolumecontroller.NewController(params)
|
||||||
go volumeController.Run(stop)
|
go volumeController.Run(stop)
|
||||||
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
||||||
|
} else {
|
||||||
|
glog.Warningf("%q is disabled", pvBinderControllerName)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctx.IsControllerEnabled(attachDetatchControllerName) {
|
||||||
if s.ReconcilerSyncLoopPeriod.Duration < time.Second {
|
if s.ReconcilerSyncLoopPeriod.Duration < time.Second {
|
||||||
return fmt.Errorf("Duration time must be greater than one second as set via command line option reconcile-sync-loop-period.")
|
return fmt.Errorf("Duration time must be greater than one second as set via command line option reconcile-sync-loop-period.")
|
||||||
}
|
}
|
||||||
|
|
||||||
attachDetachController, attachDetachControllerErr :=
|
attachDetachController, attachDetachControllerErr :=
|
||||||
attachdetach.NewAttachDetachController(
|
attachdetach.NewAttachDetachController(
|
||||||
clientBuilder.ClientOrDie("attachdetach-controller"),
|
clientBuilder.ClientOrDie("attachdetach-controller"),
|
||||||
@ -512,6 +558,9 @@ func StartControllers(controllers map[string]InitFunc, s *options.CMServer, root
|
|||||||
}
|
}
|
||||||
go attachDetachController.Run(stop)
|
go attachDetachController.Run(stop)
|
||||||
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
||||||
|
} else {
|
||||||
|
glog.Warningf("%q is disabled", attachDetatchControllerName)
|
||||||
|
}
|
||||||
|
|
||||||
sharedInformers.Start(stop)
|
sharedInformers.Start(stop)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user