Incident Library
  • Root cause
  • Component
  • Symptom
  • Contributing factor
  • Case

Cases3 cases

1 to 3 of 3

  1. Symptoms

    While the customer was updating the AMIs of its Amazon EKS nodes across more than 30 clusters running Istio, sidecar-injected workloads in one cluster failed to start and showed CrashLoopBackOff.

    Trigger

    Updating the EKS node AMIs, which started hundreds of sidecar-injected pods at the same time.

    Root cause
    Component
    Contributing factor
    Detection

    Sidecar-injected workloads in the updated cluster failed to start and showed CrashLoopBackOff; the customer raised a Severity 1 ticket and a Tetrate engineer was reviewing logs within six minutes.

    Remediation
    • scaled istiod down temporarily from 40 replicas to 1 to slow Istio's internal processes and ease the load on the CA
    • deleted the CertificateSigningRequests stuck in the Approved, Failed state
    • restarted the pods gradually in a controlled order instead of all at once
    Lessons

    When a mesh hands certificate signing to an external CA, every pod start becomes a signing request to that CA, so a mass restart such as a node image rollout can overload it. Sidecars then abort under istiod's 10-second default CA timeout even though the CSRs are eventually signed. Restarting pods in controlled batches keeps the request rate within what the CA can handle. The author's point is that diagnosing such a failure means looking at the whole service mesh ecosystem, including its external dependencies, not only Istio.

  2. Symptoms

    From 08:00 US/Pacific on 12 March 2024, GKE GPU nodes running Container-Optimized OS (COS) that were newly created or recreated came up with GPU drivers that did not work, so workloads that used the GPUs could not run. GKE showed elevated errors.

    Root cause
    Component
    Contributing factor
    Detection

    The report does not say how Google detected the issue. Affected users saw "Failed to download GPU driver installer, status: 403 Forbidden" on the GPU node when installing the driver.

    Remediation
    • Halted automatic node recreations, which attempt GPU driver downloads, until the issue was mitigated
    • Worked with the driver partner to resolve access to the driver download bucket
    Lessons

    The status page report states no lessons or follow-up actions.

  3. Symptoms

    At 16:00 CEST a developer reported in the #ask-platform Slack channel that a deployment to the Prelive cluster was failing, and a second report followed at 16:06.

    Trigger

    Roughly two to three days earlier, the CentOS repository mirror was restructured and container-selinux-2.68-1.el7.noarch.rpm moved, which made the static download URL hardcoded in kops nodeup invalid.

    Root cause
    Component
    Contributing factor
    Detection

    Developers asked for help in the #ask-platform Slack channel because their deployments were failing.

    Remediation
    • downloaded the package by hand on the Prelive nodes so their bootstrap could finish
    • changed the cluster AMI from Amazon Linux 2 to Debian and applied it to all clusters
    Action items
    • Create an alert that shows when nodes cannot join the cluster, possibly from information the cluster autoscaler already has
    • Document the external dependencies of node startup and look for ways to reduce them
    • Change the AMI back to Amazon Linux 2 Minimal once kops fixes the issue
    • Document node troubleshooting better: what happens during bootstrap and where the logs are
    Lessons

    Applying cluster changes through kops and Jenkins worked well, and troubleshooting quickly showed that the failing deployments came from missing cluster capacity. What went wrong was that nobody noticed, over a long period, that some autoscaling groups held more worker instances than Kubernetes had nodes. The team was lucky that no large number of production spot instances was terminated during the problem and that it was noticed during office hours.

Check your cluster for this

These 3 cases involve Node operating system image and Node pool. 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