IL-0448 Uzabase · 2026-07-28 (published)kubernetesnetworking
Requests from Uzabase's Kubernetes Job pods to an LLM agent randomly never got responses when they ran past 15 minutes
The cluster runs kube-proxy in IPVS mode, and in the kube-proxy ConfigMap the IPVS TCP timeout was left at `tcpTimeout: 0s`, which means the default is used, and the default was 15 minutes. A TCP connection that sends and receives no packets for 15 minutes is removed from the IPVS connection table, which records which pod each connection is forwarded to. Neither the client nor the agent is told: no RST or FIN is sent, so both sides believe the connection is still open, the agent's response never reaches the client, and the client keeps waiting.
The team found this while investigating with Claude Code. It fixed the failure in the Python client by turning on TCP keepalive on the httpx transport (SO_KEEPALIVE 1, TCP_KEEPIDLE 60, TCP_KEEPINTVL 30, TCP_KEEPCNT 3, with a client timeout of 3600), so packets regularly cross the TCP connection and keep it alive.
- Severity
- –
- Scope
- Requests from Job pods to the LLM agent that took longer than about 15 minutes never received their responses
- Users affected
- –
- Region
- –
- Time to detect
- –
- Time to resolve
- –
Symptoms
At Uzabase, a product team in the Speeda business uses an LLM agent to extract companies' management issues from public documents, and a client pod run as a Kubernetes Job sends the requests to the agent. The agent reviews its output many times, so a response often takes more than 15 minutes. Some share of the requests never got a response, with no clear pattern in which ones.
The client log showed that responses had not come back for some of the requests, which stayed unfinished until the forced retry the client runs after 60 minutes. The team first suspected that the agent had a problem with some requests, but the agent's log showed that it had returned its responses normally.
Comparing the client and agent logs showed that the requests that failed were the ones taking about 13 minutes or more to answer, so the team suspected a timeout somewhere on the network path inside Kubernetes.
Symptom Intermittent timeouts
Root cause
Root cause DNS or network fault
- Trigger
- LLM agent requests that took more than 15 minutes without packets on the TCP connection.
Detection
Client Job pods were not getting responses for some requests to the agent; the client log showed tasks that started but never finished until the 60-minute forced retry.
Remediation
- Turned on TCP keepalive in the Python client so packets keep the connection alive
Action items
–
Lessons
Application engineers also need to know the network and infrastructure. As AI applications with long response times become common, a silent cut of a long request can come from a network setting such as the IPVS TCP timeout.
Sources
Related cases
IL-0178On EKS, HPA scale-in returned 502 errors because containers stopped before their pod IPs left the Service endpoints, and after blue/green switches conntrack kept sending established connections to deleted pods behind an instance-mode ALBLotte E-commerce · 2022same root cause · shared kube-proxy
IL-0049Partial DNS outage after CoreDNS scaled down and kube-proxy failed to delete stale conntrack entriesPreply · 2020same root cause · shared kube-proxy
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0448
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0448/similar
- MCP server (Streamable HTTP, no key):
https://incidentlib-mcp.benchlet.com/mcp
The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.