Kubernetes Tutorial · Kubernetes Basics · Lesson 2 of 26
Cluster Architecture
The control plane (API server, etcd, scheduler, controllers) and the nodes (kubelet, container runtime, kube-proxy).
Control plane
- kube-apiserver: the front door. Everything (kubectl, controllers, kubelets) talks to the API.
- etcd: the key-value store holding the cluster's state.
- kube-scheduler: picks a node for each new pod.
- kube-controller-manager: runs controllers (Deployments, ReplicaSets, Jobs, nodes...).
Nodes
- kubelet: starts and watches the pods assigned to its node.
- Container runtime (containerd, CRI-O): pulls images and runs containers.
- kube-proxy (or an eBPF CNI): implements Service networking.
Managed services (EKS, GKE, AKS) run the control plane for you; you manage nodes or let the provider do it.
echo "control plane components running as pods in kube-system:"
kubectl -n kube-system get pods -o custom-columns=COMPONENT:.metadata.labels.component --no-headers | grep -v '<none>' | sort
echo "API resources this cluster serves: $(kubectl api-resources --no-headers | wc -l)"
Output
control plane components running as pods in kube-system: etcd kube-apiserver kube-controller-manager kube-scheduler API resources this cluster serves: 71
Run this on your computer — see “Get Started” for setup.
See Cluster architecture.
Test yourself
Which component decides which node a new pod runs on?
kubeletetcdkube-schedulerkube-proxy
Show answer
Answer: kube-scheduler
The scheduler assigns pods to nodes; the kubelet on that node starts them.