Key Concepts and Terminologies
Your first kubectl output is full of words — node, pod, namespace, kubelet. Without a map, every error message reads like a riddle. This lesson is that map.
The rule
A cluster is a brain and some hands: the control plane decides, nodes do.
The cluster is the whole system. It has two halves.
The control plane is the brain:
- kube-apiserver — the front door. Every command, from you or from inside, goes through it.
- etcd — a key-value store holding the desired and recorded state of everything.
- kube-scheduler — picks which node each new pod should run on.
- kube-controller-manager — runs the control loops that close gaps between wish and reality.
The nodes are the hands — the machines that actually run your containers. Each has:
- kubelet — an agent that starts the containers the control plane assigned and reports back.
- container runtime — the engine that really runs containers, such as containerd.
- kube-proxy — maintains network rules so Service traffic reaches the right pods.
The objects you create:
- Pod — the smallest unit you deploy: one or more containers that share a network address.
- Namespace — a named folder that groups objects, like
notesfor our app. - Labels — key-value tags such as
app: notes-web; selectors find objects by label. - Manifest — a YAML file describing an object; kubectl is the command-line tool that sends it to the API server.
kubectl get pods --namespace notes --selector app=notes-webThe shortcut
For any new word, ask "brain, hands, or thing?" Brain parts decide, hand parts run, and things are what you describe in YAML.
kubectl → API server (brain)
kubectl sends the notes-web manifest to kube-apiserver, which checks it.
A common mix-up: the scheduler only chooses a node. It never starts a container itself — that is the kubelet's job.
Drills
Answer fast — trust the rule.
Where is the cluster's state stored?
Which component actually starts containers on a node?
What does --selector app=notes-web do in a kubectl command?
A new pod is stuck in Pending with no node assigned. Which component has not placed it yet?
Remember
- The control plane (API server, etcd, scheduler, controllers) decides; nodes (kubelet, runtime, kube-proxy) do.
- For any new word ask: brain, hands, or thing?
- Trap: the scheduler picks the node but the kubelet runs the container.
