How these work together, in order to create a pod.
Time Sequence Diagram –> Shows the sequential order of actions.
How does a pod get scheduled on to a node?
Kube config file gives permissions to kubectl to communicate with the Kubernetes cluster.
kubectl command sends information to the kube-api server. That then saves the new deployment spec in etcd
While this is occurring, the Kube Controller Manager is checking the Kube API Server, to see if there has been any changes since its last loop:
Since there is a new deployment, the Kube Scheduler checks the Kube API Server, to see if there are any new pods that have not been assigned a node.
Kube API Server tells the Scheduler that there is a new pod, that has not been placed on a specific node.
Therefore, the Dcheduler chooses a node for the pod and sends the information back to the Kube API Server:
The API Server saves the state of the cluster in etcd:
Regarding the Worker Node, the kubelet checks the API Server, to see if there are any new pods that it has been assigned.
Kube API Server then sends the pod spec for the new pod to the Kubelet. This pulls the image and then creates the container, using the container runtime:
Once the pod has been created, the Kubelet sends the pod status (healthy or unhealthy), back to the API server:
This then saves the state to etcd:
Kube API Server processes thousands of requests to keep the server running.
Useful talk called “Beyond Block Diagrams” on this subject.