knative / knative/serving

Curling a pod with failed readinessProbe should not hang

Open
#10,765 6 comments 0 reactions 0 assignees View on GitHub
area/autoscale area/networking kind/bug lifecycle/frozen triage/accepted
Dominant language
Go
Stars
6.1k
Forks
1.2k
Avg merge
2d 7h
Merged PRs (30d)
2

Description

## What version of Knative?

all recent versions

## Expected Behavior

Curling a pod with a readiness probe set (with periodSeconds=0 to avoid the behaviour in https://github.com/knative/serving/issues/10764), should either error immediately or succeed due to us scaling things up / terminating the pod (needs discussion about what the right behaviour is!).

## Actual Behavior

Curling a pod with a failed readiness check hangs (unless there are other scaled-up pods for the request). The pod is never killed, because there is no liveness probe, but the set of routable pods is empty. In upstream k8s you would get a "no healthy upstream" error, in knative your curl hangs 😢.

## Steps to Reproduce the Problem

1. `ko apply -f https://github.com/julz/readybutnotsteady/blob/main/service-no-period.yaml`
1. Wait for startup to succeed
1. `curl readynotsteady.default.$domain/start-failing`
1. Wait a few seconds for the pod to go unready
1. `curl readynotsteady.default.$domain` (hangs).

Contributor guide

Open the contributing guide

Research direction

Apply service-no-period.yaml from the readybutnotsteady reproduction, wait for startup, trigger /start-failing, and then curl the service after the pod becomes unready. Trace how the request is handled when no routable pods remain; done means the request either fails immediately or succeeds according to the behavior agreed by the maintainers.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.