Kubernetes Architecture — Control Plane & Worker Nodes
A Kubernetes cluster is not a single entity; it is a distributed system split into two distinct tiers: the Control Plane (the brain) and Worker Nodes (the muscle). Together, they form an autonomous reconciliation machine. When you tell Kubernetes to run three instances of your service, you are submitting an intent to the brain, which continuously commands the muscles to make that intent a physical reality.
Understanding how these internal components interact is essential for debugging outages, optimizing performance, and designing resilient workloads.
Kubernetes Architecture — Control Plane & Worker Nodes Flow
The Control Plane (Master Components)
The control plane makes global decisions about the cluster (like scheduling), detects events, and responds to cluster changes.
1. kube-apiserver
The API Server is the front door of the Kubernetes control plane. It exposes the Kubernetes HTTP REST API and serves as the central hub. Every single interaction—whether from kubectl, a CI/CD pipeline, an internal controller, or a worker node agent—goes through the API Server. It validates requests, processes authentication and authorization, and is the only component allowed to directly talk to etcd.
2. etcd
etcd is a consistent, highly-available distributed key-value store based on the Raft consensus algorithm. It holds the entire state of the cluster: which pods exist, their configuration, node health, secrets, and namespaces. If etcd is lost without backup, your cluster's brain is wiped clean.
3. kube-scheduler
The scheduler watches for newly created pods that have no assigned node and selects the optimal worker node for them to run on. It evaluates resource requirements (CPU/RAM requests), affinity and anti-affinity rules, taints and tolerations, hardware constraints, and data locality.
4. kube-controller-manager
Controllers are the heart of the reconciliation loop. The Controller Manager compiles dozens of individual control loops into a single binary:
- Node Controller: Detects when a worker node stops responding and initiates pod eviction.
- Job Controller: Watches for batch jobs and creates pods to run them to completion.
- EndpointSlice Controller: Populates endpoints linking Services to active Pod IPs.
- ServiceAccount Controller: Creates default accounts and API access tokens for new namespaces.
Worker Nodes (Execution Plane)
Worker nodes are physical or virtual servers that actually execute your containerized workloads. Each node runs three critical services:
1. kubelet
The node captain. An agent that registers the node with the API server, watches for PodSpecs assigned to its node, and instructs the container runtime to launch or kill containers. The kubelet also reports container health and node metrics back to the control plane.
2. Container Runtime
The underlying software that runs containers (e.g., containerd, CRI-O). It communicates with the kubelet via the Container Runtime Interface (CRI) to pull container images, set up cgroups and namespaces, and start container processes.
3. kube-proxy
A network proxy that runs on each node, maintaining network rules (typically using iptables or IPVS). It enables network communication to your Pods from network sessions inside or outside of your cluster, implementing the abstraction of Kubernetes Services.
The Request Lifecycle: Scheduling a Pod
What actually happens under the hood when you run kubectl apply -f pod.yaml?
- kubectl issues an HTTP POST request containing the manifest to
kube-apiserver. kube-apiserverauthenticates and authorizes the user, validates the schema, and commits the unassigned Pod object toetcd.kube-schedulernotices the unscheduled Pod, scores all available worker nodes, selects the best candidate (e.g.,Node-2), and sends a binding request back tokube-apiserver.kube-apiserverwrites the assigned node toetcd.- The
kubeletdaemon onNode-2detects that a pod has been scheduled to its node. kubeletinvokes the container runtime via CRI to fetch images and spawn containers, and configures the pod network sandbox via CNI.- Once running,
kubeletupdates the Pod status toRunningvia the API Server.
Key Takeaways
- All cluster communication flows through
kube-apiserver; components never talk directly toetcdor to each other. - The control plane relies on
etcdfor consensus and persistent state. - Worker nodes execute workloads via
kubelet,container runtime, and route traffic viakube-proxy. - Kubernetes operates through continuous reconciliation: state is declared, recorded in etcd, and actively realized across worker nodes.
Enjoyed this breakdown?
Get notified when new lessons go live.