Learning objectives
By the end of this module, you should be able to:
- Explain the problem Kubernetes solves beyond running a single container.
- Identify the major control-plane and node components.
- Describe declarative desired state and reconciliation.
From containers to orchestration
Docker makes it practical to package and run containers on one host. Production systems then need placement, replacement, service discovery, configuration, rollout and scaling across many machines. Kubernetes provides an API-driven control plane for those concerns.
Kubernetes does not replace the container runtime. It coordinates workloads that a compatible runtime executes on cluster nodes.
The control plane
The API server is the front door to cluster state. etcd stores Kubernetes API data. The scheduler chooses nodes for unscheduled Pods, and controller managers run reconciliation loops that move actual state toward desired state.
- kube-apiserver: validates and serves the Kubernetes API.
- etcd: consistent key-value store for cluster API data.
- kube-scheduler: selects a node for a Pod that has no node assignment.
- kube-controller-manager: runs built-in controllers that reconcile resources.
The node
Each worker node runs kubelet, which watches Pod assignments and works with the container runtime to make containers run. kube-proxy or alternative dataplane implementations help realize Service networking depending on the cluster design.
Worked examples
See the idea in practice.
See the cluster from the API
kubectl cluster-info
kubectl get nodes -o wide
kubectl -n kube-system get pods
- cluster-info shows control-plane endpoints exposed to your client.
- Nodes report readiness and version information.
- System Pods reveal the concrete implementation used by the lab cluster.
Hands-on lab
Lab — Map a real cluster
Goal: Identify the cluster, nodes and system workloads without changing anything.
Before you start
- A working Kubernetes cluster is required. The included validation script can create an isolated kind v1.37 cluster for testing.
STEP 1Check client and server versions
kubectl version
STEP 2Inspect cluster endpoints
kubectl cluster-info
STEP 3Inspect nodes
kubectl get nodes -o wide
STEP 4Inspect system workloads
kubectl -n kube-system get pods -o wide
Verify
- At least one node reports Ready.
- kubectl can query the API server.
- System workloads are visible in kube-system.
Expected outcome
- Client and server information is returned.
- The control-plane node in a local kind cluster normally carries the control-plane role label.
If it fails
- If kubectl cannot connect, inspect kubectl config current-context and kubeconfig.
- If a node is NotReady, inspect kubectl describe node and system Pods before continuing.
Real-world connectionOperators begin incidents by establishing cluster reachability and node/control-plane health before debugging an application.
Avoid these traps
Common mistakes
- Thinking Kubernetes directly runs application binaries without a container runtime.
- Editing etcd directly instead of using the Kubernetes API.
- Treating desired state as a one-time script rather than continuously reconciled state.
Knowledge check
Can you explain it without looking back?
Open each answer only after you have tried to answer the question yourself.
1What component is the normal API entry point?
kube-apiserver.
2What chooses a node for a newly created unscheduled Pod?
kube-scheduler.
3What does reconciliation mean?
Controllers repeatedly compare desired and observed state and act to reduce the difference.