Cases3 cases
1 to 3 of 3
IL-0112The daily node rollover put DFDS's EKS nodes on an AMI later recalled for a kernel issue, causing "PLEG is not healthy" NodeNotReady flaps and pod network timeoutsDFDS2022- Symptoms
On 2022-10-31 a planned upgrade of the vpc-cni EKS add-on, started from the deployment pipeline at 13:45 UTC, timed out at 14:10. Only about 10 of the 45 aws-node pods had upgraded, 5 were stuck in Terminating and the other 30 had not been attempted.
- Trigger
At 07:30 UTC on 2022-10-31 the daily node rollover replaced the existing nodes with nodes built from AMI v20221027, the latest AWS EKS node AMI, released on 2022-10-29 and later recalled because of a kernel issue.
- Root cause
- Component
- Contributing factor
- Detection
The team noticed nodes flapping between NodeNotReady and NodeReady ("KubeletNotReady PLEG is not healthy") at 14:30 UTC while watching the stalled vpc-cni upgrade, about seven hours after the rollover. Time to detection was 7 hours. Alerting did not catch the NodeNotReady events or the socket growth.
- Remediation
- cordoned, drained and deleted 15 stuck nodes one at a time to complete the vpc-cni upgrade
- changed the Terraform infrastructure-modules so a specific AMI could be set
- rolled the EC2 Auto Scaling group launch configuration back to the previous known good AMI through the pipeline
- Action items
- Reach out to teams with suggestions about readiness and liveness probes
- Create a dashboard for readiness and liveness probe coverage
- Write a wiki article on readiness and liveness probes and their usefulness
- Modify infrastructure-modules to allow specifying a particular AMI
- Schedule a discussion on whether to take the latest AMI immediately and how to test new AMIs before they are deployed
- Implement alerting on abnormal NodeNotReady events and on increased socket use
- Create a learning path for Kubernetes within the team
- Collect logs from nodes centrally
- Create a Prometheus exporter that retrieves the latest available AMI, with a dashboard and alerts
- Lessons
When a new node AMI has just been rolled out, upgrading other cluster components on the same day makes it hard to tell which change is causing trouble; here the vpc-cni upgrade on the same day confused matters. Taking the latest AMI automatically with no way to pin one meant a rollback first needed a Terraform change. The team also concluded that it needs better communication paths with application teams during incidents.
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 Azure2022- Symptoms
From 06:00 UTC on 30 August 2022, Azure VMs running Ubuntu 18.04 (bionic) with unattended-upgrades enabled began failing DNS resolution and losing network connectivity. Several Azure teams, among them the AKS and Azure Container Apps teams, were alerted by production alerts shortly after the update packages were published.
- Trigger
Unattended-upgrades on Ubuntu 18.04 VMs installed a Canonical security update published at 06:00 UTC on 30 August 2022, including systemd version 237-3ubuntu10.54.
- Root cause
- Component
- Contributing factor
- Detection
Several Azure teams, including AKS and Azure Container Apps, were alerted by production alerts shortly after the packages were published; incoming support cases then confirmed which Ubuntu versions were affected.
- Remediation
- pointed customers to Canonical's description of the systemd bug and its fix
- recommended rebooting affected VMs or running a template script that repairs DNS resolution
- built automatic detection and remediation for AKS nodes and rolled it out across all regions
- mitigated the remaining AKS customers manually through support
- Action items
- Review the process that lets critical security updates bypass Safe Deployment Practices
- Improve monitoring of the AKS data plane to alert on an uptick of errors
- Review AKS monitoring algorithms so that similar VM errors are detected and alerted on
- Establish an improved escalation path to Canonical during outages and add it to internal Technical Service Guides
- AKS takes full control of the node security patch mechanism, with additional testing and controlled release of patches (estimated December 2022)
- Work with Canonical to run dedicated tests on proposed packages before they are published for Azure IaaS VMs
- Establish a process with Canonical to close the testing gap for the upgrade scenario (estimated March 2023)
- Give AKS customers maintenance window control and environment staging for these patches (estimated December 2023)
- Lessons
Security patches applied automatically by unattended-upgrades, once a day by default, and outside Azure's Safe Deployment Practices reached Ubuntu 18.04 VMs in every Azure region, so one systemd regression became a DNS outage across Azure. On AKS, lost node DNS showed up as image pull failures such as ImagePullBackoff, because kubelet could not resolve the registry. Azure plans to put node security patching under AKS's control with testing and controlled release; customers can use automatic node image upgrade for AKS, or automatic VM guest patching for VMs, instead of unattended-upgrades.
IL-0008An unresponsive OPA validating webhook crash-looped the API server during a GKE master upgrade, and node auto-repair then recreated every nodeJetstack2019- Symptoms
Jetstack was upgrading the master of a development cluster that many teams use to test their apps during the working day, a regional Google Kubernetes Engine (GKE) cluster in europe-west1. The upgrade ran through Jetstack's GKE Terraform pipeline and did not finish before the 20-minute Terraform timeout, while the GKE console still showed the cluster as upgrading.
- Trigger
A planned master upgrade of the shared development cluster. The same upgrade had been done on another pre-production environment earlier that day, and no API downtime was expected.
- Root cause
- Component
- Contributing factor
- Detection
The first sign was the master upgrade missing the 20-minute Terraform timeout; re-running the pipeline returned the kube-apiserver unhealthy error. The cause was identified with the help of Google Support.
- Remediation
- Deleted the OPA ValidatingAdmissionWebhook resource during a window of API server access
- Action items
- Limit the OPA webhook to the namespaces where the policy applies and development teams have access
- Enable the webhook only for Ingress and Service resources, the only resources the policy validates
- Add a liveness probe so OPA is restarted when it stops responding, and update the OPA documentation
- Follow the open upstream Kubernetes issue about this behaviour
- Lessons
With alerting on API server response times, the team might have seen CREATE and UPDATE requests slow down across the board as soon as the OPA-backed webhook was first deployed. Every workload needs probes: OPA looked so simple to deploy that the team skipped the Helm chart, which adds a livenessProbe for the admission controller containers among other adjustments to the tutorial configuration. Others had hit the same problem, and an upstream issue to improve it was still open.
These 3 cases involve kubelet and Node operating system image. 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 cause3
Software defect1 case
- Contributing factor
- Organisation
Breaking change in an upgrade1 case
- Component
- Contributing factor
- Organisation
Configuration change1 case
- Contributing factor
- Organisation