Blog
EdgeGuideSep 25, 2026·3 min read

Kubernetes 101

What Kubernetes is, what problems it solves, and how it is composed and start using it.

View as slides

A short primer before anything edge-specific.

What it is

Kubernetes is an open-source container orchestrator. It joins several machines into one cluster and takes care of deploying, scaling and managing containerised applications through a standard API.

Why use it, and when not to use it

  • Resilience. With several nodes, workloads move elsewhere when a machine fails.
  • Scaling. An application runs as one or many containers behind the same API.
  • Service discovery. Workloads find each other by name, not by hand-managed IP addresses.
  • Consistency. The same manifests deploy on-premise, in the cloud, or across both.

And when not to:

  • One app on one box. Docker Compose or systemd is simpler and enough.
  • Nobody to run it. Kubernetes is a platform to operate, not a tool to install. The learning curve is real, and so is the day-two work.
  • Hard real time. It schedules containers. It does not replace a PLC or a real-time OS.

Brief history

Kubernetes grew out of a decade of running containers inside Google, went open source in 2014, and was handed to a vendor-neutral foundation a year later. That last move is what turned it into an industry standard rather than a Google product.

Inside Google
2003Borg runs Search, Gmail and Maps: declarative workloads, scheduling, self-healing.
2006Google contributes cgroups to Linux, the isolation containers rely on.
2013Docker makes containers easy. “Project Seven”, Borg’s open-source successor, starts.
Open-source launch
2014First commit on GitHub, announced at DockerCon. “Kubernetes” is Greek for helmsman.
2015Version 1.0 ships. Google and the Linux Foundation create the CNCF, seeded with Kubernetes.
Community-led
2017Docker, Azure and AWS all adopt it: the orchestration wars end.
2018First project ever to graduate from the CNCF.
2024Ten years in, often called the second-largest open-source project after Linux.
Internal experience2003 – 2013
Public project2014 – 2016
Industry standard2017 – today

One of the 3 most mature projects in the CNCF.

An extensible product...

The API is the contract. Every object has a path on it, operators add their own kinds, and runtime, network and storage are swappable behind standard interfaces. Like Linux, it comes in many distributions.

Every object has a path on the API server
/apis/appsgroup/v1version/namespaces/default/deploymentskind/webnameA Deployment
/apis/rbac.authorization.k8s.iogroup/v1version/namespaces/default/roleskind/pod-readernameA Role
/apis/sg.dti.extensions.ioyour group/v1alpha1version/namespaces/ribbon-watch/detectionyour kind/top-rollnameA custom resource, from an operator
Behind the API, standard interfaces with swappable implementations
RuntimeCRIcontainerdCRI-Onvidia
NetworkCNIflannelCiliumCalico
StorageCSILonghornCephcloud disks
IngressGateway APITraefikNGINXCilium

...based on a reconciliation principle

You tell Kubernetes what you want, not how to get there: "two copies of this container, reachable on this port". The cluster stores that desired state and keeps comparing it with what is actually running. When a pod crashes or a node disappears, the gap is noticed and closed without anyone being paged. The same loop applies your changes: edit the desired state, and the cluster converges to it.

Desired stateWhat you declare
kind: Deploymentname: webreplicas: 2
Controllers compare both and act on the difference
Observed stateWhat actually runs
web-a
web-c
2 of 2 running · in sync

Control plane and data plane

A cluster has two halves.

  • The control plane holds the desired state. It is made of the API server, the scheduler, the controller managers, and a datastore (etcd, or SQLite in a default k3s install).
  • The data plane is the worker nodes. They run the containers the control plane assigns to them.
Kubernetes cluster
Control plane
API server
Scheduler
Controller manager
etcd / SQLite
Data plane
Node 1 kubelet
Node 2 kubelet
Node 3 kubelet
Operators · kubectl · GitOps
End users

Operators and tooling talk to the API server. End users never see it; they reach the applications running on the nodes.

Hands-on

Exercises in k8s-101-exercices: a folder each, with README, manifests and a check script. Work in your own namespace on the shared k3s cluster.

  1. Hello. Two replicas. Delete a pod by hand, watch it come back.
  2. Service. A NodePort in front, reached from outside and by name inside.
  3. ConfigMap. Config out of the image. Which changes need a rollout?
  4. Init containers. Wait for a dependency, seed a volume, then start.
  5. Break it. Wrong image tag, failing probe. Describe, logs, events, fix.

Key tools

CLI:

  • kubectl, the go-to for quick debug and inspection.
  • k9s, lens, tool to visualise cluster state

Application packaging:

  • kustomize native templates
  • helm app templating, client side
  • kro app templating, server side

GitOps

  • flux, unix-style & lighweight controllers
  • argocd, dev friendly app & UI

What GitOps is exactly?

Instead of pointing kubectl at the cluster, you push manifests to a Git repository and an agent inside the cluster pulls them and applies them through the API server. The repository becomes the source of truth: every change is a reviewed commit, the whole cluster can be rebuilt from it, and rolling back is a revert.

Youedit a manifest, open a PR, merge
git push
Git repository the source of truth
v2web: 3 replicas
v1web: first deploy
agent pulls
Kubernetes cluster
GitOps agentFlux · Argo CDpulled v2, applied
applies through the API server
Workloads
v2
Versionedevery change is a reviewed commit
Reproduciblethe repo rebuilds the cluster
Revertablegit revert is the rollback
© 2026 Mathieu Sabatier