In the kubernetes documentation for pods, there is a section of “Pods and Controllers” which discusses how a controller detects node failure and then fixes it by rolling out pods on another node.
My understanding is the it is the job of kube-controller-manager
(that runs node-controller) to detect node failure and in case of any failures, work with kube-scheduler
to roll out replacement pods to achieve desired state of the cluster.
The documentation mentions of use workload resources to create and manage multiple Pods, wherein it enumerated Deployment, StatefulSet and DaemonSet as examples of workload resources that manage one or more Pods. From the docs it seems each workload resource has its own controller (continuously running regulatory loop).
What is the exact relation between a kube-controller-manager and Workload resources’ controllers?
Does the kube-controller-manager
run all the workload controllers (for workload resources Deployment, StatefulSet and DaemonSet) together as one binary to handle node failures?