Practical engineering knowledge for DevOps, SRE, Platform Engineering, Infrastructure, Cloud and modern production systems.
21 issues published so far. Every figure here is counted from the same file the site is generated from, so it cannot disagree with what is actually published — browse the categories.
13 pillars, sized by how much each one holds. Follow one into its categories.
SERVICE MESH OPERATIONS
Read issue #067Eleven stages between an edit and a user. Select any one of them.
The change starts as an edit on somebody's machine, next to a test that fails until it doesn't.
Version control, branching, history and recovery — the record of what changed, and why.
Resolve dependencies and produce an artefact that comes out the same every time it is built.
Prove it behaves before anything downstream is allowed to depend on it.
Package the application with the runtime it expects, so the target machine stops mattering.
Store the image, sign it, and be able to say what is inside before it ever runs.
Schedule the workload, keep it running, and reconcile it back whenever reality drifts from the spec.
Give it a stable address, and route traffic only to the instances that are actually healthy.
Metrics, logs and traces — what the system says about itself while nobody is watching.
Error budgets, on-call and incident response: the practice of running the thing once it is running.
Real users, real traffic, real consequences — and the feedback that starts the next change.
Choose the knowledge map or the published archive.
One deep-dive every month. No fluff, no spam — just battle-tested knowledge from the Platform Engineering trenches.
One request, from the person who made it down to the engineer who gets paged when it fails. Take any layer — by pointer or by tab — and the panel beside it says what that layer is for.
Five symptoms, and the order to look in. Open one.
The scheduler has looked at every node and refused to place it. The pod is fine; the cluster has no seat for it.
The container starts, exits, and Kubernetes backs off before trying again. The loop is the symptom; the first exit is the cause.
--previous you are reading the instance that has not failed yet. The one that died holds the answer.1 the application decided to stop. 137 it was killed — usually OOM. 143 it was asked to stop and did.startupProbe is for; raising initialDelaySeconds hides it.The kubelet has stopped saying it is healthy. Everything on that node is already being evicted.
journalctl -u kubelet -n 200. The kubelet says why it is unhappy in plain text./var/lib/kubelet or the image store is full. Image garbage collection has thresholds; a large pulled image can cross them.crictl info and crictl ps. A kubelet cannot be ready if the runtime under it is not.Usage is climbing. Whether that is a leak, a cache, or a limit set too low is the whole question.
The request goes out and nothing comes back. A timeout is the one failure that looks identical at every layer.
nslookup <svc> in the calling pod. Name resolution failing looks exactly like the far end being down.Ten jobs that share most of this material and need different parts of it. The number is how many pages are live in that area today.
Or one route through all of it, in the order each layer starts to make sense.