Cases2 cases
1 to 2 of 2
IL-0095An engineer deleted the prod namespace of the LEAP JupyterHub while believing the kubeconfig pointed at a new cluster, and the hub was down for about an hour2i2c2025- Symptoms
At 5:00 PM BST on 12 August 2025 a 2i2c engineer declared an incident. While deploying a new cluster called temple and running into NFS issues, the engineer had deleted the prod namespace; the deletion hung, and listing the pods showed many users from a different cluster. The engineer's first message suggested that the kubeconfig had somehow been mutated or corrupted and that some other cluster was being torn down.
- Trigger
While working around a bug in the NFS deployment process for a new hub, an engineer ran a delete of the prod namespace with the kubeconfig context pointing at the LEAP cluster.
- Root cause
- Component
- Contributing factor
- Detection
The engineer who ran the deletion noticed when it hung and the pod list showed users of another cluster, and declared the incident at 5:00 PM BST, before the uptime check on leap.2i2c.cloud failed at 5:32 PM.
- Remediation
- deleted the single remaining user pod in prod so the namespace deletion completed
- killed the nfs-share-creator job that was blocking the deployment
- redeployed the prod hub with the updated NFS server IP address
- deleted the prod ingress during the deployment so that users could not start servers mid-deployment
- Action items
- Write an incident report
- Write a short incident response document for the case "I deleted prod, what next?"
- Upgrade jupyterhub-home-nfs and remove the nfs-share-creator job
- Add opt-in hardening against nested kubeconfig contexts to the deployer system
- Change the engineer's shell configuration to show distinct kubeconfig contexts more clearly
- Lessons
Provisioning persistent storage outside Kubernetes with Terraform meant a deleted namespace cost an hour of downtime and no data. The engineer had no visible cue for which kubeconfig context was active, which turned a workaround on a new cluster into a deletion on a production one. The engineer knew the fix but did not feel confident redeploying without first confirming with the tech lead, in another time zone, that there was no risk of losing persistent data, and reaching the tech lead took time.
- Symptoms
On 20 September 2024 at 11:24 the Cloud Platform team received high priority Pingdom alerts for services on the live cluster, and from 11:26 teams reported in the #ask channel that services were unavailable. Users reported that services could not be resolved.
- Trigger
At 11:21 the infrastructure-vpc-live-1 pipeline was unpaused, and a pull request that had been waiting in its queue ran automatically.
- Root cause
- Component
- Contributing factor
- Detection
High priority Pingdom alerts for live cluster services reached the Cloud Platform team at 11:24, and users reported that services could not be resolved.
- Remediation
- Ran terraform apply locally to rebuild the subnet route table associations
- Action items
- Review and update the process for pausing and resuming infrastructure pipelines so every team member knows its implications
- Find a way to hold queued pull requests while manual infrastructure updates are under way
- Find ways to isolate the plan and apply tasks of infrastructure pipelines better
These 2 cases involve Terraform and CI system. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause1
Operator error2 cases
- Component
- Contributing factor
- Organisation