<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna" -->

---
title: Your Kubernetes health checks are accidentally waking...
description: Scale-to-zero in Kubernetes often fails in practice because load balancers, service meshes, and uptime monitors continuously send health check requests that...
canonical: https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Your Kubernetes health checks are accidentally waking your services. Here’s the fix. | daily.dev
og:description: Scale-to-zero in Kubernetes often fails in practice because load balancers, service meshes, and uptime monitors continuously send health check requests that...
og:url: https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna
og:image: https://api.daily.dev/og/posts/3CNY7Pvna.png
og:image:alt: Your Kubernetes health checks are accidentally waking your services. Here’s the fix.
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.

# Your Kubernetes health checks are accidentally waking your services. Here’s the fix.

**[CNCF](https://daily.dev/sources/cncf)** · 8 min read · 7 upvotes · 0 comments

## Summary

Scale-to-zero in Kubernetes often fails in practice because load balancers, service meshes, and uptime monitors continuously send health check requests that the autoscaler interprets as real traffic, causing pods to wake up immediately. KubeElasti's new ProbeResponse feature solves this by letting the resolver intercept configured probe requests and return synthetic responses (e.g., 200 OK) without triggering a scale-up event. Rules match on HTTP method, path (Exact, PathPrefix, or Regex), headers, and query parameters. The feature only activates when the service is at zero replicas, adding no latency or overhead when pods are running. This is especially valuable for GPU workloads, licensed software, and internal dev services where health check noise previously made genuine idle time impossible.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.cncf.io/blog/2026/07/29/your-kubernetes-health-checks-are-accidentally-waking-your-services-heres-the-fix>

## Questions this post answers

### Why does my Kubernetes service keep scaling up even though there's no real traffic?

Load balancer, ingress, or monitoring health checks are hitting the service's resolver while it is scaled to zero, and the resolver interprets any incoming request as a signal to scale up. This creates a loop where the service never stays idle because health checks fire every 30 seconds or so, repeatedly waking pods and preventing scale-to-zero savings.

_Anyone chasing phantom scale-up events on cost-sensitive workloads can track fixes like this on daily.dev._

### How does KubeElasti's ProbeResponse feature stop health checks from triggering scale-up?

ProbeResponse lets you define rules matched on HTTP method, path (Exact, PathPrefix, or RegularExpression), headers, and query parameters that the resolver evaluates before deciding to scale up. If a request matches, the resolver answers it directly with a configured status code and body instead of notifying the operator, so the workload stays at zero while the health check still gets its 200 OK.

_Teams weighing scale-to-zero tooling can follow releases like this on daily.dev before rolling them into production._

### Does intercepting health checks with KubeElasti's ProbeResponse add latency when my service is actively running?

No, ProbeResponse rules only apply while the resolver is active in proxy mode, which is only when the service has zero replicas. Once pods are running, KubeElasti switches to serve mode and routes traffic directly to the pods, bypassing the resolver entirely, so there is no added latency or infrastructure overhead during normal operation.

_Engineers evaluating the cost versus latency trade-offs of scale-to-zero can keep up with details like this on daily.dev._

## Similar posts on daily.dev

- [Why Your Kubernetes Readiness Probes Are Lying During Rolling Updates](https://daily.dev/posts/why-your-kubernetes-readiness-probes-are-lying-during-rolling-updates-yc6emhkvi) · Cloud Native Now · 3 upvotes · 1 comments
- [Kubernetes Health Checks: Types, Configuration & Debugging](https://daily.dev/posts/kubernetes-health-checks-types-configuration-debugging-7e6dssdlq) · Spacelift · 9 upvotes · 0 comments
- [How Kubernetes Health Checks Brought Down a Payment Service](https://daily.dev/posts/how-kubernetes-health-checks-brought-down-a-payment-service-jxkwnhtv6) · Medium · 12 upvotes · 0 comments
- [When “Healthy” Isn’t Healthy: Rethinking Kubernetes Health Checks for Real-World Systems](https://daily.dev/posts/when-healthy-isn-t-healthy-rethinking-kubernetes-health-checks-for-real-world-systems-pg3f8xgmn) · Cloud Native Now · 0 upvotes · 0 comments

---

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

[View this post on daily.dev](https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna)

```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":"Your Kubernetes health checks are accidentally waking your services. Here’s the fix.","url":"https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna"},"datePublished":"2026-07-29T11:03:45.695Z","dateModified":"2026-09-14T09:06:41.057Z","description":"Scale-to-zero in Kubernetes often fails in practice because load balancers, service meshes, and uptime monitors continuously send health check requests that...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c33a61a81689a8f22d49215c54bb1504?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c33a61a81689a8f22d49215c54bb1504?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"CNCF","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":"CNCF","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/55536a03390741eebd96d2f9b74d2d8d","url":"https://daily.dev/sources/cncf"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":7},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"kubernetes","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"CNCF","item":"https://daily.dev/sources/cncf"},{"@type":"ListItem","position":3,"name":"Your Kubernetes health checks are accidentally waking your services. Here’s the fix."}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/your-kubernetes-health-checks-are-accidentally-waking-your-services-here-s-the-fix--3cny7pvna#faq","mainEntity":[{"@type":"Question","name":"Why does my Kubernetes service keep scaling up even though there's no real traffic?","acceptedAnswer":{"@type":"Answer","text":"Load balancer, ingress, or monitoring health checks are hitting the service's resolver while it is scaled to zero, and the resolver interprets any incoming request as a signal to scale up. This creates a loop where the service never stays idle because health checks fire every 30 seconds or so, repeatedly waking pods and preventing scale-to-zero savings. Anyone chasing phantom scale-up events on cost-sensitive workloads can track fixes like this on daily.dev."}},{"@type":"Question","name":"How does KubeElasti's ProbeResponse feature stop health checks from triggering scale-up?","acceptedAnswer":{"@type":"Answer","text":"ProbeResponse lets you define rules matched on HTTP method, path (Exact, PathPrefix, or RegularExpression), headers, and query parameters that the resolver evaluates before deciding to scale up. If a request matches, the resolver answers it directly with a configured status code and body instead of notifying the operator, so the workload stays at zero while the health check still gets its 200 OK. Teams weighing scale-to-zero tooling can follow releases like this on daily.dev before rolling them into production."}},{"@type":"Question","name":"Does intercepting health checks with KubeElasti's ProbeResponse add latency when my service is actively running?","acceptedAnswer":{"@type":"Answer","text":"No, ProbeResponse rules only apply while the resolver is active in proxy mode, which is only when the service has zero replicas. Once pods are running, KubeElasti switches to serve mode and routes traffic directly to the pods, bypassing the resolver entirely, so there is no added latency or infrastructure overhead during normal operation. Engineers evaluating the cost versus latency trade-offs of scale-to-zero can keep up with details like this on daily.dev."}}]}
```

