Google has systems like omega and borg to manage containers.
Google has built a system using Go lang which has DNA of omega and borg with a motive to docker in production.
Now k8s motive is to take containers to production.
K8s Interaction in plain english (desired state)
you => I want 10 nginx pods
api server recives this and stores in etcd
api server informs scheduler
scheduler will create 10 pods on some nodes
controller ensure 10 pods are running all the time, if one pod fails it creates another.
K8s use cattle approach in pet vs cattle
Components
Nodes: These are physical or virtual machines
Nodes are categorized into
Master Node: They manage the cluster.
Node (Worker):
This is where applications run
Master Node components
API Server: This is responsible for communication
etcd: This is where the data is stored (memory of k8s cluster)
scheduler: This is responsible for creating any new container (pod)
controller: This is not one component but internally many components.
cloud controller manager (optional): This exists on k8s hosted by cloud providers (AKS, GKE, EKS): This is aware of cloud specifics.
Node Components
Kubelet: This is agent of k8s master. This recieves instructions and executes them
Container Runtime: This is container engine.
Kube-proxy: This is responsible for communication (part of networking)