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).

Create a free account to save this page, take notes and track your progress. Sign in

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.

Look at the control plane
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.

Test yourself

Which component decides which node a new pod runs on?

  1. kubelet
  2. etcd
  3. kube-scheduler
  4. kube-proxy
Show answer

Answer: kube-scheduler

The scheduler assigns pods to nodes; the kubelet on that node starts them.

Was this page helpful?