Business logic implementing control loop within cluster
Move Kubernetes cluster from current state closer to desired state
Often send messages to API server to update state
e.g. Job controller schedules Pod to be run via API. Pod then becomes desired state for other components in the control plane. When Pod completed, Job controller updates Job object to āFinishedā
Can also update external resourcesāe.g. to increase the number of nodes in the cluster
Built-in controllers (e.g. Deployment, Job) run on control planeāresilient
Can extend Kubernetes by running custom controllers outside of control planeāe.g. as a set of Pods or externally to Kubernetes