Tip click a numbered piece on the map, or step with the ← / → arrows.
Lifecycle
—
—
Told about work by
—
—
Who invokes it
—
—
Talks over
—
—
The real dividing lines: continuous loop vs one-shot call, and network-watched vs locally-invoked.
| Piece | Lifecycle | Told about work by | Who invokes it | Talks over | Examples |
|---|---|---|---|---|---|
| Control plane core | Always up — the hub | It is the state | Everything, through apiserver | HTTPS API; etcd stays private | etcd, kube-apiserver |
| Webhooks | One-shot · per request | Auth: startup flag (static) · Admission: watched API object (dynamic) | kube-apiserver | HTTPS, synchronous — apiserver blocks | aws-iam-auth, IRSA webhook, Istio injector |
| Controllers | Continuous · never completes | Watch subscription (Informer cache) + periodic resync | Nothing — self-driven | Watch stream in; writes back through apiserver | kube-scheduler, ReplicaSet ctrl, Karpenter |
| Node agents | Continuous · one per node | Startup config + watch (its own node's pods) | Nothing — a daemon | Watch apiserver; exec/socket to plugins | kubelet, kube-proxy, ipamd |
| Plugins | One-shot · per call | File/socket discovery, locally | A node agent — never apiserver | exec (CNI) · local gRPC socket (CSI/CRI) | containerd, runc, aws-cni, ebs-csi-node |