🎯 API Server
Role: Front door to Kubernetes
Why it matters: Every kubectl command, controller action, and kubelet update goes through the API server. It's the only component that talks to etcd.
Port: 6443 (default)
💾 etcd
Role: Distributed key-value store
Why it matters: Stores all cluster data. If etcd goes down, the cluster loses its "memory". That's why backups are critical.
Port: 2379 (client), 2380 (peer)
📅 Scheduler
Role: Pod placement decision maker
Why it matters: Considers resources, affinity rules, taints/tolerations to find the best node for each pod.
Decision factors: CPU, memory, disk, custom resources
🔄 Controller Manager
Role: Runs control loops
Why it matters: Contains controllers like ReplicaSet controller, Deployment controller, Node controller. Keeps actual state = desired state.
Controllers: 20+ built-in controllers
🤖 Kubelet
Role: Node agent
Why it matters: Watches API server for pods assigned to its node. Starts containers, monitors health, reports status back.
Port: 10250 (API), 10255 (read-only)
🌐 Kube-proxy
Role: Network proxy on each node
Why it matters: Maintains network rules (iptables/IPVS) so services can route traffic to the right pods.
Modes: iptables (default), IPVS, userspace
📦 Container Runtime
Role: Runs containers
Why it matters: Pulls images, creates containers, manages container lifecycle. Kubelet talks to it via CRI (Container Runtime Interface).
Options: containerd, CRI-O, Docker (deprecated)
🎨 Pods
Role: Smallest deployable unit
Why it matters: One or more containers that share network/storage. This is where your application code actually runs.
IP: Each pod gets a unique cluster IP