# Node pool upgrade failed: Resource exhausted: insufficient CPU available in zone us-central1-a

- **ID:** `cloud/gcp-gke-node-pool-upgrade-failed`
- **Domain:** cloud
- **Category:** resource_error
- **Error Code:** `RESOURCE_EXHAUSTED`
- **Verification:** ai_generated
- **Fix Rate:** 82%

## Root Cause

GKE cannot allocate new nodes during upgrade because the specified zone has insufficient CPU quota or capacity to host the additional temporary nodes required for the rolling update.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| GKE: 1.28.5-gke.1500 | active | — | — |
| Kubernetes: 1.28 | active | — | — |
| Compute Engine: API v1 | active | — | — |

## Workarounds

1. **Request a quota increase in the GCP Console for Compute Engine CPUs in the affected region: IAM & Admin > Quotas > 'CPUs' > Edit Quota.** (90% success)
   ```
   Request a quota increase in the GCP Console for Compute Engine CPUs in the affected region: IAM & Admin > Quotas > 'CPUs' > Edit Quota.
   ```
2. **Use a surge upgrade with a different zone by adding a node pool in a zone with available capacity, then migrate workloads.** (85% success)
   ```
   Use a surge upgrade with a different zone by adding a node pool in a zone with available capacity, then migrate workloads.
   ```
3. **Temporarily reduce the number of replicas in the cluster to free up quota, then perform the upgrade.** (80% success)
   ```
   Temporarily reduce the number of replicas in the cluster to free up quota, then perform the upgrade.
   ```

## Dead Ends

- **** — More nodes consume more quota, worsening the exhaustion; the upgrade needs additional quota for temporary nodes, not larger pool. (85% fail)
- **** — Deletion frees quota but the new pool creation may still fail if zone capacity is insufficient at that time. (60% fail)
- **** — Smaller instances may not meet workload requirements; also, the zone may still lack capacity for any instance type. (70% fail)
