Control plane (master)

  • API Server: front end; all kubectl and API traffic goes here
  • etcd: distributed key-value store; all cluster state
  • Controller Manager: watches state, takes corrective action (e.g. restart failed Pods)
  • Scheduler: assigns new Pods to nodes

Worker node

  • kubelet: agent; ensures containers run as expected
  • kube-proxy: network rules for Pod-to-Pod communication
  • Container runtime: runs containers (containerd, CRI-O; Docker removed in 1.24)

Architecture

Master:  API Server, etcd, Controller Manager, Scheduler
Worker:  kubelet, kube-proxy, Container Runtime

kubectl

kubectl run hello-minikube
kubectl cluster-info
kubectl get nodes / kubectl get nodes -o wide

Exam gotchas

  • etcd holds cluster state: not the scheduler
  • kubelet runs on every worker, not the control plane