maxUnavailable: 0 prevents a Deployment rollout from intentionally reducing the number of Pods Kubernetes counts as available below the desired replica count. It does not guarantee that every client request succeeds. Readiness, endpoint updates, application shutdown, external routing, and surge capacity all affect what happens to real traffic. To find the cause, trace those layers on a shared timeline instead of treating availableReplicas as a request-success metric.
What maxUnavailable: 0 guarantees—and what it does not
Kubernetes uses maxUnavailable as a constraint on Deployment rollout availability. It is not a measure of successful HTTP requests or a guarantee that every traffic path will switch cleanly during a Pod replacement. The Deployment documentation also notes that terminating Pods are not counted when calculating availableReplicas, even though they can continue consuming resources until their termination grace period expires. Kubernetes Deployment documentation
As an Amazon Associate I earn from qualifying purchases.
With zero unavailable replicas allowed, maxSurge cannot also be zero: the rollout needs permission to create temporary Pods above the desired replica count. Those extra Pods still need enough schedulable cluster capacity and must become ready for the rollout to progress. The documented defaults are 25% for both maxUnavailable and maxSurge; percentage values round down for maxUnavailable and up for maxSurge. Defaults and API behavior can vary by Kubernetes release, so check the documentation for the version actually running in your cluster. Deployment rollout settings Deployment v1 API reference
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Where requests can fail during a rollout
Readiness does not match real request health
A readiness probe tells Kubernetes whether a container is ready to accept traffic. When a readiness check fails, the EndpointSlice controller removes the Pod IP from EndpointSlices for Services that select it. But a passing probe can still disagree with user-visible health: it might succeed before the application can handle real requests, omit a dependency, or fail to reflect cache warmup or overload. Compare probe results and transitions with the actual request path and observed failures. Pod lifecycle and probes
#1 Best Overall
Endpoint changes and the traffic path do not move as one
Pod deletion and EndpointSlice processing are part of a lifecycle that includes graceful shutdown. Seeing a Pod marked terminating, or seeing EndpointSlice membership change, does not by itself establish when a particular ingress, proxy, or external load balancer stops sending it traffic. Verify the backend view and routing behavior of the components your clients actually traverse; Kubernetes documentation does not specify timing guarantees for an unspecified external dataplane. Pod termination and endpoint behavior
The application or sidecar stops before active work drains
During graceful termination, kubelet normally asks the container runtime to send SIGTERM to the main process. A configured preStop hook runs before that signal, within the termination grace period. Kubernetes documents a default terminationGracePeriodSeconds of 30 seconds; when the grace period expires, remaining processes are killed. The application and any sidecars need to handle this shutdown sequence and finish or deliberately reject in-flight work within the available time. Pod termination lifecycle
Surge Pods cannot schedule or become ready
A rollout with maxUnavailable: 0 depends on replacement capacity. If surge Pods cannot be scheduled because of resource constraints, or they do not become ready, rollout progression can stall. Check scheduler events and available cluster capacity rather than assuming the configured surge count is running and serving traffic. Deployment rollout behavior
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Diagnose the failure layer with a shared timeline
For a reproduction, correlate request failures with Pod readiness, deletion, endpoint membership, routing state, application shutdown, and scheduling. These signals help separate four commonly conflated conditions:
Rank #3
| Compare | What to inspect | What it can reveal |
|---|---|---|
| Kubernetes readiness vs. application health | Probe configuration and results, readiness transitions, real request outcomes, dependencies, cache warmup, and overload behavior. | Whether the probe accurately represents the request path. |
| EndpointSlice membership vs. routing backends | EndpointSlices for the Service and the backend state or traffic observed at the ingress, proxy, or external load balancer. | Whether a routing layer continues sending traffic after endpoint state changes. |
| Drain time vs. termination budget | SIGTERM handling, active-request draining, preStop work, terminationGracePeriodSeconds, and forced termination. |
Whether the application has enough time to finish work before shutdown. |
| Desired surge vs. schedulable capacity | Deployment rollout conditions, scheduler events, resource requests, and whether new Pods become ready. | Whether replacement Pods can run and serve before old Pods are removed. |
1. Verify the live Deployment settings and rollout state
Inspect the Deployment’s strategy, desired replica count, maxUnavailable, maxSurge, minReadySeconds, and rollout conditions. Record ready, available, and terminating Pod counts with timestamps. A rollout that is progressing or stalled says something about controller state, not whether each client request succeeded. Deployment status and strategy Deployment v1 API reference
2. Check probe behavior against a real request
Inspect what the readiness endpoint tests and when its result changes during startup, overload, and shutdown. Correlate probe transitions with application logs and failed requests, including dependencies and warmup that the probe may not cover. Readiness probes
3. Follow endpoint state through the actual router
Inspect the Service’s EndpointSlices during Pod termination, then check when the ingress, proxy, or load balancer removes that Pod from its own backends or stops routing traffic to it. Record both observations on the same timeline as failed requests; EndpointSlice state alone cannot establish the behavior of an external traffic layer. EndpointSlices and Pod lifecycle
Free tools Windows power users keep installed
One-click scans. No signup required.
4. Inspect shutdown and in-flight request handling
Review application and sidecar behavior on SIGTERM, the work performed by preStop, the configured grace period, and whether the process drains or interrupts active requests. Check logs for shutdown timing and whether a process was forcibly killed when its grace period expired. Pod termination behavior
Best Value
5. Check whether surge capacity is real
Review scheduler events and resource availability for Pods created during the rollout. Confirm that the new Pods were scheduled, became ready, and remained available long enough for the controller to proceed. Rolling update capacity
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Why the exact cause depends on the cluster
The Kubernetes mechanisms explain how rollout availability, readiness, endpoint updates, and graceful termination interact; they do not identify the cause of a particular outage. The result depends on the Kubernetes release, application and sidecar shutdown behavior, CNI, ingress or proxy, and any cloud load balancer. A useful diagnosis therefore needs cluster events, request traces, endpoint and router state, and termination logs—not just the Deployment’s maxUnavailable value.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




