Filters
How to search
  • Plain words find names, texts and examples.
  • "two words" finds the exact phrase.
  • --name or -x finds an option.
  • #word looks only inside commands.
  • @grep finds lessons and labs that use grep.
  • Filters: cat:network · in:labs · in:notes · level:rhcsa · ch:8 · root:yes. Put ! before a word to leave it out. OR between words means one of them.
  • ↑ ↓ to move · Enter to open · Esc to close · / to search

KubernetesVisual series

Inside a Kubernetes cluster

kubectl apply returns and the pod sits in Pending. The API server accepted the object, so the control plane looks fine; the work of turning that object into a running container is somewhere else.

Quick reference

  • Control plane: scheduler (SCHED) · API server (API) · etcd (KV) · controller manager (CTRL)
  • Workers: kubelet (NODE) · container runtime (CRI) · kube-proxy (PROXY)
  • Add-ons: CoreDNS (DNS) · CNI plugin (CNI)

Request flow: scheduler → API server → etcd; API server → kubelet → container runtime; kubelet → CoreDNS; kubelet → CNI plugin; API server → kube-proxy

Explained

Control plane

The control plane is four components. The API server is the front door and the only component that talks to etcd, the key-value store that holds cluster state. The scheduler watches for pods with no node and writes the binding back through the API server. The controller manager runs the controllers: Deployment, ReplicaSet, Node, each comparing desired state with actual.

Workers

Each worker runs three things. The kubelet is the agent: it watches the API server for pods bound to its node and asks the container runtime to start them through the CRI. The runtime, usually containerd, pulls the image and runs the container. kube-proxy programs the iptables or IPVS rules that make Service virtual IPs work.

Add-ons

Below the workers, the add-ons give the cluster names and addresses. CoreDNS runs on the workers and resolves service names inside the cluster. The CNI plugin assigns pod IPs and wires the pod network, and some plugins enforce network policy.

The honest caveat: this is a logical map. A managed control plane hides those four boxes, CoreDNS runs on the workers rather than in its own tier, and the CNI is a set of binaries and daemons, not one service.

The lesson: every cluster change is a write to the API server; every stuck object is a reconcile loop that cannot finish.

In one line

Every pod starts at the API server. Cluster state is a set of API writes, and etcd keeps them.

Check the api

kubectl get --raw /readyz

More notes: Kubernetes

Open in the notes app: search, filters, copy This note on GitHub