☸️ Kubernetes for Data Workloads
The subset a data person actually meets — Jobs and CronJobs rather than Deployments and Ingress, why the pod was OOMKilled with nothing in the logs, where a batch is supposed to write, the Spark and Postgres operators, and an honest episode on when cron on one box wins.
No lessons published yet — this is the roadmap, so you can see exactly what the course will cover before it lands.
Before you start: Data Ops — Series 1, and Series 1 · 37 in particular. Everything here runs a container, and this course does not teach one. You need images, volumes, environment variables and logs to already mean something, and Data Ops Series 1 · 37 is where that happens.
Short on time? The 29 episodes marked core are the shortest path to being productive at work. Start there and pick up the rest whenever a job asks for them.
Series 1 · The Objects You Will Actually Touch
pods, jobs, and why the container died
- 01
Pods, Nodes and the Control Loop — Declaring What You Want, Not What to Do
coreintermediatecoming soon - 02
kubectl — describe, logs, exec, and Reading What the Cluster Tells You
coreintermediatecoming soon - 03
Job and CronJob — Your Nightly Load as a Kubernetes Object
coreintermediatecoming soon - 04
Deployments and Services — The Long-Running Half You Have to Read
intermediatecoming soon - 05
Requests, Limits and OOMKilled — Why the Pod Died and the Log Said Nothing
coreintermediatecoming soon - 06
ConfigMaps and Secrets — Where the Connection String Comes From, and Why base64 Is Not Encryption
coreintermediatecoming soon - 07
Project — Run a Nightly Load as a CronJob and Prove It Recovers
coreintermediate#projectcoming soon
Series 2 · Data Has State, Kubernetes Assumes It Does Not
where the output goes, and why it vanished
- 01
Ephemeral by Default — Why the Job Succeeded and the Output Is Gone
coreadvancedcoming soon - 02
PersistentVolumeClaims and StorageClasses — Asking the Cluster for Somewhere to Write
coreadvancedcoming soon - 03
StatefulSets — and the Honest Argument About Databases in Kubernetes
advancedcoming soon - 04
Object Storage Instead of a Volume — the Pattern That Usually Wins
coreadvancedcoming soon - 05
Project — Give a Job Somewhere to Write, Twice, and Compare
coreadvanced#projectcoming soon
Series 3 · Running Data Workloads Well
scheduling, operators, and reading a failure
- 01
Scheduling, Taints and Tolerations — Getting the Big Job onto the Big Machine
advancedcoming soon - 02
The Autoscalers — Why HPA Does Nothing for a Batch Job
advancedcoming soon - 03
Operators and CRDs — Spark, Flink and Postgres as Objects the Cluster Understands
advancedcoming soon - 04
Helm — Installing Something You Did Not Write, and Reading values.yaml First
advancedcoming soon - 05
Pending, CrashLoopBackOff, Evicted — Reading a Failure Without Guessing
coreadvancedcoming soon - 06
When Not to Use Kubernetes — and Why cron on One Box Often Wins
coreadvancedcoming soon - 07
Project — Diagnose Three Broken Workloads From Their Events Alone
coreadvanced#projectcoming soon
Series 4 · Longhorn — Replicated Block, the Simple Way
volumes made of files on your nodes, and the node drain that eats one
- 01
Replicas Are Files on Your Nodes — Why You Can Debug This One
coreadvancedcoming soon - 02
Installing It — open-iscsi on Every Node, and the Check That Saves an Afternoon
coreadvancedcoming soon - 03
Replicas, Data Locality and Expansion — Where the Copies Actually Land
coreadvancedcoming soon - 04
Snapshots and Backups — the Only Copy That Leaves the Cluster
coreadvancedcoming soon - 05
Draining a Node — the Rebuild a Routine kubectl Command Starts
coreadvancedcoming soon - 06
Project — Run a Database on Longhorn, Kill a Node, and Keep the Data
coreadvanced#projectcoming soon
Series 5 · OpenEBS — Local Volumes, and Not Replicating Twice
fast local disks with a lifecycle, and the argument for using them
- 01
Local PV Against Replicated — Two Products Under One Name
coreadvancedcoming soon - 02
Local PV on LVM or ZFS — a Real Lifecycle on One Node's Disk
coreadvancedcoming soon - 03
Double Replication — If the Database Already Does It, the Storage Should Not
coreadvancedcoming soon - 04
Mayastor — Replicated PV When You Genuinely Need It, and Its Prerequisites
advancedcoming soon - 05
Project — Put a Self-Replicating Database on Local PV and Prove the Failure Path
coreadvanced#projectcoming soon
Series 6 · Rook, and Choosing Between the Three
Ceph operated by Kubernetes, and the minimum that gets you what you need
- 01
Rook Is an Operator, Not a Storage System — the Storage Is Ceph
coreadvancedcoming soon - 02
The CephCluster Resource — Declaring a Cluster, and Why It Found No Disks
coreadvancedcoming soon - 03
CephBlockPool, CephFilesystem and CephObjectStore — Storage as Manifests
coreadvancedcoming soon - 04
Operating Rook — Two Sets of Logs, and Two Version Ladders
coreadvancedcoming soon - 05
Longhorn, OpenEBS or Rook — and the Case for None of Them
coreadvancedcoming soon - 06
Project — Choose a Storage Backend for Three Workloads and Defend Each
coreadvanced#projectcoming soon
Not here, on purpose
- Building the container image — covered in Data Ops, Series 1 · 37, which is Docker itself. Here the image already exists and gets scheduled
- Provisioning the cluster — nodes, networking, ingress, service mesh, RBAC administration, upgrades — not covered; this is platform engineering and a different job. Terraform & Pulumi owns describing infrastructure as code, and even that course stops at the cluster's edge rather than operating one
- Expressing dependencies between pipeline steps — covered in ETL & Data Pipelines, Series 2 · 45 as a concept and in Apache Airflow as a tool. A CronJob runs one thing on a clock; it has no idea what ran before it
- Whether to use an orchestrator at all, and which one — covered in Data Ops, Series 3 · 00. This course assumes the cluster is already the answer somebody gave
- Ceph itself, ZFS, erasure coding and the S3 protocol — covered in Storage for Data, which is the physical layer. In this course, Series 6 is Rook — the OPERATOR that runs Ceph inside Kubernetes — and it assumes that course rather than re-teaching CRUSH
- Continuous delivery of the manifests — covered in Continuous Delivery, which owns the deployment pipeline as a subject. In this course, Series 3 · 15 names the GitOps tools and does not teach them