In Kubernetes, controllers are control loops that watch the state of your cluster, then make or request changes where needed. Each controller tries to move the current cluster state closer to the desired state
Kubernetes provides the following controllers:
Provides declarative updates for Pods and ReplicaSets
Hierarchy: Deployment -> ReplicaSet -> Pod -> Containers
Maintains a stable set of replica Pods running at any given time
Hierarchy: ReplicaSet -> Pod -> Containers
Represents a set of pods with consistent identities
Hierarchy: StatefulSet -> Pod -> Containers
Ensures that all (or some) Nodes run a copy of a Pod
Hierarchy: DaemonSet -> Pod -> Containers
Creates Jobs on a repeating schedule
Hierarchy: CronJob -> Job -> Pod -> Containers
Creates one or more Pods and ensures that a specified number of them successfully terminate
Hierarchy: Job -> Pod -> Containers