Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
World desk5 min

How to Configure Kubernetes Node Failure Detection and Pod Eviction Timing

Kubernetes node failure and pod eviction use multiple timers. Learn what the documented defaults control and how to set a per-pod NoExecute delay without treating it as a guaranteed recovery time.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Kubernetes does not use one timer for node failure and pod eviction. A node’s heartbeat determines when the control plane recognizes a problem; node conditions and taints then interact with each pod’s tolerations, while eviction rate limits and control-plane connectivity affect what happens next. The documented defaults include a 10-second Lease update interval, a 50-second node-monitor grace period, and automatic 300-second tolerations for the not-ready and unreachable taints—but those values do not guarantee a fixed time to rescheduling.

How the failure-to-eviction sequence works

Think of the process as distinct stages rather than a single “node failure timeout.” The Kubernetes documentation gives defaults for several stages, but actual behavior also depends on cluster version, controller configuration, pod tolerations, and whether the control plane can reach the node.

As an Amazon Associate I earn from qualifying purchases.

  1. Heartbeat: The kubelet reports node health through Node status updates and Lease objects in the kube-node-lease namespace. Kubernetes documents a default Lease update interval of 10 seconds. Node status has a separate update cadence; its documented default interval is five minutes, though updates can also be triggered by changes. See Node Status.
  2. Failure recognition: The node controller waits for the configured --node-monitor-grace-period. The Node Status reference lists 50 seconds as the documented default. This is a heartbeat grace period, not a promise that every pod will be rescheduled 50 seconds after a machine stops responding.
  3. Condition and taint: A node reporting Ready=False is unhealthy; Ready=Unknown means the controller has not heard from it within the grace period. The corresponding failure taints are node.kubernetes.io/not-ready and node.kubernetes.io/unreachable. Unknown indicates lost communication; False indicates the node reports itself as not ready.
  4. Pod eviction eligibility: These taints have the NoExecute effect. A pod without a matching toleration is eligible for immediate eviction by the taint-based mechanism. A matching toleration without tolerationSeconds permits the pod to remain bound indefinitely. With tolerationSeconds, it may remain bound for that duration after the taint is added, unless the taint is removed first.
  5. Eviction request and recovery: Controller behavior and rate limits affect when eviction requests are submitted and processed. Even after a deletion request, a partitioned node may continue running its local process if the control plane cannot reach it; eviction does not itself fence a machine.

The Kubernetes Nodes documentation describes the node controller waiting five minutes after marking a node Unknown before submitting its first eviction request. This is a separate controller description from the automatic five-minute pod toleration discussed below; do not treat the two descriptions as one universal additive timer. Version and controller configuration influence the execution path. See Nodes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the documented defaults mean

Setting or behavior Documented value How to interpret it
Kubelet Lease update interval 10 seconds Default heartbeat cadence for Lease objects, as documented in the Kubernetes Node Status reference; it is not the failure grace period.
--node-monitor-grace-period 50 seconds Documented default period without hearing from a node before the controller can set Ready=Unknown.
Automatic tolerations for not-ready and unreachable 300 seconds Default tolerationSeconds added to pods unless the pod or its controller sets those tolerations explicitly. DaemonSet pods have indefinite tolerations for these two taints.
Node controller initial wait after marking Unknown 5 minutes Nodes documentation describes this wait before the first eviction request; it is not the same setting as the automatic pod toleration.
--node-eviction-rate 0.1 node per second Documented default rate, equivalent to one node per 10 seconds, subject to zone and cluster-health behavior.

These are Kubernetes documentation defaults, not guaranteed timings for every distribution or managed service. The 50-second and 10-second values appear in the Node Status reference; the automatic tolerations and controller behavior are described in Taints and Tolerations; node-controller waiting and eviction-rate caveats are in Nodes.

Set a per-pod eviction delay

For an ordinary pod, configure matching NoExecute tolerations in its PodSpec. This example allows the pod to remain bound for 600 seconds after either failure taint is applied:

tolerations:
  - key: "node.kubernetes.io/unreachable"
    operator: "Exists"
    effect: "NoExecute"
    tolerationSeconds: 600
  - key: "node.kubernetes.io/not-ready"
    operator: "Exists"
    effect: "NoExecute"
    tolerationSeconds: 600

The 600-second value is illustrative, not a Kubernetes recommendation. Apply the tolerations to the relevant pod template when a controller such as a Deployment or StatefulSet creates the pods; editing only an existing pod may not provide a durable workload-level configuration.

To change the delay, adjust tolerationSeconds on the matching toleration. A longer value can avoid eviction during brief communication loss but delays recovery after genuine node failure. A shorter value can make recovery eligible sooner, while increasing the risk of acting on a transient partition. Omitting tolerationSeconds from a matching toleration means it tolerates the taint indefinitely.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Kubernetes automatically adds 300-second tolerations for these two taints unless the pod or its controller explicitly specifies them. The project documentation explains that the automatic tolerations keep pods bound to nodes for five minutes after one of these problems is detected. DaemonSet pods use indefinite tolerations for both taints. Details are in Taints and Tolerations.

Configure cluster-level failure detection

For cluster-level detection behavior, the relevant kube-controller-manager flags documented here are --node-monitor-grace-period and --node-monitor-period. The grace-period flag controls how long the controller waits without node communication; the monitor-period flag is also relevant to node monitoring. Changing heartbeat reporting cadence alone does not change the grace-period threshold.

  • Inspect the control-plane configuration for the Kubernetes version and distribution you actually run before changing either flag.
  • Check whether your provider exposes these controller-manager settings. Managed Kubernetes services may expose only a subset of control-plane configuration.
  • Review eviction-rate behavior as well as detection timing. The documented default --node-eviction-rate is 0.1 node per second, with behavior affected by zone and cluster health; mass failures may therefore be handled differently from a single-node failure.

Since Kubernetes 1.29, taint-based eviction is performed by the separate taint-eviction-controller. The Kubernetes documentation says it can be disabled through --controllers=-taint-eviction-controller in kube-controller-manager. Check the actual controller configuration and manifests rather than assuming every cluster uses identical defaults. See Taints and Tolerations.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Choose a delay for the workload, not just the timer

There is no universally safe toleration duration. Decide based on how costly a false eviction is compared with delayed recovery, and whether the old process could continue doing work during a partition.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Stateful workloads: Check storage attachment and detach behavior before shortening the delay. A replacement pod must not assume the prior node has stopped using data simply because the control plane requested eviction.
  • Replicated services: Confirm replica placement and application-level safeguards. A pod that keeps running on an isolated node while a replacement starts elsewhere can create duplicate work or conflicting writes.
  • Transient network interruptions: A longer delay may reduce unnecessary churn, but means a truly failed node can take longer to yield an eligible replacement.
  • Hard failure or partition scenarios: Plan for fencing or another workload-specific mechanism if duplicate execution is unsafe. Eviction timing alone does not guarantee that the old process has stopped.

For an operational estimate, treat the heartbeat interval, grace period, taint application, toleration duration, controller wait and rate limit as separate contributors. Do not simply add the documented defaults and promise that total as a rescheduling time: controller paths differ, rate limiting can apply, and API-server reachability affects whether deletion reaches the kubelet.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.