I am researching the K8s architecture, focusing on the flow of pod spinning in the system.
I was wondering how (that is, who is initiating the communication) and when the different components of the control plane communicate with each other.
I have followed the excellent talk of Jérôme Petazzoni at LISA 2019 (here) to understand the architecture of the control plane, and read the concepts on kubernetes.io.
However, I still haven't found the answers to the following questions:
- Who initiates the resource check of each node, in the documentation it is written:
Node objects track information about the Node's resource capacity: for example, the amount of memory available and the number of CPUs. Nodes that self-register report their capacity during registration. If you manually add a Node, then you need to set the node's capacity information when you add it.
However, there is no specification on when does it update at etcd, and who initiates the regular update (other than the heartbeat that updates the status of the node).
Also, when does the cache of the scheduler update?
- Who informs the different components about new pending requests? That is, how is the
controller-manager/scheduler"knows" when it suppose to do its job? Each request is written as a manifest inetcdby thekube-api-server, but these components aren't connected toetcddirectly.
Does that mean the API-Server needs to inform each component about each new request?
I have many possible answers, but not a concrete confirmation of the real process in current K8s architecture.