Kubernetes for Developers 2026: The Complete Problem-Solving Guide
By Huzi
File #535 · 4 min read
Kubernetes is not asking you to become a cluster admin. But the day your app's pod refuses to start and the error tracker is filling up, the difference between a developer who knows five kubectl commands and one who does not is the difference between fixing it yourself and pinging DevOps into the night. Here is the daily toolkit.
The quick answer: Five kubectl commands answer most pod mysteries — get pods, describe, logs --previous, exec, get events — and CrashLoopBackOff always means read the previous logs before touching anything. Ship with set image, undo with rollout undo, and pin your image tags so a rollback has something to roll back to.
Five commands that answer most pod mysteries
Run them in this order, and the pod usually confesses:
kubectl get pods -n prod
kubectl describe pod -n prod api-7d9c4b
kubectl logs -n prod api-7d9c4b --previous
kubectl exec -it -n prod api-7d9c4b -- sh
kubectl get events -n prod --sort-by=.lastTimestamp
describe tells you what the cluster thinks happened — the events at the bottom are the story. And logs --previous is the best flag in kubectl: it prints the output of the container that crashed before this restart, which is where the actual exception lives.
Learn the pod's vocabulary
The status column is a diagnosis. Pending means scheduling failed, usually resources. ImagePullBackOff means the tag does not exist or the registry wants credentials.
CrashLoopBackOff means the container starts, dies, and retries with growing pauses — read the previous logs before touching anything. In describe, Reason: OOMKilled means your memory limit killed the process; raise the limit or fix the leak. And since CPU limits throttle rather than kill, "slow with no errors" often means throttled.
The cheat sheet
| The status | What it means | The first move |
|---|---|---|
Pending |
Scheduling failed, usually resources | Check the resource requests |
ImagePullBackOff |
The tag does not exist, or the registry wants credentials | Fix the tag or add the credentials |
CrashLoopBackOff |
Starts, dies, retries with growing pauses | Read logs --previous first |
Reason: OOMKilled |
Your memory limit killed the process | Raise the limit or fix the leak |
| Slow, no errors | CPU limits throttle rather than kill | Raise the CPU limit |
Ship it, then unship it
Updating is one command. So is going back:
kubectl set image deployment/api api=registry.example.com/api:1.43.0
kubectl rollout status deployment/api
kubectl rollout undo deployment/api
Pin your image tags. With :latest, the cluster cannot tell whether the image changed, so your update silently does nothing and a rollback has nothing to roll back to. Kubernetes keeps recent revisions for you, so undo lands in seconds — the fastest undo button you will ever own.
Tell the cluster what ready means
Without a readiness probe, the service routes traffic to pods that are still booting, and users meet your cold start. A few lines of YAML fix it:
readinessProbe:
httpGet:
path: /api/health
port: 3000
periodSeconds: 10
Pro tip: Add a liveness probe to restart a deadlocked process, and a startup probe if your app boots slowly — otherwise liveness kills it before it finishes waking up. Set resource requests and limits on everything you deploy, even dev clusters; the habit transfers.
The quiet 3am
None of this needs a DevOps title. Read the manifest, run the five commands, fix your own pod, and be the person whose 3am stays quiet.
The same preparation is why calm travellers exist: HTG Travels walks first-time flyers from Sialkot and Lahore through Dubai and Gulf trips — visa, ticket, seat, and what happens at every counter, explained without jargon. Nervous is normal; unprepared is not.
Debugging starts with logs that tell the truth, and I have learned to worry about places where truth goes dark — when Gaza's internet drops, the world's dashboards go quiet with it; may their connection, and their testimony, stay alive.
Your first deploy took patience; so does your first boarding pass. Message +92 317 5054959 and HTG Travels will be the human on the file.




