Kubernetes Fundamentals
Kubernetes is a container orchestration platform that automates deploying, scaling, and operating containerized applications across clusters of machines. It schedules workloads, manages networking and storage, and restarts or replaces containers that fail.
itCloud native tools and technologies | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Kubernetes Fundamentals
Kubernetes has a reputation for complexity that is about seventy percent deserved and thirty percent people describing all of it at once. The system itself rests on one idea, and it is a small one.
You write down the state you want. Something else then spends the rest of its life trying to make reality match. That is a thermostat. Kubernetes is a very large, very well-funded thermostat with a Greek name meaning "helmsman", abbreviated K8s because there are eight letters between the K and the s.
Everything follows from that. Each object created carries a spec — what was
asked for — and a status — what is actually going on. Control loops watch
the gap between the two and close it.
A crashed container, a dead machine, a new version to roll out on a Tuesday afternoon: same shape of problem, same machinery. Once that is visible, the two hundred nouns stop being two hundred nouns.
Three of them come first. A Pod is one or more containers glued together, sharing an address, scheduled onto one machine, and — this part matters — designed to die. Do not grow attached to a Pod.
You will not create them by hand either. Declare a Deployment saying "three of these, please" and its controller handles the creating, the replacing and the rolling forward.
A Service then gives that constantly changing set of Pods one stable name, selecting them by their labels, which is how anything in the cluster finds anything else at all.
The architecture underneath is less alarming than its diagram. The control plane
holds an API server every request passes through, a database called etcd
keeping the agreed truth, a scheduler deciding where things land, and
controllers running the loops. Each worker machine runs a kubelet making sure
the right containers are alive, a runtime actually running them, and a proxy
pointing traffic at them. That is the entire cast.
Two things nobody says early enough. Kubernetes is not a platform-as-a-service — it builds nothing for you, brings no database, and has cheerfully no opinion about monitoring. Every gap in that sentence is a decision somebody now owns. And by default a cluster is not a security boundary between the things running inside it. Anyone who assumed otherwise should stop assuming it.
For one small application all of this is comically excessive, and a container on a single virtual machine will serve better. With many services, many machines and somebody carrying a pager, it stops being excessive and becomes the reason the pager stays quiet.
Read the Intro next for the whole picture, the Cheatsheet when you have forgotten a noun, and the Slides if you think in shapes. This was only the map.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://kubernetes.io/docs/concepts/overview/
Supports
- Definition as a portable, extensible, open source platform for containerized workloads with declarative configuration and automation
- Name origin (Greek helmsman), K8s abbreviation, Google open-sourcing in 2014, 15+ years of production experience
- Provided capabilities — service discovery/load balancing, storage orchestration, automated rollouts/rollbacks, bin packing, self-healing, secret and configuration management
- What Kubernetes is not (no traditional PaaS, no source builds, no bundled middleware, no imposed logging/monitoring stack)
- Motivation — managing containers in production, resilient distributed systems
- https://kubernetes.io/docs/concepts/overview/components/
Supports
- Cluster = control plane + one or more worker nodes
- Control plane components — kube-apiserver, etcd, kube-scheduler, kube-controller-manager, optional cloud-controller-manager — and their one-line roles
- Node components — kubelet, container runtime, optional kube-proxy
- Addons (DNS, networking)
- https://kubernetes.io/docs/concepts/overview/working-with-objects/
Supports
- Objects as persistent API records with spec (desired) and status (observed)
- Names, namespaces, initial namespaces, non-namespaced objects
- Declarative management via manifests and kubectl apply
- https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
Supports
- Labels as identifying key/value pairs queried via selectors
- Annotations as non-identifying metadata
- https://kubernetes.io/docs/concepts/architecture/
Supports
- Component roles in the cluster architecture and API server as the front door
- Node/control-plane split and flexibility in deployment
- https://kubernetes.io/docs/concepts/architecture/controller/
Supports
- Controller pattern — control loops watching shared state and moving current state toward desired state
- Thermostat analogy for desired-state convergence
- https://kubernetes.io/docs/concepts/workloads/pods/
Supports
- Pod as smallest deployable unit — shared network namespace, shared storage, scheduled as a unit
- Pod disposability and management by workload controllers
- Pod lifecycle phases
- https://kubernetes.io/docs/concepts/workloads/
Supports
- Workload object taxonomy — Deployment, StatefulSet, DaemonSet, Job, CronJob and their intended uses
- https://kubernetes.io/docs/concepts/services-networking/
Supports
- Service as stable address for changing Pod backends selected by labels
- Automatically managed EndpointSlice objects
- https://kubernetes.io/blog/2024/06/06/10-years-of-kubernetes/
Supports
- Timeline: First Kubernetes commit reaches GitHub (2014 Jun 6)
- Timeline: The project marks ten years since its first commit (2024 Jun 6)
- https://cloudplatform.googleblog.com/2015/07/Kubernetes-V1-Released.html
Supports
- Timeline: Kubernetes 1.0 ships and Google donates it to a new foundation (2015 Jul 21)
- https://www.cncf.io/announcements/2016/03/10/cloud-native-computing-foundation-accepts-kubernetes-as-first-hosted-project-technical-oversight-committee-elected/
Supports
- Timeline: CNCF accepts Kubernetes as its first hosted project (2016 Mar 10)
- https://github.com/kubernetes/kubernetes/blob/v1.7.0/CHANGELOG.md
Supports
- Timeline: Kubernetes 1.7 adds CustomResourceDefinitions, the successor to ThirdPartyResource (2017 Jun 29)
- https://www.prnewswire.com/news-releases/docker-announces-enhancements-to-the-docker-platform-to-simplify-and-advance-the-management-of-kubernetes-for-enterprise-it-300537683.html
Supports
- Timeline: Docker adds native Kubernetes orchestration alongside Swarm (2017 Oct 17)
- https://aws.amazon.com/blogs/aws/amazon-elastic-container-service-for-kubernetes/
Supports
- Timeline: AWS previews Amazon EKS at re:Invent (2017 Nov 29)
- https://www.cncf.io/announcements/2018/03/06/cloud-native-computing-foundation-announces-kubernetes-first-graduated-project/
Supports
- Timeline: Kubernetes becomes CNCF's first graduated project (2018 Mar 6)
- https://aws.amazon.com/blogs/aws/amazon-eks-now-generally-available
Supports
- Timeline: Amazon EKS reaches general availability (2018 Jun 5)
- https://kubernetes.io/blog/2018/12/03/kubernetes-1-13-release-announcement/
Supports
- Timeline: kubeadm reaches general availability (2018 Dec 3)
- https://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/
Supports
- Timeline: Kubernetes 1.20 deprecates dockershim (2020 Dec 8)
- https://kubernetes.io/blog/2022/05/03/kubernetes-1-24-release-announcement/
Supports
- Timeline: Dockershim is removed from the kubelet (2022 May 3)
