Kubernetes 1.21 was released on 8 April 2021. Whatever the version, the architecture is the same.
flowchart TB
K[kubectl] --> API[kube-apiserver]
subgraph CP[Control plane]
API --> ETCD[etcd]
API --> SCH[scheduler]
API --> CM[controller manager]
end
API --> N1[Node: kubelet and runtime]
API --> N2[Node: kubelet and runtime]
| Component | Job |
|---|---|
| kube-apiserver | The only front door; everything talks to it |
| etcd | Stores all cluster state |
| scheduler | Chooses a node for each new pod |
| controller manager | Reconciles actual state toward desired state |
| kubelet | Runs and reports pods on each node |
You declare desired state in YAML; controllers keep making reality match it. That reconciliation loop is the core idea, and everything else is a type of object built on it.