kubernetes: k8s.io/kubernetes/cmd/kube-controller-manager/app Index | Files | Directories

package app

import "k8s.io/kubernetes/cmd/kube-controller-manager/app"

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Package app imports the API groups that the client will support TODO: Remove this file when namespace controller and garbage collector stops using legacyscheme.Registry.RESTMapper()

Package app implements a server that runs a set of active components. This includes replication controllers, service endpoints and nodes.

Index

Package Files

apps.go autoscaling.go batch.go bootstrap.go certificates.go cloudproviders.go controllermanager.go core.go discovery.go flags_providers.go import_known_versions.go plugins.go plugins_providers.go policy.go rbac.go

Constants

const (
    // ControllerStartJitter is the Jitter used when starting controller managers
    ControllerStartJitter = 1.0
    // ConfigzName is the name used for register kube-controller manager /configz, same with GroupName.
    ConfigzName = "kubecontrollermanager.config.k8s.io"
)

Variables

var ControllersDisabledByDefault = sets.NewString(
    "bootstrapsigner",
    "tokencleaner",
)

ControllersDisabledByDefault is the set of controllers which is disabled by default

func AttemptToLoadRecycler Uses

func AttemptToLoadRecycler(path string, config *volume.VolumeConfig) error

AttemptToLoadRecycler tries decoding a pod from a filepath for use as a recycler for a volume. If successful, this method will set the recycler on the config. If unsuccessful, an error is returned. Function is exported for reuse downstream.

func GetAvailableResources Uses

func GetAvailableResources(clientBuilder controller.ControllerClientBuilder) (map[schema.GroupVersionResource]bool, error)

GetAvailableResources gets the map which contains all available resources of the apiserver TODO: In general, any controller checking this needs to be dynamic so users don't have to restart their controller manager if they change the apiserver. Until we get there, the structure here needs to be exposed for the construction of a proper ControllerContext.

func GetDynamicPluginProber Uses

func GetDynamicPluginProber(config persistentvolumeconfig.VolumeConfiguration) volume.DynamicPluginProber

GetDynamicPluginProber gets the probers of dynamically discoverable plugins for the attach/detach controller. Currently only Flexvolume plugins are dynamically discoverable.

func KnownControllers Uses

func KnownControllers() []string

KnownControllers returns all known controllers's name

func NewControllerInitializers Uses

func NewControllerInitializers(loopMode ControllerLoopMode) map[string]InitFunc

NewControllerInitializers is a public map of named controller groups (you can start more than one in an init func) paired to their InitFunc. This allows for structured downstream composition and subdivision.

func NewControllerManagerCommand Uses

func NewControllerManagerCommand() *cobra.Command

NewControllerManagerCommand creates a *cobra.Command object with default parameters

func ProbeAttachableVolumePlugins Uses

func ProbeAttachableVolumePlugins() []volume.VolumePlugin

ProbeAttachableVolumePlugins collects all volume plugins for the attach/ detach controller. The list of plugins is manually compiled. This code and the plugin initialization code for kubelet really, really need a through refactor.

func ProbeControllerVolumePlugins Uses

func ProbeControllerVolumePlugins(cloud cloudprovider.Interface, config persistentvolumeconfig.VolumeConfiguration) []volume.VolumePlugin

ProbeControllerVolumePlugins collects all persistent volume plugins into an easy to use list. Only volume plugins that implement any of provisioner/recycler/deleter interface should be returned.

func ProbeExpandableVolumePlugins Uses

func ProbeExpandableVolumePlugins(config persistentvolumeconfig.VolumeConfiguration) []volume.VolumePlugin

ProbeExpandableVolumePlugins returns volume plugins which are expandable

func ResyncPeriod Uses

func ResyncPeriod(c *config.CompletedConfig) func() time.Duration

ResyncPeriod returns a function which generates a duration each time it is invoked; this is so that multiple controllers don't get into lock-step and all hammer the apiserver with list requests simultaneously.

func Run Uses

func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error

Run runs the KubeControllerManagerOptions. This should never exit.

func StartControllers Uses

func StartControllers(ctx ControllerContext, startSATokenController InitFunc, controllers map[string]InitFunc, unsecuredMux *mux.PathRecorderMux) error

StartControllers starts a set of controllers with a specified ControllerContext

type ControllerContext Uses

type ControllerContext struct {
    // ClientBuilder will provide a client for this controller to use
    ClientBuilder controller.ControllerClientBuilder

    // InformerFactory gives access to informers for the controller.
    InformerFactory informers.SharedInformerFactory

    // ObjectOrMetadataInformerFactory gives access to informers for typed resources
    // and dynamic resources by their metadata. All generic controllers currently use
    // object metadata - if a future controller needs access to the full object this
    // would become GenericInformerFactory and take a dynamic client.
    ObjectOrMetadataInformerFactory controller.InformerFactory

    // ComponentConfig provides access to init options for a given controller
    ComponentConfig kubectrlmgrconfig.KubeControllerManagerConfiguration

    // DeferredDiscoveryRESTMapper is a RESTMapper that will defer
    // initialization of the RESTMapper until the first mapping is
    // requested.
    RESTMapper *restmapper.DeferredDiscoveryRESTMapper

    // AvailableResources is a map listing currently available resources
    AvailableResources map[schema.GroupVersionResource]bool

    // Cloud is the cloud provider interface for the controllers to use.
    // It must be initialized and ready to use.
    Cloud cloudprovider.Interface

    // Control for which control loops to be run
    // IncludeCloudLoops is for a kube-controller-manager running all loops
    // ExternalLoops is for a kube-controller-manager running with a cloud-controller-manager
    LoopMode ControllerLoopMode

    // Stop is the stop channel
    Stop <-chan struct{}

    // InformersStarted is closed after all of the controllers have been initialized and are running.  After this point it is safe,
    // for an individual controller to start the shared informers. Before it is closed, they should not.
    InformersStarted chan struct{}

    // ResyncPeriod generates a duration each time it is invoked; this is so that
    // multiple controllers don't get into lock-step and all hammer the apiserver
    // with list requests simultaneously.
    ResyncPeriod func() time.Duration
}

ControllerContext defines the context object for controller

func CreateControllerContext Uses

func CreateControllerContext(s *config.CompletedConfig, rootClientBuilder, clientBuilder controller.ControllerClientBuilder, stop <-chan struct{}) (ControllerContext, error)

CreateControllerContext creates a context struct containing references to resources needed by the controllers such as the cloud provider and clientBuilder. rootClientBuilder is only used for the shared-informers client and token controller.

func (ControllerContext) IsControllerEnabled Uses

func (c ControllerContext) IsControllerEnabled(name string) bool

IsControllerEnabled checks if the context's controllers enabled or not

type ControllerLoopMode Uses

type ControllerLoopMode int

ControllerLoopMode is the kube-controller-manager's mode of running controller loops that are cloud provider dependent

const (
    // IncludeCloudLoops means the kube-controller-manager include the controller loops that are cloud provider dependent
    IncludeCloudLoops ControllerLoopMode = iota
    // ExternalLoops means the kube-controller-manager exclude the controller loops that are cloud provider dependent
    ExternalLoops
)

type InitFunc Uses

type InitFunc func(ctx ControllerContext) (debuggingHandler http.Handler, enabled bool, err error)

InitFunc is used to launch a particular controller. It may run additional "should I activate checks". Any error returned will cause the controller process to `Fatal` The bool indicates whether the controller was enabled.

Directories

PathSynopsis
config
optionsPackage options provides the flags used for the controller manager.
testing

Package app imports 138 packages (graph) and is imported by 193 packages. Updated 2019-11-15. Refresh now. Tools for package owners.