Skip to main content

Kube Controller Manager

The Kube-Controller-Manager manages the various controllers that exist in Kubernetes. Different controllers can be installed in Kubernetes because the Kubernetes API is extensible. An example is the HPA (Horizontal Pod Autoscaler) which is not built-in to Kubernetes, but can be made available by installing the Metrics Server.

The goal of the Kube-Controller-Manager is to monitor the cluster to achieve the desired state for pods and nodes, making decisions to remediate the situation by directly interacting with the Kube-APIServer.

The Kube-Controller-Manager takes necessary actions whenever:

  • A node is added or removed from the cluster or even cannot be reached.
  • A container stops executing or is not healthy

Node Controller

This is the controller that monitors nodes.

By default, every 5 seconds it checks the status of nodes. If it cannot reach a node, it's marked as Unreachable, but only after 40 seconds, meaning 8 attempts, it's marked as NotReady. After being marked as NotReady, the Kube-Controller-Manager waits 5 minutes for the node to become available again; otherwise, it removes pods assigned to the node and tries to deploy them to another available node.

Below we have some configurations that are passed to adjust these parameters.

--node-monitor-period duration (Default: 5s)
--node-monitor-grace-period duration (Default: 40s)

Replication Controller

This is the controller that ensures pods are always available in the cluster with the desired number of pods for a given application. If a pod dies, it creates another.


As mentioned, many controllers exist in the cluster. Whatever concepts we have in Kubernetes, there's a controller for it.

The set of controllers forms the intelligence behind Kubernetes.

Alt text

Like other components, this one can also be installed as a service or pod running on masters.

Alt text

Alt text

Alt text

Alt text

We can activate, deactivate and change configurations using the files above.