Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Reconciliation Loops

In [distributed] systems, there has been a continual push to make systems self-healing. We can find one implementation of this in [kubernetes]. Kubernetes is based on the concept of a declarative specification ([declarative-programming]) of the desired state of the [cluster] and the use of reconciliation loops to drive the actual state toward the desired state.

In a Kubernetes cluster, there are several components that work together to implement this behavior. The primary component is the pod, which has one or more containers, and is the unit that gets scheduled onto a node in the cluster. Containers reside in an image registry, and when placed on a node are governed by the container runtime on that node and a process known as a kubelet.

One node in the cluster is considered the master node where all the control-plane components reside. The [api] server handles incoming requests and updates the etcd [database] with state changes. The scheduler is responsible for determining which nodes are appropriate to allocate a given workload. Finally, the controller manager coordinates a set of controllers that make up the reconciliation loops that drive the entire cluster to the desired state.