[{"data":1,"prerenderedAt":99},["ShallowReactive",2],{"blog-article-en-kubernetes-production-lessons":3},{"id":4,"title":5,"body":6,"date":83,"description":84,"extension":85,"meta":86,"navigation":87,"path":88,"seo":89,"stem":90,"tags":91,"translationKey":92,"__hash__":95,"alternates":96},"blog_en\u002Fnews\u002Fblog\u002Fkubernetes-production-lessons.md","Kubernetes in Production: Lessons from Real-World Deployments",{"type":7,"value":8,"toc":74},"minimark",[9,13,17,22,25,28,32,35,38,42,50,53,57,64,67,71],[10,11,5],"h1",{"id":12},"kubernetes-in-production-lessons-from-real-world-deployments",[14,15,16],"p",{},"Kubernetes has become the de facto standard for container orchestration. But running it in production is very different from following a tutorial. Here are the pitfalls that surface once a cluster carries real traffic.",[18,19,21],"h2",{"id":20},"resource-requests-and-limits-are-not-optional","Resource Requests and Limits Are Not Optional",[14,23,24],{},"The most common issue in new clusters: pods without resource requests. Without them, the scheduler can't make informed placement decisions. Nodes get overcommitted, and everything slows down — or crashes — under load.",[14,26,27],{},"Set requests based on observed usage, not guesswork. Use tools like the Vertical Pod Autoscaler in recommendation mode to gather data before committing to values.",[18,29,31],{"id":30},"observability-before-scaling","Observability Before Scaling",[14,33,34],{},"Teams often reach for horizontal autoscaling before they can answer basic questions: What's our P99 latency? Where are the bottlenecks? How much memory does this service actually need?",[14,36,37],{},"Invest in observability first. Prometheus and Grafana are the standard stack, but what matters is having dashboards your team actually reads. Alerts should be actionable, not noisy.",[18,39,41],{"id":40},"namespaces-and-rbac-from-day-one","Namespaces and RBAC From Day One",[14,43,44,45,49],{},"It's tempting to run everything in the ",[46,47,48],"code",{},"default"," namespace during early development. But retrofitting namespace isolation and RBAC policies into a running cluster is painful.",[14,51,52],{},"Start with separate namespaces for each environment and service boundary. Define RBAC roles early, even if they feel permissive at first. Tightening permissions is easier than creating them from scratch.",[18,54,56],{"id":55},"gitops-makes-everything-reproducible","GitOps Makes Everything Reproducible",[14,58,59,60,63],{},"Manual ",[46,61,62],{},"kubectl apply"," commands don't scale. We use ArgoCD or Flux to sync cluster state from Git repositories. Every change is auditable, reversible, and reviewable through pull requests.",[14,65,66],{},"A bad configuration then rolls back the way any other change does: revert the commit and let the controller reconcile the cluster back to it.",[18,68,70],{"id":69},"the-honest-truth","The Honest Truth",[14,72,73],{},"Kubernetes is powerful, but it's not free. It demands operational expertise, and the learning curve is real. For small teams running a handful of services, simpler alternatives might be a better fit. But when you need multi-service orchestration, rolling deployments, and infrastructure-as-code — Kubernetes delivers.",{"title":75,"searchDepth":76,"depth":76,"links":77},"",2,[78,79,80,81,82],{"id":20,"depth":76,"text":21},{"id":30,"depth":76,"text":31},{"id":40,"depth":76,"text":41},{"id":55,"depth":76,"text":56},{"id":69,"depth":76,"text":70},"2026-02-03","The pitfalls and practical patterns that separate a Kubernetes tutorial from a cluster you have to keep running.","md",{},true,"\u002Fnews\u002Fblog\u002Fkubernetes-production-lessons",{"title":5,"description":84},"news\u002Fblog\u002Fkubernetes-production-lessons",[92,93,94],"kubernetes","devops","infrastructure","rnQ6QVMyR7fpU4kVWcu_xEBbezmWaG6TXuMrjKEHwGM",{"en":97,"fr":98},"kubernetes-production-lessons","kubernetes-en-production",1789160131100]