Open-Source Wikis

/

Kubernetes

/

Components

/

In-tree controllers reference

kubernetes/kubernetes

In-tree controllers reference

Every controller built into kube-controller-manager, what it does, and where it lives.

Controller (descriptor name) Source Watches Writes Notes
deployment pkg/controller/deployment/ Deployment, ReplicaSet, Pod ReplicaSet, Deployment status Rolling-update orchestration
replicaset pkg/controller/replicaset/ ReplicaSet, Pod Pod, ReplicaSet status Pod count enforcement
replicationcontroller pkg/controller/replication/ RC, Pod Pod, RC status Legacy v1 RC; thin wrapper around the RS controller
statefulset pkg/controller/statefulset/ StatefulSet, Pod, PVC Pod, PVC, StatefulSet status Ordered create/delete, stable identity
daemon pkg/controller/daemon/ DaemonSet, Pod, Node Pod, DaemonSet status One pod per matching node
job pkg/controller/job/ Job, Pod Pod, Job status Backoff, parallelism, completions
cronjob pkg/controller/cronjob/ CronJob, Job Job, CronJob status Schedules and history bookkeeping
endpoint pkg/controller/endpoint/ Service, Pod Endpoints Legacy; replaced by EndpointSlice for new clusters
endpointslice pkg/controller/endpointslice/ Service, EndpointSlice, Pod EndpointSlice Modern slice-based alternative
endpointslice-mirroring pkg/controller/endpointslicemirroring/ Custom Endpoints EndpointSlice Mirrors externally managed Endpoints into slices
garbage-collector pkg/controller/garbagecollector/ All resources via dynamic informers DELETE on cascade Owner-ref-driven cascade delete
namespace pkg/controller/namespace/ Namespace DELETE in terminating namespaces Walks every API resource to clean a terminating ns
node-lifecycle pkg/controller/nodelifecycle/ Node, Pod Node taints, Pod eviction Marks NotReady nodes, taints them, evicts pods
node-ipam pkg/controller/nodeipam/ Node Node.Spec.PodCIDRs Allocates pod CIDR blocks per node
taint-eviction pkg/controller/tainteviction/ Node taints, Pod Pod eviction Evicts pods that violate NoExecute taints
device-taint-eviction pkg/controller/devicetainteviction/ DRA devices, Pod Pod eviction DRA equivalent of taint eviction
horizontal-pod-autoscaler pkg/controller/podautoscaler/ HPA, target Scale subresource, metrics Scale subresource Computes desired replicas from metrics
pod-gc pkg/controller/podgc/ Pod DELETE on terminated pods Trims completed pods past threshold
resource-claim pkg/controller/resourceclaim/ ResourceClaim, Pod ResourceClaim DRA: bind claims to pods, reservation lifecycle
resourcepoolstatus pkg/controller/resourcepoolstatusrequest/ ResourcePool ResourcePool status DRA pool status reconciliation
resourcequota pkg/controller/resourcequota/ ResourceQuota, all consuming resources ResourceQuota status Tracks usage vs hard limits
serviceaccount pkg/controller/serviceaccount/ ServiceAccount, Namespace Default SA per namespace Creates default SA in new namespaces
serviceaccount-token pkg/controller/serviceaccount/ (sub-controller) SA, Secret Secret Legacy auto-generated SA token. Disabled by default in new clusters
service-cidr pkg/controller/servicecidrs/ ServiceCIDR, Service ServiceCIDR status Multi-CIDR Service VIP allocation
storage-version-gc pkg/controller/storageversiongc/ StorageVersion StorageVersion delete Cleans up dangling per-apiserver storage version records
storageversion-migrator pkg/controller/storageversionmigrator/ StorageVersionMigration Triggers re-encryption Drives one-shot storage migrations
bootstrap-signer pkg/controller/bootstrap/ Secret, ConfigMap cluster-info ConfigMap Signs the cluster-info config used by kubeadm join
token-cleaner pkg/controller/bootstrap/ bootstrap-token Secret DELETE expired Deletes expired bootstrap tokens
cluster-role-aggregation pkg/controller/clusterroleaggregation/ ClusterRole ClusterRole rules Aggregates rules from labeled ClusterRoles into the parent
disruption pkg/controller/disruption/ PDB, Pod, ReplicaSet, Deployment, StatefulSet PDB status Tracks pods covered by PodDisruptionBudgets
ttl pkg/controller/ttl/ Node Node annotation Annotates nodes with the cluster's TTL setting
ttl-after-finished pkg/controller/ttlafterfinished/ Job DELETE Deletes jobs after ttlSecondsAfterFinished
validatingadmissionpolicy-status pkg/controller/validatingadmissionpolicystatus/ VAP VAP status Reports type-check results
pv-protection, pvc-protection, attach-detach, pv-binder, expand, ephemeral-volume pkg/controller/volume/... PV, PVC, Pod PV, PVC bindings; VolumeAttachment The five-pronged volume control plane
certificate-signing pkg/controller/certificates/signer/ CSR CSR.Status.Certificate Built-in signers for the kubelet client/serving certs
certificate-approval pkg/controller/certificates/approver/ CSR CSR.Status.Conditions Auto-approves valid kubelet CSRs
certificate-cleanup pkg/controller/certificates/cleaner/ CSR CSR delete Deletes old CSRs

The descriptor table that wires names to start-functions is in cmd/kube-controller-manager/app/controller_descriptor.go. Each entry is one row of the form {name, aliases, requiredFeatureGates, isCloud, defaultDisabled, startFn}.

Cross-component note

The cloud-controller-manager (CCM) re-uses three of these descriptors via the cloud-provider library: cloud-node, cloud-node-lifecycle, service-lb-controller, and route. Operators run the CCM alongside kube-controller-manager with the cloud-only controllers disabled in --controllers on the latter.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

In-tree controllers reference – Kubernetes wiki | Factory