Kubernetes Deployments
Reference articles for the deployment patterns and failures I see most often: rollouts that stall because of misconfigured readiness probes, Helm releases that drift from what is in Git, resource requests that starve the scheduler, and scaling decisions that look right on paper but break under real traffic.
Each article covers one operational concern at a time: what the correct configuration looks like, what goes wrong when it is off, and how to verify that the deployment is healthy after you change it.
Articles
-
Kubernetes resource requests and limits1886 words
Requests tell the scheduler how much CPU and memory a pod needs to land on a node. Limits tell the kernel when to throttle or kill. Mixing them up leads to pods stuck in Pending, surprise OOMKills, or throttled latency on nodes with idle capacity. This article explains the mechanics behind both, how Kubernetes assigns QoS classes from them, and how to pick initial values that match your workload.
-
Helm chart best practices: writing maintainable Kubernetes packages2209 words
A well-structured Helm chart saves hours during every upgrade, review, and incident. A poorly structured one creates silent failures that only surface in production. This guide walks through the conventions that make charts portable, testable, and safe to hand to a colleague or a CI pipeline without a README longer than the chart itself.
-
Migrating from Docker Compose to Kubernetes: a step-by-step tutorial2268 words
Kompose converts your Docker Compose file to Kubernetes manifests in one command. The output looks complete, but it is missing resource limits, health probes, and proper secrets handling. This tutorial walks through the full migration path: converting with Kompose, then hardening every manifest until it is production-ready.
-
Kubernetes rolling updates and zero-downtime deployments1823 words
A rolling update replaces pods one at a time, but the defaults do not prevent dropped connections. Without the right readiness probe, preStop hook, and terminationGracePeriodSeconds, users see 502s every time you deploy. This guide walks through each setting that matters and ends with a complete, production-ready Deployment manifest.
-
Kubernetes Horizontal Pod Autoscaler (HPA): scaling pods by metrics1936 words
The Horizontal Pod Autoscaler adds or removes pod replicas based on metrics you choose: CPU utilization, memory pressure, request rates from Prometheus, or external signals like queue depth. This guide walks through configuring HPA v2 for each of those scenarios, tuning the stabilization window so scaling is fast up and cautious down, and avoiding the conflict that arises when HPA and VPA target the same resource.
-
KEDA: event-driven autoscaling for Kubernetes1980 words
KEDA (Kubernetes Event-Driven Autoscaling) extends the standard HPA with 70+ built-in scalers and scale-to-zero support. Instead of scaling only on CPU and memory, you can scale pods based on Kafka consumer lag, RabbitMQ queue depth, Prometheus query results, or a cron schedule. This tutorial walks through installing KEDA, creating your first ScaledObject, configuring common scalers, and understanding the two-phase scaling model that makes zero-to-many possible.
-
Kustomize overlays: managing Kubernetes configurations without Helm1716 words
Kustomize lets you maintain environment-specific Kubernetes manifests (dev, staging, production) by patching a shared base rather than templating it. The base files stay as valid, deployable YAML. This guide walks through the directory layout, patching strategies, generators, components, and integration with ArgoCD and Flux.
-
GitOps with Argo CD: declarative Kubernetes deployments2143 words
Argo CD turns a Git repository into the single source of truth for your cluster state. You commit manifests, Argo CD reconciles them. This tutorial walks through a full GitOps setup: installing Argo CD with Helm, deploying an application via the Application CRD, configuring sync policies, ordering resources with sync waves, bootstrapping a cluster with the app-of-apps pattern, handling secrets safely, and managing multiple clusters from one control plane.
-
Kubernetes Jobs and CronJobs: running batch workloads1815 words
A Kubernetes Job runs one or more pods to completion and then stops. A CronJob does the same thing on a cron schedule. Together they cover database migrations, nightly backups, report generation, and any other task that should run once or on a timer rather than continuously. This guide walks through both resources from a minimal Job through parallelism, failure handling, timezone-aware CronJobs, concurrency control, and cleanup.
-
Kubernetes init containers: running setup tasks before your app starts1778 words
Init containers run sequentially to completion before your application container starts. They are Kubernetes's built-in mechanism for dependency checks, database migrations, config fetching, and filesystem preparation. This guide walks through each use case with production-ready manifests, covers failure handling and debugging, and explains when the newer sidecar container pattern is a better fit.
-
Kubernetes PodDisruptionBudgets: protecting availability during maintenance1619 words
A PodDisruptionBudget tells Kubernetes how many pods of your application can be offline simultaneously during voluntary maintenance. Without one, a single kubectl drain can evict every replica at once. This guide covers choosing between minAvailable and maxUnavailable, handling unhealthy pods, and avoiding the misconfigurations that block cluster upgrades.
Recurring server or deployment issues?
I help teams make production reliable with CI/CD, Kubernetes, and cloud—so fixes stick and deploys stop being stressful.
