Running Kubernetes in production is a different game than getting a cluster up for the first time. Over the years, a handful of practices have consistently paid off.
Set resource requests and limits everywhere
Every container should declare CPU and memory requests/limits. Without them, the scheduler can't make good placement decisions, and a single noisy pod can starve its neighbors.
Namespace per environment and team
Use namespaces to separate environments (dev, staging, prod) and teams. Combine this with ResourceQuotas and NetworkPolicies so teams can move fast without stepping on each other.
Treat observability as a first-class citizen
Ship metrics (Prometheus), logs (ELK/Loki), and traces (Jaeger) from day one. When something breaks at 2am, the difference between a 10-minute fix and a 2-hour outage is almost always observability.
Automate everything with GitOps
Tools like ArgoCD or Flux turn your cluster state into a reviewable, auditable, git-versioned artifact. Rollbacks become git revert instead of a frantic kubectl session.
This is a placeholder post - replace it with your own write-up, or add new .md files to content/blog/.