<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az" -->

---
title: The Kubernetes Upgrade That Took Down Your Service (And...
description: PodDisruptionBudgets (PDBs) are Kubernetes objects that limit how many Pods can be voluntarily evicted during planned maintenance like node drains and cluster...
canonical: https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The Kubernetes Upgrade That Took Down Your Service (And How PodDisruptionBudgets Prevent It) | daily.dev
og:description: PodDisruptionBudgets (PDBs) are Kubernetes objects that limit how many Pods can be voluntarily evicted during planned maintenance like node drains and cluster...
og:url: https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az
og:image: https://api.daily.dev/og/posts/GWkco93az.png
og:image:alt: The Kubernetes Upgrade That Took Down Your Service (And How PodDisruptionBudgets Prevent It)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The Kubernetes Upgrade That Took Down Your Service (And How PodDisruptionBudgets Prevent It)

**[Medium](https://daily.dev/sources/medium_js)** · 14 min read · 0 upvotes · 0 comments

## Summary

PodDisruptionBudgets (PDBs) are Kubernetes objects that limit how many Pods can be voluntarily evicted during planned maintenance like node drains and cluster upgrades. Without them, all replicas of an app can be evicted simultaneously, causing downtime. PDBs work by checking the Eviction API before removing a Pod, blocking eviction if it would violate the defined availability rule (minAvailable or maxUnavailable). They only protect against voluntary disruptions — not hardware failures, node crashes, or resource-pressure evictions. The post covers the distinction between voluntary and involuntary disruptions, how kubectl drain interacts with PDBs, common configuration mistakes (single-replica apps, selector mismatches, overly strict budgets), troubleshooting stuck drains, and production best practices including readiness probes, monitoring ALLOWED DISRUPTIONS, and combining PDBs with topology spread constraints.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@shubham.patel191295/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it-e5a89338b6be>

## Questions this post answers

### What is the difference between minAvailable and maxUnavailable in a Kubernetes PodDisruptionBudget?

minAvailable specifies the minimum number of pods that must remain available during voluntary disruptions, while maxUnavailable specifies the maximum number that can be unavailable; only one should be set. minAvailable suits stateful or quorum-based systems, such as setting minAvailable:3 for a 5-member etcd cluster, while maxUnavailable is simpler for stateless services with frequently changing replica counts.

_Weighing minAvailable versus maxUnavailable for your workloads is exactly the kind of decision developers refine on daily.dev._

### Why does kubectl drain get stuck with the error 'Cannot evict pod as it would violate the pod's disruption budget'?

This happens when a PodDisruptionBudget's minAvailable or maxUnavailable setting would be violated by evicting the pod, so Kubernetes blocks the eviction rather than proceeding. Common causes include a single-replica app with minAvailable:1, minAvailable equal to the replica count, unhealthy or not-ready pods, or insufficient cluster capacity for replacement pods to schedule. Fix by scaling up replicas, fixing readiness probes, or adjusting the budget.

_Debugging stuck drains like this is easier when engineers track Kubernetes operational gotchas on daily.dev._

### Does a Kubernetes PodDisruptionBudget protect against node hardware failure or crashes?

No, a PodDisruptionBudget only protects against voluntary disruptions initiated through the Eviction API, such as node drains, deployment updates, or manual pod deletion via that API. It does not guard against involuntary disruptions like hardware failure, kernel panics, network partitions, or resource-pressure evictions from memory or disk pressure, which Kubernetes classifies separately and requires replicas, topology spread, and monitoring to mitigate.

_Understanding these availability boundaries helps teams design resilient systems, a topic daily.dev readers follow closely._

## Similar posts on daily.dev

- [Pod Disruption Budgets: A Field Guide to What Actually Works](https://daily.dev/posts/pod-disruption-budgets-a-field-guide-to-what-actually-works-biqblhij5) · Cloud Native Now · 0 upvotes · 0 comments
- [AKS Looks to Make Node Disruption More Predictable with New NAP Guidance](https://daily.dev/posts/aks-looks-to-make-node-disruption-more-predictable-with-new-nap-guidance-gsthdtuzv) · InfoQ · 1 upvotes · 0 comments
- [Karpenter Disruption and Drift: How to Consolidate Nodes Safely](https://daily.dev/posts/karpenter-disruption-and-drift-how-to-consolidate-nodes-safely-7vmi92mf1) · Cast AI · 0 upvotes · 0 comments
- [Your Pod Died of “Out of Ephemeral Storage” but the Disk Is Half Empty\!\!](https://daily.dev/posts/your-pod-died-of-out-of-ephemeral-storage-but-the-disk-is-half-empty--jvrjsmjmg) · ITNEXT · 9 upvotes · 1 comments
- [Kubernetes Rolling Updates for Reliable Deployments](https://daily.dev/posts/kubernetes-rolling-updates-for-reliable-deployments-oiniknzlc) · Spacelift · 3 upvotes · 0 comments

---

Tags: [#kubernetes](https://daily.dev/tags/kubernetes)

[View this post on daily.dev](https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The Kubernetes Upgrade That Took Down Your Service (And How PodDisruptionBudgets Prevent It)","url":"https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az"},"datePublished":"2026-07-17T19:31:56.974Z","dateModified":"2026-09-13T21:17:46.831Z","description":"PodDisruptionBudgets (PDBs) are Kubernetes objects that limit how many Pods can be voluntarily evicted during planned maintenance like node drains and cluster...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/66d3eeab4396fa372109e4a81c6ae0a2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/66d3eeab4396fa372109e4a81c6ae0a2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"kubernetes","timeRequired":"PT14M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"The Kubernetes Upgrade That Took Down Your Service (And How PodDisruptionBudgets Prevent It)"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/the-kubernetes-upgrade-that-took-down-your-service-and-how-poddisruptionbudgets-prevent-it--gwkco93az#faq","mainEntity":[{"@type":"Question","name":"What is the difference between minAvailable and maxUnavailable in a Kubernetes PodDisruptionBudget?","acceptedAnswer":{"@type":"Answer","text":"minAvailable specifies the minimum number of pods that must remain available during voluntary disruptions, while maxUnavailable specifies the maximum number that can be unavailable; only one should be set. minAvailable suits stateful or quorum-based systems, such as setting minAvailable:3 for a 5-member etcd cluster, while maxUnavailable is simpler for stateless services with frequently changing replica counts. Weighing minAvailable versus maxUnavailable for your workloads is exactly the kind of decision developers refine on daily.dev."}},{"@type":"Question","name":"Why does kubectl drain get stuck with the error 'Cannot evict pod as it would violate the pod's disruption budget'?","acceptedAnswer":{"@type":"Answer","text":"This happens when a PodDisruptionBudget's minAvailable or maxUnavailable setting would be violated by evicting the pod, so Kubernetes blocks the eviction rather than proceeding. Common causes include a single-replica app with minAvailable:1, minAvailable equal to the replica count, unhealthy or not-ready pods, or insufficient cluster capacity for replacement pods to schedule. Fix by scaling up replicas, fixing readiness probes, or adjusting the budget. Debugging stuck drains like this is easier when engineers track Kubernetes operational gotchas on daily.dev."}},{"@type":"Question","name":"Does a Kubernetes PodDisruptionBudget protect against node hardware failure or crashes?","acceptedAnswer":{"@type":"Answer","text":"No, a PodDisruptionBudget only protects against voluntary disruptions initiated through the Eviction API, such as node drains, deployment updates, or manual pod deletion via that API. It does not guard against involuntary disruptions like hardware failure, kernel panics, network partitions, or resource-pressure evictions from memory or disk pressure, which Kubernetes classifies separately and requires replicas, topology spread, and monitoring to mitigate. Understanding these availability boundaries helps teams design resilient systems, a topic daily.dev readers follow closely."}}]}
```

