<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Kubernetes Fail</title><link>https://kubernetes.fail/</link><description>Recent content in Home on Kubernetes Fail</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 26 May 2026 18:00:00 +0200</lastBuildDate><atom:link href="https://kubernetes.fail/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://kubernetes.fail/about/</link><pubDate>Tue, 26 May 2026 18:00:00 +0200</pubDate><guid>https://kubernetes.fail/about/</guid><description>&lt;h1 id="about-kubernetes-fail"&gt;About Kubernetes Fail&lt;/h1&gt;&#10;&lt;h2 id="our-mission"&gt;Our Mission&lt;/h2&gt;&#10;&lt;p&gt;To create the most comprehensive collection of Kubernetes failure stories, helping operators learn from others&amp;rsquo; mistakes and improve cluster reliability.&lt;/p&gt;&#10;&lt;h2 id="who-we-are"&gt;Who We Are&lt;/h2&gt;&#10;&lt;p&gt;We&amp;rsquo;re a team of Kubernetes operators, SREs, and developers who have collectively managed thousands of nodes across multiple clusters. We&amp;rsquo;ve made (and learned from) every mistake in the book.&lt;/p&gt;&#10;&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;/h2&gt;&#10;&lt;p&gt;Kubernetes is complex. Failures will happen. What matters is:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Learning&lt;/strong&gt; from each incident&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Sharing&lt;/strong&gt; knowledge with the community&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Improving&lt;/strong&gt; our systems and processes&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="get-involved"&gt;Get Involved&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Submit your stories&lt;/strong&gt;: Share your Kubernetes failure experiences&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Suggest improvements&lt;/strong&gt;: Help us make this resource better&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Spread the word&lt;/strong&gt;: Tell others about this resource&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="contact"&gt;Contact&lt;/h2&gt;&#10;&lt;p&gt;Email: &lt;a href="mailto:admin@kubernetes.fail"&gt;admin@kubernetes.fail&lt;/a&gt;&#10;GitHub: github.com/kubernetes-fail&lt;/p&gt;</description></item><item><title>Cheatsheet</title><link>https://kubernetes.fail/cheatsheet/</link><pubDate>Tue, 26 May 2026 18:00:00 +0200</pubDate><guid>https://kubernetes.fail/cheatsheet/</guid><description>&lt;h1 id="kubernetes-cheatsheet"&gt;Kubernetes Cheatsheet&lt;/h1&gt;&#10;&lt;h2 id="common-commands"&gt;Common Commands&lt;/h2&gt;&#10;&lt;h3 id="cluster-management"&gt;Cluster Management&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl get nodes&lt;/code&gt; - List all nodes&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl get pods -A&lt;/code&gt; - List all pods in all namespaces&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl get events -A&lt;/code&gt; - View cluster events&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="debugging"&gt;Debugging&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl describe pod &amp;lt;pod-name&amp;gt;&lt;/code&gt; - Get detailed pod information&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl logs &amp;lt;pod-name&amp;gt;&lt;/code&gt; - View pod logs&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl exec -it &amp;lt;pod-name&amp;gt; -- /bin/bash&lt;/code&gt; - Execute command in pod&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="resource-management"&gt;Resource Management&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl top nodes&lt;/code&gt; - View node resource usage&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl top pods&lt;/code&gt; - View pod resource usage&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;kubectl get pvc&lt;/code&gt; - List persistent volume claims&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="troubleshooting-tips"&gt;Troubleshooting Tips&lt;/h2&gt;&#10;&lt;h3 id="node-issues"&gt;Node Issues&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Check kubelet status: &lt;code&gt;systemctl status kubelet&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Check disk space: &lt;code&gt;df -h&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Check memory usage: &lt;code&gt;free -h&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="pod-issues"&gt;Pod Issues&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Check pod events: &lt;code&gt;kubectl describe pod &amp;lt;pod-name&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Check pod logs: &lt;code&gt;kubectl logs &amp;lt;pod-name&amp;gt; --previous&lt;/code&gt; (for previous instance)&lt;/li&gt;&#10;&lt;li&gt;Check resource limits: &lt;code&gt;kubectl describe pod &amp;lt;pod-name&amp;gt; | grep -i limit&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="network-issues"&gt;Network Issues&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Test connectivity: &lt;code&gt;kubectl exec &amp;lt;pod-name&amp;gt; -- ping &amp;lt;target&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Check DNS resolution: &lt;code&gt;kubectl exec &amp;lt;pod-name&amp;gt; -- nslookup &amp;lt;service&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Check service endpoints: &lt;code&gt;kubectl get endpoints &amp;lt;service-name&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="commands"&gt;Commands&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Get resources&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl api-resources --api-group &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME SHORTNAMES APIVERSION NAMESPACED KIND&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bindings v1 true Binding&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;componentstatuses cs v1 false ComponentStatus&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;configmaps cm v1 true ConfigMap&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;endpoints ep v1 true Endpoints&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;events ev v1 true Event&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;limitranges limits v1 true LimitRange&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;namespaces ns v1 false Namespace&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nodes no v1 false Node&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;persistentvolumeclaims pvc v1 true PersistentVolumeClaim&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;persistentvolumes pv v1 false PersistentVolume&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pods po v1 true Pod&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podtemplates v1 true PodTemplate&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;replicationcontrollers rc v1 true ReplicationController&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;resourcequotas quota v1 true ResourceQuota&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;secrets v1 true Secret&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;serviceaccounts sa v1 true ServiceAccount&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;services svc v1 true Service&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="namespaces"&gt;Namespaces&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Namespaces are a way to divide cluster resources between multiple users.&lt;/p&gt;</description></item><item><title>Stories</title><link>https://kubernetes.fail/stories/</link><pubDate>Tue, 26 May 2026 18:00:00 +0200</pubDate><guid>https://kubernetes.fail/stories/</guid><description>&lt;h1 id="kubernetes-failure-stories"&gt;Kubernetes Failure Stories&lt;/h1&gt;&#10;&lt;p&gt;Welcome to our collection of real-world Kubernetes failure stories. These are actual incidents that have occurred in production environments, shared to help others learn and avoid similar issues.&lt;/p&gt;&#10;&lt;h2 id="featured-stories"&gt;Featured Stories&lt;/h2&gt;&#10;&lt;h3 id="the-great-disk-space-crisis"&gt;The Great Disk Space Crisis&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt;: March 15, 2023&#10;&lt;strong&gt;Environment&lt;/strong&gt;: Production cluster with 50 worker nodes&#10;&lt;strong&gt;Impact&lt;/strong&gt;: 4 hours of complete outage&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;What Happened:&lt;/strong&gt;&#10;One of our earliest major incidents occurred when a logging sidecar container was misconfigured and began writing unbounded log files to an emptyDir volume. The application team had set the log level to DEBUG during troubleshooting but forgot to revert it. Within 6 hours, all worker nodes ran out of disk space, causing a cascade of failures.&lt;/p&gt;</description></item><item><title>Whoami</title><link>https://kubernetes.fail/whoami/</link><pubDate>Tue, 26 May 2026 18:00:00 +0200</pubDate><guid>https://kubernetes.fail/whoami/</guid><description>&lt;h1 id="about-the-team"&gt;About the Team&lt;/h1&gt;&#10;&lt;h2 id="our-background"&gt;Our Background&lt;/h2&gt;&#10;&lt;p&gt;We are a group of Kubernetes operators, Site Reliability Engineers, and DevOps professionals who have collectively managed thousands of nodes across multiple Kubernetes clusters in production environments.&lt;/p&gt;&#10;&lt;h2 id="our-mission"&gt;Our Mission&lt;/h2&gt;&#10;&lt;p&gt;Our mission is to create the most comprehensive collection of Kubernetes failure stories and lessons learned. We believe that sharing our experiences (and mistakes) helps the entire community improve cluster reliability and operational excellence.&lt;/p&gt;&#10;&lt;h2 id="team-members"&gt;Team Members&lt;/h2&gt;&#10;&lt;h3 id="adam---founder--lead-operator"&gt;Adam - Founder &amp;amp; Lead Operator&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;8+ years of Kubernetes experience&lt;/li&gt;&#10;&lt;li&gt;Managed clusters from 10 to 1000+ nodes&lt;/li&gt;&#10;&lt;li&gt;Specializes in networking and security&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="sarah---sre--reliability-expert"&gt;Sarah - SRE &amp;amp; Reliability Expert&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;5+ years of site reliability engineering&lt;/li&gt;&#10;&lt;li&gt;Expert in monitoring and alerting systems&lt;/li&gt;&#10;&lt;li&gt;Focuses on incident response and post-mortem analysis&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="michael---devops-engineer"&gt;Michael - DevOps Engineer&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;6+ years of infrastructure automation&lt;/li&gt;&#10;&lt;li&gt;CI/CD pipeline specialist&lt;/li&gt;&#10;&lt;li&gt;Focuses on GitOps and infrastructure as code&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="our-philosophy"&gt;Our Philosophy&lt;/h2&gt;&#10;&lt;p&gt;We believe in:&lt;/p&gt;</description></item><item><title>RBAC Misconfiguration Leads to Security Breach</title><link>https://kubernetes.fail/posts/rbac-misconfiguration/</link><pubDate>Mon, 15 Apr 2024 09:15:00 +0200</pubDate><guid>https://kubernetes.fail/posts/rbac-misconfiguration/</guid><description>&lt;h2 id="security-incident"&gt;Security Incident&lt;/h2&gt;&#10;&lt;p&gt;An overly permissive RBAC configuration allowed an attacker to:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Gain access through a compromised developer account&lt;/li&gt;&#10;&lt;li&gt;Escalate privileges using cluster-admin binding&lt;/li&gt;&#10;&lt;li&gt;Deploy cryptocurrency mining containers&lt;/li&gt;&#10;&lt;li&gt;Access sensitive data from other namespaces&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="how-it-happened"&gt;How It Happened&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Default namespace had cluster-admin role binding&lt;/li&gt;&#10;&lt;li&gt;No network policies between namespaces&lt;/li&gt;&#10;&lt;li&gt;No pod security policies enforced&lt;/li&gt;&#10;&lt;li&gt;Developer accounts had excessive permissions&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="immediate-actions"&gt;Immediate Actions&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Revoked all compromised credentials&lt;/li&gt;&#10;&lt;li&gt;Deleted malicious pods&lt;/li&gt;&#10;&lt;li&gt;Isolated affected nodes&lt;/li&gt;&#10;&lt;li&gt;Rotated all cluster certificates&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="long-term-fixes"&gt;Long-term Fixes&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Implemented principle of least privilege&lt;/li&gt;&#10;&lt;li&gt;Enabled network policies&lt;/li&gt;&#10;&lt;li&gt;Deployed pod security admission&lt;/li&gt;&#10;&lt;li&gt;Regular RBAC audits&lt;/li&gt;&#10;&lt;li&gt;Developer security training&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Network Partition Causes Split-Brain</title><link>https://kubernetes.fail/posts/network-outage/</link><pubDate>Sun, 14 Apr 2024 14:30:00 +0200</pubDate><guid>https://kubernetes.fail/posts/network-outage/</guid><description>&lt;h2 id="the-incident"&gt;The Incident&lt;/h2&gt;&#10;&lt;p&gt;A network partition between availability zones caused our etcd cluster to split into two separate quorums, resulting in:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Inconsistent cluster state&lt;/li&gt;&#10;&lt;li&gt;Scheduling conflicts&lt;/li&gt;&#10;&lt;li&gt;Data corruption in stateful applications&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="root-cause"&gt;Root Cause&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Network provider had a routing issue between zones&lt;/li&gt;&#10;&lt;li&gt;Our etcd cluster was spread across 3 zones but had no zone-aware configuration&lt;/li&gt;&#10;&lt;li&gt;No network partition detection or automatic fencing&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="resolution"&gt;Resolution&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Manually identified the healthy partition&lt;/li&gt;&#10;&lt;li&gt;Forced etcd to use only the healthy members&lt;/li&gt;&#10;&lt;li&gt;Rebuilt the unhealthy nodes from backups&lt;/li&gt;&#10;&lt;li&gt;Implemented zone-aware etcd configuration&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="prevention"&gt;Prevention&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Configure etcd with strict zone awareness&lt;/li&gt;&#10;&lt;li&gt;Implement network health checks&lt;/li&gt;&#10;&lt;li&gt;Regular disaster recovery drills&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>First Kubernetes Failure: Node Out of Disk</title><link>https://kubernetes.fail/posts/first-post/</link><pubDate>Sat, 13 Apr 2024 10:00:00 +0200</pubDate><guid>https://kubernetes.fail/posts/first-post/</guid><description>&lt;h2 id="what-happened"&gt;What Happened&lt;/h2&gt;&#10;&lt;p&gt;Our production Kubernetes cluster experienced a complete outage when all worker nodes ran out of disk space simultaneously. This was caused by:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Unbounded log growth from a misconfigured application&lt;/li&gt;&#10;&lt;li&gt;No disk space monitoring alerts&lt;/li&gt;&#10;&lt;li&gt;Default emptyDir volumes filling up node storage&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="the-impact"&gt;The Impact&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;All pods became pending as nodes were marked unschedulable&lt;/li&gt;&#10;&lt;li&gt;4 hours of downtime during peak traffic&lt;/li&gt;&#10;&lt;li&gt;Data loss for applications using emptyDir storage&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="lessons-learned"&gt;Lessons Learned&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Monitor disk usage&lt;/strong&gt;: Set up alerts at 70%, 80%, and 90% capacity&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Log rotation&lt;/strong&gt;: Configure proper log rotation for all containers&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Resource limits&lt;/strong&gt;: Set storage limits on emptyDir volumes&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Multi-zone deployment&lt;/strong&gt;: Distribute workloads across availability zones&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="the-fix"&gt;The Fix&lt;/h2&gt;&#10;&lt;p&gt;We implemented:&lt;/p&gt;</description></item></channel></rss>