
Safer Kubernetes rollouts with minReadySeconds
Picture the scene: you’ve just deployed a rolling update to your service. Half of your pods are running the new version, they all passed their readiness checks, and Kubernetes terminated the old replicas.
Suddenly, the new pods start throwing 503 errors. Thankfully, you still have pods on the old version, so you stop the update. If the rollout had been a little bit faster, you’d have an outage.
This is the failure mode minReadySeconds exists to prevent. It tells Kubernetes to hold a new pod at arm’s length for a set number of seconds before trusting it enough to tear down the pod it replaces. In this blog, we’ll look at minReadySeconds in detail, and explain how you can use it to deploy changes more safely and confidently.
What does minReadySeconds actually do?
minReadySeconds sets the minimum amount of time that a newly created pod must be in its Ready state, without any of its containers crashing, before a workload controller considers it Available. Available is a workload controller's judgment that a pod has stayed Ready long enough to be trusted. Controllers use it to gate rollout progression and to satisfy pod disruption budgets.
minReadySeconds applies to Deployments, StatefulSets, DaemonSets, ReplicaSets, ReplicationControllers, and Argo Rollouts. By default, it’s set to 0, which means Kubernetes considers the pod Available immediately after it’s Ready.
Kubernetes uses a pod’s availability to manage:
- Rolling updates: the Deployment controller won’t terminate old pods in a batch until the new ones are Available. A pod that passes readiness then crashes shortly after never becomes Available, so the rollout stops instead of terminating your stable replicas.
- Pod disruption budgets: PDBs count the number of Available pods when determining how many pods to preserve. minReadySeconds can prevent a node drain from evicting a pod while its replacement is still stabilizing.
- Load balancer propagation: External load balancers can take several seconds to register a new backend. minReadySeconds provides a grace period for this process to complete before the old pod disappears.
Why passing a readiness check isn’t enough
Readiness probes ask a yes-or-no question at a single point in time. A pod can say it’s Ready while still doing startup work, like priming a cache, opening a connection pool, or syncing cluster state. Pods like this can pass their initial checks and still provide degraded performance.
Without minReadySeconds, Kubernetes will interpret that pass as permission to remove the previous pod, trading a healthy replica for one that’s still spinning up. If the new pod crashes, that failure will propagate. Readiness probes determine when the pod can serve traffic, and minReadySeconds determines when the rollout accepts the pod’s availability and moves on to the next.
How to find workloads without minReadySeconds set
minReadySeconds applies to workloads, not individual pods. To check deployments that are missing it or have it set to zero, you can use the kubectl and jq command-line tools (swap deployments for statefulsets or daemonsets, depending on your workload type):
Gremlin checks for minReadySeconds automatically as a built-in Detected Risk. Once you've defined a Kubernetes service in Gremlin, it continuously monitors that service's workloads and flags any missing minReadySeconds, including ones that were configured correctly and later drifted.
How to configure minReadySeconds
Adding minReadySeconds requires a single field. In this example, Kubernetes will wait 30 seconds before removing old Nginx containers:
The strategy block controls how Kubernetes handles updates to this deployment. With maxUnavailable: 0 and maxSurge: 1, Kubernetes will bring up one new pod and wait for it to stay Ready for 30 seconds before terminating the old one and moving onto the next. This ensures that we never fall below our replica count, and an unstable pod stops the rollout instead of propagating through it.
You can verify this by running:
Then, during a rollout or update, you can watch the gap between pod readiness and availability. In this rolling update example, Kubernetes creates the new pod (Ready shows 5/4, waits for minReadySeconds to elapse, then replaces the old pod and increments Up-to-Date:
That 30-second gap is minReadySeconds doing its job.
How to choose a value for minReadySeconds
The value you set for minReadySeconds depends on your workload and environment.
Start by taking measurements of your pod startup times. Record the time from when the pod becomes Ready to when your application’s metrics look normal. Use your service level indicators (SLIs) and service level objectives (SLOs), or look for metrics such as steady latency, zero errors, and baseline resource saturation. Repeat this for several pod starts, ideally under load, and take the 95th percentile to get a solid baseline.
Remember to account for other conditions that need to take place for the pod to start serving production traffic. If your cloud load balancer needs 15 seconds to register a backend, set a minimum of 15 seconds regardless of your application startup time.
Generally speaking, 10–60 seconds will cover most services. The tradeoff is in rollout time. Replacing four replicas with minReadySeconds: 30 and maxSurge: 1 adds two minutes to a deployment. That’s worth it for workloads with strict reliability requirements (tier 0 or tier 1, for example), but might not be for workloads that don’t directly serve production traffic.
Other Kubernetes risks to watch for
minReadySeconds is just one chapter in the Kubernetes startup story:
- Startup probes give slow-starting containers time to breathe before liveness checks.
- Readiness probes prevent traffic from reaching a pod until it’s ready to serve.
- minReadySeconds keeps a rollout from trusting a pod for a set amount of time.
Pair these with liveness probes for ongoing health, and with topology spread constraints so the pods you do have aren't all sitting on one node.
These fields can be easy to forget or miss when building a new service, during a refactor, or when templating a Helm chart. That’s why continuous detection is important: a manifest that was reliable on the last major release might not be reliable today.
Want to find missing minReadySeconds and other common Kubernetes misconfigurations? Use Gremlin's Detected Risks to scan your Kubernetes services and spot reliability issues automatically.
Gremlin's automated reliability platform empowers you to find and fix availability risks before they impact your users. Start finding hidden risks in your systems with a free 30 day trial.
sTART YOUR TRIALTo learn more about Kubernetes failure modes and how to prevent them at scale, download a copy of our comprehensive ebook
Get the Ultimate GuideManaging slow container starts with Kubernetes readiness probes
Pods without readiness probes are like engineers without coffee. Learn how readiness probes work, why they’re important, and how to configure them correctly.


Pods without readiness probes are like engineers without coffee. Learn how readiness probes work, why they’re important, and how to configure them correctly.
Read moreHow to keep your Kubernetes Pods up and running with liveness probes
Getting your applications running on Kubernetes is one thing: keeping them up and running is another thing entirely. While the goal is to deploy applications that never fail, the reality is that applications often crash, terminate, or restart with little warning. Even before that point, applications can have less visible problems like memory leaks, network latency, and disconnections. To prevent applications from behaving unexpectedly, we need a way of continually monitoring them. That's where liveness probes come in.


Getting your applications running on Kubernetes is one thing: keeping them up and running is another thing entirely. While the goal is to deploy applications that never fail, the reality is that applications often crash, terminate, or restart with little warning. Even before that point, applications can have less visible problems like memory leaks, network latency, and disconnections. To prevent applications from behaving unexpectedly, we need a way of continually monitoring them. That's where liveness probes come in.
Read moreOptimizing Kubernetes pod deployments for reliability with topology spread constraints
Topology spread constraints let you determine how Kubernetes spreads pod replicas across failure domains, such as availability zones and regions. This blog explains how they work, how to configure them, and how to scan for missing constraints.


Topology spread constraints let you determine how Kubernetes spreads pod replicas across failure domains, such as availability zones and regions. This blog explains how they work, how to configure them, and how to scan for missing constraints.
Read more