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

Cases2 cases

1 to 2 of 2

  1. Symptoms

    On 21 March 2025, between 21:10 and 21:41 UTC, part of the authentication and authorization requests to Twingate services failed with elevated error rates.

    Trigger

    Twingate saw anomalies in one of its GKE clusters and scaled down the deployments in that cluster to protect the rest of the system, which moved its traffic to the other clusters.

    Root cause
    Component
    Contributing factor
    Detection

    Twingate observed anomalies in one of its GKE clusters at the start of the incident.

    Remediation
    • Reintroduced capacity in the cluster that had been scaled down, so traffic was rebalanced across regions
    Action items
    • Keep working with the cloud provider to find the cause of the unexpected timeouts and of the cluster update's impact
    • Run deployments in all regions with the same number of replicas in the HPA configuration
    • Raise the maximum node counts of the cluster node autoscalers to leave more room to scale up
    • Configure the HPA to scale up faster
  2. Symptoms

    From 17 October 2024, packets through the vSwitch that joined Namespace's bare metal machines at one provider in the fra3 region were dropped at random. Retries in TCP, QUIC and the Namespace control plane hid most of it, but the SLO error budget for latency targets on key interactions began to burn.

    Trigger

    Random packet drops on the bare metal provider's vSwitch from 17 October 2024; for the second outage, a rate of Kubernetes changes that the slow NVMe on one control plane node could no longer keep up with.

    Root cause
    Component
    Contributing factor
    Detection

    SLO-based monitoring of latency targets showed the error budget burning while retries hid the individual packet drops.

    Remediation
    • diverted all customer traffic from fra3 to other regions
    • connected each provider machine to the zrh1 cluster over Wireguard instead of the vSwitch
    • repaved every fra3 machine with a new identity, certificates and encryption-at-rest keys, dropping regional caches to recover faster
    • cloned existing datasets in a more distributed way to speed up repaving the machines
    • added machines back to the new region in batches and returned the region to the compute pool
    • redirected workloads away from zrh1 during the second outage
    • cloned the failing control plane node's key state to a higher-capacity node that took over its role and IP address
    Action items
    • Credit all instances that ran during the outages back to customers
    • Build up backup regions and solutions so a similar event has options that do not affect customers
    Lessons

    Running hot with a delayed hardware delivery left no room to take a region out, so fixing a provider network fault turned into a global capacity shortage. After one outage the team was anchored on its cause and first looked for network problems in the second outage, which had a different cause: a control plane node whose disk could not keep up with the Kubernetes change rate.

Check your cluster for this

These 2 cases involve Cloud load balancer and Cluster autoscaler. 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