k8s controllers are control loops that watch over the current state of a cluster and request changes (or make them directly) based on a desired state, specified under the spec field of k8s objects. They are embedded into the kube-controller-manager as a single binary. A controller tracks at least one resource1 type.

Examples of such controllers are (the list is not exhaustive):

  • Node Controller,
  • Deployment Controller,
  • Job Controller,
  • ServiceAccount Controller

Built-in controllers, like the ones above, bring the cluster closer to the desired state via the kube-apiserver (don’t make changes directly).

Sources

Footnotes

  1. k8s api resources