How Kubernetes runs resources

I am reading Marko Lukša's Kubernetes in Action book (first edition), and it explains well how a resource (Deployment, for example) is created in Kubernetes.
Control Plane components and nodes are watching for changes through the API Server.

Here's what really happens when you create a Deployment resource:
- You create the resource by running kubectl apply -f deployment.yaml
- kubectl posts the deployment resource to the API Server.
- The Deployment controller is notified by the API Server that a new Deployment resource was posted.
- Deployment controller creates a ReplicaSet.
- ReplicaSet controller is notified by the API Server that a new ReplicaSet resource was posted.
- ReplicaSet controller posts a Pod resource to the API Server.
- The Scheduler is notified by the API Server that a Pod resource was posted.
- The Scheduler decides which Node is the most suitable for the Pod to run on.
- The Scheduler updates the Pod resource's Node field with the chosen Node.
- The Kubelet running on that Node is notified by the API Server that a Pod was assigned to its Node.
- Kubelet tells Docker to run the Pod's containers.

Thanks, Marko, for the excellent book and explanation.

Resources

- https://www.manning.com/books/kubernetes-in-action