Cases4 cases
1 to 4 of 4
IL-0463Secure Connect connectors timed out after a GKE control plane upgrade left Harness's internal load balancer unreachableHarness2026- Symptoms
On 12 May 2026, Harness customers who used Secure Connect saw git connector tests fail with connection timeouts and CI pipelines hang or fail, while connectors without Secure Connect kept working. Continuous Integration Enterprise Mac and Linux Cloud Builds in Prod 1, Prod 2 and Prod 3 were affected.
- Trigger
An automated GKE control plane upgrade on the cluster that hosts Harness's internal Secure Connect FRPS (Fast Reverse Proxy Server) infrastructure.
- Root cause
- Component
- Contributing factor
- –
- Remediation
- Ran a rollout restart of the FRPS deployment, which restored client connectivity to FRPS but not the lost IP
- Deleted and recreated the internal service frps-internal so GKE provisioned a new load balancer and IP
- Updated the Cloud DNS A record to the new load balancer IP
IL-0542Twingate authentication and authorization requests failed at higher rates after traffic moved onto a smaller GKE clusterTwingate2025- 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
IL-0014A GKE upgrade to a withdrawn version stalled on slow drains and a stuck node pool, then broke an ingress and confused the HPAloveholidays2019- Symptoms
On the evening of a long-overdue upgrade of a loveholidays production GKE cluster from 1.10.X to 1.12.5-gke.10, planned to take 2 to 2.5 hours, the master upgrade and the first two 7-node NodePools went smoothly. After that the NodePool upgrades slowed to a crawl. Each node is cordoned, drained and upgraded in turn. Even a 14-node cluster at about 5 minutes per node took over an hour, and with about 100 more nodes to go, some of them taking over 15 minutes to drain, the sequential drains were too slow to finish at a reasonable hour.
- Trigger
A manual upgrade of the GKE masters and NodePools from 1.10.X to 1.12.5-gke.10, two versions at once, on 19 March 2019; GKE's release notes of 14 March had already said that version was no longer available for new clusters or master upgrades because masters showed elevated error rates, but it could still be selected.
- Root cause
- Component
- Contributing factor
- Detection
The slow drains, zombie nodes and stuck NodePool were seen by the engineer running the upgrade; the broken Ingress was noticed after the upgrade and explained by Google support; the HPA problem was noticed the next day.
- Remediation
- drained the remaining NodePool nodes ahead of the upgrade with kubectl drain --ignore-daemonsets --delete-local-data
- deleted the zombie instances from the managed instance group with gcloud compute instance-groups managed delete-instances
- cancelled the stuck UPGRADE_NODES operation with gcloud beta container operations cancel
- used kubectl port-forward in place of the broken internal Ingresses
- scaled down the older of two active ReplicaSets, or triggered a dummy deployment, to bring the HPA back
- Action items
- Alert when a HorizontalPodAutoscaler is at 70% and at 100% of its capacity
- Alert when a deployment has had two active ReplicaSets for 30 minutes and for 60 minutes
- Re-evaluate termination grace periods that were set to arbitrary large values
- Read the GKE release notes before every cluster upgrade
- Use auto-upgrade in non-production environments, and manual cluster upgrades with automatic node upgrades in production
- Keep environments as identical as possible, including resource names
- Lessons
Read the release notes before upgrading: the target version had been withdrawn five days earlier. Drain time depends on pod configuration, so emptyDir volumes, long grace periods and missing disruption budgets turn a NodePool upgrade into hours. Pre-production only catches problems like the ingress bug if it matches production down to resource names. Auto-upgrades in non-production surface problems early, and a mix of manual cluster upgrades and automatic node upgrades in production keeps clusters current without much effort.
IL-0505kubectl logs failed on GKE with "No SSH tunnels currently open" and mybinder.org build logs stopped reaching usersBinder Project2019- Symptoms
On 20 February 2019 at 08:03 CET, `kubectl logs -f <pod>` stopped working for every pod in the mybinder.org cluster on GKE. Because pod logs could not be read, build logs were no longer forwarded to users, although the builds themselves ran normally.
- Root cause
- Component
- Contributing factor
- Remediation
- Cordoned node gke-prod-a-users-b921bb88-rd5d so it would be removed from the pool once empty
- Drained the node and removed it from the pool, after which kubectl logs worked again
- Action items
- Test that kubectl logs works and notify when it does not
- Add the command for retrieving API server logs to the SRE guide
- Describe in the SRE guide how to identify suspicious node networking status
- Lessons
The root cause was very difficult to identify, partly because it appears to sit in the Kubernetes master or the GKE service itself. Capturing `kubectl describe node` for the suspicious node would have allowed a comparison with healthy nodes, and a node that reports no ExternalIP or InternalIP in its status was likely a direct symptom of the problem and can be used as a diagnostic in the future.
These 4 cases involve GKE control plane and Cloud load balancer. 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
Cloud provider outage4 cases
- Component
- Contributing factor
- Organisation
IL-0463Secure Connect connectors timed out after a GKE control plane upgrade left Harness's internal load balancer unreachableHarness2026IL-0542Twingate authentication and authorization requests failed at higher rates after traffic moved onto a smaller GKE clusterTwingate2025IL-0014A GKE upgrade to a withdrawn version stalled on slow drains and a stuck node pool, then broke an ingress and confused the HPAloveholidays2019IL-0505kubectl logs failed on GKE with "No SSH tunnels currently open" and mybinder.org build logs stopped reaching usersBinder Project2019