IL-0237 Lucidworks · 2026-05-28kubernetesai-infra
A Kubernetes patch upgrade evicted every Ray Serve head and worker pod at once, and Lucidworks hosted LLMs went down
Lucidworks AI serves its hosted models with Ray Serve, which routes inference requests through head and worker nodes. A Ray cluster normally survives a head restart because the workers keep serving. The node pool upgrades used a surge strategy that waits only for a pod to leave the old node, not for it to run on the new one: a drain counted as successful once the pod was gone, even if the pod was still stuck in "Initializing" on its new node, and the upgrade moved straight on to the next pool. All node pools were therefore cycled in rapid succession, every head and worker pod was evicted before any replacement had finished initializing, and the whole Ray cluster went down at 16:18 UTC. Lucidworks Engineering declared a Sev1 incident at 16:54 UTC.
Recovery took longer for three reasons. A replacement head node was degraded and could not pull images, and had to be deleted by hand. The 6-11 GB LLM images transferred abnormally slowly, in 30-52 minutes instead of 2-4. And a separate operation was bringing new models online at the same time, so the Ray operator's blue-green deployment strategy required both the existing and the replacement LLM deployments to be healthy before switching traffic, which meant waiting for the slow image pulls on both. The team deleted the degraded node, waited for the image pulls on the replacement nodes, redirected traffic to the new nodes and confirmed that every hosted model answered queries. All hosted models were working at 17:53 UTC, and the incident was verified as resolved at 18:07 UTC.
- Severity
- sev1
- Scope
- Hosted LLM inference for llama-3-8b-instruct, llama-3v2-3b-instruct and phi-4-multimodal-instruct returned 500 or 429 errors; search, embedding models, the Platform UI and passthrough LLM calls were not affected
- Users affected
- Customers using Lucidworks AI hosted LLM inference
- Region
- us-southcarolina
- Time to detect
- –
- Time to resolve
- 1h 35m
Symptoms
From 16:18 UTC on 28 May 2026 the Lucidworks AI hosted LLMs in the us-southcarolina region were unavailable: queries to llama-3-8b-instruct, llama-3v2-3b-instruct and phi-4-multimodal-instruct returned 500 or 429 errors. Search, embedding models, the Lucidworks Platform UI and passthrough LLM calls kept working.
The outage began during a routine Kubernetes patch upgrade that cycled the node pools, and the head and worker pods of the Ray Serve deployment were evicted before any of them had finished initializing on the new nodes. One replacement head node was degraded and could not pull container images. The LLM container images, 6-11 GB each, took 30-52 minutes to transfer instead of the usual 2-4 minutes.
While the incident was open the status page attributed it to a cloud provider capacity shortfall that kept the instances hosting the models from launching again, and said the needed capacity had been secured; the postmortem gives the upgrade's node pool cycling as the cause.
Root cause
Root cause Faulty deployment
- Trigger
- A routine Kubernetes patch upgrade on a cluster in us-southcarolina cycled its node pools one after another in quick succession.
Detection
–
Remediation
- Deleted the degraded replacement head node that could not pull container images
- Waited for the LLM image pulls to finish on the replacement nodes
- Launched new nodes with the required LLM images and redirected Lucidworks AI traffic to them
Action items
- Upgrade clusters that host LLM workloads in sequence, with each node pool fully healthy before the next one is upgraded
- Investigate image pre-loading, such as pre-baked disks or image streaming, for large ML model images
- Open a support ticket with the cloud provider about the abnormal Docker pull times
- Coordinate Kubernetes maintenance windows with LLM service owners so they do not clash with ongoing deployments
- Build tooling to force a Ray cluster failover to the blue or green state instead of waiting for Ray to settle it
Lessons
–
Sources
- https://status.lucidworks.com/incidents/160cww6nznwy · official-status · archived copy
Related cases
IL-0166A compute host update removed the credential parser used to decode StackScripts, so new Linodes and every new LKE and LKE-E node failed to boot and autoscaling and node recycling failed in all regionsLinode · 2026same root cause · shared Node pool
IL-0020During an EKS 1.30 upgrade the descheduler tried to reschedule every pod on the cordoned nodes at once and production workloads went downUK Ministry of Justice · 2025same root cause · shared Node pool
IL-0163An API change that slipped through a gap in automated testing made LKE clusters resize to the wrong number of nodes and added billable worker nodes to customer accountsLinode · 2023same root cause · shared Node pool
IL-0164An incremental Linode Kubernetes Engine production update that was missing changes from the previous release made cluster upgrades and node additions fail silentlyLinode · 2022same root cause · shared Node pool
IL-0328A field type change in the database of CircleCI's job distribution service left all jobs stuck in "not running"CircleCI · 2021same root cause · shared Node pool
IL-0149Upgrades of AKS clusters on Virtual Machine Scale Sets failed with a 'platform image is not available' error after a service update left a backend service unhealthyMicrosoft Azure · 2019same root cause · shared Node pool
IL-0467Boskos crash-looped after a node drain started it from a buggy StatefulSet image, failing Kubernetes PR jobs for 9 hoursKubernetes project · 2019same root cause · shared Node pool
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0237
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0237/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.