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