The master maintains the actual and desired state of the cluster using etcd, lets users and nodes change the desired state via the kube-apiserver, runs controllers that reconcile these states, and the kube-scheduler assigns pods to a node to run.