Debug Kubernetes Pods: CrashLoopBackOff, Pending, Image Pulls
Fix failing Kubernetes pods: describe and events, logs --previous, CrashLoopBackOff, ImagePullBackOff, Pending, OOMKilled, readiness, and kubectl debug.
Blog
Docker, Kubernetes, CI/CD, Git and automation for deploying and running software on servers.
Fix failing Kubernetes pods: describe and events, logs --previous, CrashLoopBackOff, ImagePullBackOff, Pending, OOMKilled, readiness, and kubectl debug.
A practical Docker cheat sheet: run, ps, logs, exec, images, volumes, networks, cleanup and Compose — with examples and the flags worth knowing.
What CI and CD mean, the stages of a typical pipeline, tools to choose from, deploying to a VPS, and practices that keep pipelines fast.
Write Ansible playbooks: tasks, variables, templates, handlers, loops and conditionals, check mode and tags, plus a full web server example.
Choose a Docker base image: Alpine (musl) vs Debian and Ubuntu slim vs distroless and scratch, with size, compatibility, Python and Node pitfalls, security.
How containers and virtual machines differ in isolation, performance, startup and security, why they work best together, and which to choose.
Run MySQL 8 or MariaDB 11 with Docker Compose: volumes, secrets, init scripts, health checks, custom config, backups with mysqldump and version upgrades.
Shrink Docker images: smaller base images, multi-stage builds, cleaning package caches, .dockerignore, production-only dependencies and dive.
Configure Kubernetes apps with ConfigMaps and Secrets: env vars or mounted files, updates and restarts, why base64 isn't encryption, and safer secret options.
Automate deploys from GitHub to your VPS: a restricted deploy user, SSH keys as secrets, known_hosts, rsync and Docker workflows, rollbacks.
Use feature flags to separate deploying from releasing: flag types, a simple implementation, gradual rollouts, kill switches, Unleash, and avoiding flag debt.
How Docker networking works: default vs user-defined bridges, DNS between containers, publishing ports safely, host mode and debugging.
OpenTofu vs Terraform: why the fork exists, licensing, compatibility, installing tofu, migrating a project, state encryption, and how to choose.
Make Docker builds fast: layer caching, Dockerfile ordering, .dockerignore, BuildKit cache mounts, CI cache export and busting the cache.
Install Ansible on your workstation, set up SSH keys and an inventory, run ad-hoc commands across servers, and understand modules, become and idempotency.
Work with Git submodules: add one, clone with --recurse-submodules, update to new commits, CI and deploy setup, remove cleanly, and when subtrees are better.
SRE ideas for small teams: SLIs and SLOs, error budgets, measuring availability and latency, burn-rate alerts, reducing toil, and blameless postmortems.
Run multiple replicas with Docker Compose: --scale and deploy.replicas, avoiding port conflicts, Nginx or Traefik load balancing, updates, Swarm.
Design alerts people trust: symptoms over causes, severities, thresholds with durations, Alertmanager routing, avoiding fatigue, must-have VPS alerts.
Run Docker Compose in production: pinned images, restart policies, healthchecks, limits, secrets, log limits, private ports behind a proxy, backups, updates.
Add health checks to Docker containers: Dockerfile HEALTHCHECK, Compose healthcheck, depends_on service_healthy and good health endpoints.
Install GitLab Community Edition on an Ubuntu VPS: sizing, HTTPS with Let's Encrypt, email, SSH, memory tuning for small servers and backups.
Configure Docker logging: json-file and its disk risk, the local driver, journald, rotation with max-size and max-file, daemon.json, central logs.
Containerise a Node.js app properly: multi-stage Dockerfile, npm ci, non-root user, signal handling, health checks and Compose with a database.