IL-0501 2i2c · 2022-08-30kubernetesazurenetworking
Every node of the UToronto Kubernetes cluster on Azure went NotReady and the JupyterHub became unreachable
Microsoft Azure rolled out an Ubuntu update to all Ubuntu 18.04 nodes. Hundreds of such updates normally apply automatically without 2i2c noticing, but this one triggered a systemd bug, Ubuntu bug 1988119, which the Microsoft advisory described as a DHCP bug causing DNS errors after the upgrade to systemd 237-3ubuntu10.54. Networking failed on every existing node of the UToronto Kubernetes cluster, all nodes went NotReady, and the hub was down from 11:15 AM to 12:13 PM Pacific time on 30 August 2022, 58 minutes in all.
According to the Ubuntu bug report, a reboot would have fixed the nodes. The nodes were not listed on the Azure Portal VMs page, and an upgrade of the cluster's Kubernetes version was already due and would replace every node, so at 11:53 AM the team started an upgrade of the cluster's Kubernetes and node versions as the fastest way to get fresh nodes. The upgrade retired all old nodes and brought up new working ones, and at 12:14 PM the hub was back online.
- Severity
- –
- Scope
- UToronto JupyterHub (jupyter.utoronto.ca) was unreachable; all nodes of its Kubernetes cluster were NotReady
- Users affected
- all UToronto JupyterHub users
- Region
- –
- Time to detect
- –
- Time to resolve
- 58m
Symptoms
On 30 August 2022 at 11:15 AM Pacific time, the UToronto JupyterHub at jupyter.utoronto.ca stopped responding and users could not reach it at all. The outage was reported through 2i2c's support desk.
At 11:41 AM `kubectl get node` showed every node of the cluster in NotReady, for example "aks-core-34239724-vmss000000 NotReady agent 273d v1.20.7" and "aks-nbdefault-34239724-vmss000010 NotReady agent 193d v1.20.7". Networking had failed on all existing Kubernetes nodes.
At 11:25 AM the customer forwarded a Microsoft advisory: from about 06:00 UTC that day, Azure customers running Ubuntu 18.04 VMs recently upgraded to systemd version 237-3ubuntu10.54 had reported DNS errors when reaching their resources, a bug tracked as Ubuntu bug 1988119, with rebooting the VM to get a fresh DHCP lease and new DNS resolvers as a possible workaround. The `kubernetes.azure.com/node-image-version` label on each NotReady node showed an Ubuntu version affected by the advisory. The nodes did not appear on the Azure Portal VMs page, so the nodes could not simply be rebooted there, and the team had no documented way to SSH into its Kubernetes nodes.
Symptom Service outageNode NotReady
Root cause
Root cause Breaking change in an upgrade
- Trigger
- Microsoft Azure rolled out an Ubuntu update to all Ubuntu 18.04 nodes, which triggered a systemd bug that broke networking.
Detection
The outage was reported at 11:15 AM through 2i2c's Freshdesk support desk because jupyter.utoronto.ca was not responding. At 11:25 AM the customer's representative forwarded the Microsoft advisory on the same ticket, which pointed the team to the cause.
Remediation
- Started an upgrade of the cluster's Kubernetes and node versions, which replaced all old nodes with new working ones
Action items
- Document how to SSH into the Kubernetes nodes
- Find a way to be notified of Azure advisories
Lessons
Once the cause was known, a single action brought the hub back quickly. The team had no documented way to SSH into its Kubernetes nodes, and the customer's representative saw the Azure advisory and pointed it out on the support ticket, which saved a lot of time.
Sources
- https://github.com/2i2c-org/incident-reports/blob/main/reports/2022-08-30-utoronto-inaccessible.pdf · github
References
Related cases
IL-0120A daily scheduled OS update restarted systemd-networkd on cloud-hosted GPU nodes, which conflicted with OpenAI's networking agent and removed all routes, cutting capacity for ChatGPT and the APIOpenAI · 2025same root cause · shared Node operating system image
IL-0079A GKE node auto-upgrade to an ubuntu_containerd image with a kernel regression left kube-proxy unable to apply its ip6tables rules, so load balancer health checks failed and several clusters lost all ingress trafficAltinity · 2025same root cause · shared Node operating system image
IL-0404All BSEE SaaS customer pods on EKS crash-looped after Karpenter moved nodes to Bottlerocket v1.26.0, which broke JavaPortSwigger · 2024same root cause · shared Node operating system image
IL-0198An automatic Ubuntu security update restarted systemd-networkd, which flushed the IP rules Cilium relied on and cut more than 60 percent of Datadog's Kubernetes nodes off the network across regions and cloud providersDatadog · 2023same root cause · shared Node operating system image
IL-0144A systemd security update installed by unattended-upgrades lost the DNS configuration of Ubuntu 18.04 VMs, so AKS kubelets could not resolve registry names and pods failed with ImagePullBackOffMicrosoft Azure · 2022same root cause · shared Node operating system image
IL-0449Pods on Enigmo's new EKS managed node groups kept restarting or stuck Terminating and the nodes became unusableEnigmo · 2020same root cause · shared Node operating system image
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0501
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0501/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.