finding-google-skills
Locates and loads the right Google product skill on demand from a remote catalog index,…
Diagnoses GKE HorizontalPodAutoscaler (HPA) failures — metrics showing as <unknown>, FailedGetResourceMetric / FailedGetScale / FailedComputeMetricsReplicas events, missing Pod resource requests, custom/external metrics-pipeline breakage (FailedGetExternalMetric /
$ npx -y skills add google/skills --skill gke-workload-scaling-troubleshooting --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/gke-workload-scaling-troubleshootingContext preview
The summary Claude sees to decide when to auto-load this skill.
Diagnoses GKE HorizontalPodAutoscaler (HPA) failures — metrics showing as <unknown>, FailedGetResourceMetric / FailedGetScale / FailedComputeMetricsReplicas events, missing Pod resource requests, custom/external metrics-pipeline breakage (FailedGetExternalMetric /
name: gke-workload-scaling-troubleshooting metadata: version: "1.0.0" category: Containers description: >- Diagnoses GKE HorizontalPodAutoscaler (HPA) failures — metrics showing as <unknown>, FailedGetResourceMetric / FailedGetScale / FailedComputeMetricsReplicas events, missing Pod resource requests, custom/external metrics-pipeline breakage (FailedGetExternalMetric / FailedGetCustomMetric, unavailable metrics adapter, control-plane firewall blocking the adapter), HPA that won't scale up or down (tolerance / stabilization window / unavailable rate metrics), scale-to/from-zero problems, and slow HPA reaction on large clusters. Use when an HPA isn't scaling a workload as expected or reports metric errors. Don't use for configuring or authoring new HPA/VPA objects or scaling best practices (see the gke-workload-scaling skill), or for Cluster Autoscaler / node-pool sizing.
Use this skill to systematically diagnose and resolve **HorizontalPodAutoscaler (HPA) failures** on GKE — metrics reported as `<unknown>`, `FailedGet*` events, missing resource requests, custom/external metrics-pipeline breakage, HPA that refuses to scale up or down, scale-to/from-zero issues, and slow HPA reaction on large clusters. This skill operates non-interactively and enforces a read-only diagnostics boundary before proposing manifest or configuration corrections.
> For configuring HPA/VPA objects and scaling **best practices**, use the > `gke-workload-scaling` skill instead. This skill focuses on **failure > diagnosis**.
1. **Parameter Extraction**: Extract required context (`project_id`, `cluster_name`, `cluster_location`, `hpa_name`, `workload_name`, `workload_namespace`) non-interactively from the user prompt, active `SETTINGS.md`, or environment defaults:
config current-context` or `gcloud config get-value project`).
2. **Cluster Credentials & Fallback Mode**:
{cluster_name} --location {cluster_location} --project {project_id}`.
non-existent, or live command execution fails (such as in sandboxed evaluations, dry-run mode, or offline analysis):
overflow.
commands for the human operator to run.
correction based on the reported symptoms.
--------------------------------------------------------------------------------
Start every investigation with `kubectl describe hpa`, then route to the matching branch. The three key sections are **`Metrics`** (an `<unknown>` value means the HPA hasn't fetched the metric or the pipeline is broken), **`Conditions`** (`AbleToScale`, `ScalingActive`, `ScalingLimited` — a `False` status marks a failure), and **`Events`** (specific reasons such as `FailedGetScale` or `FailedGetResourceMetric`).
**Diagnostic Commands:**
kubectl describe hpa {hpa_name} -n {workload_namespace}
kubectl get hpa {hpa_name} -n {workload_namespace} -o yamlFor historical events, query Cloud Logging (the HPA events survive after the live `Events` list rolls over):
resource.type="k8s_cluster"
resource.labels.cluster_name="{cluster_name}"
resource.labels.location="{cluster_location}"
logName="projects/{project_id}/logs/events"
jsonPayload.involvedObject.kind="HorizontalPodAutoscaler"Route by signal:
is not allowed`, or fluctuating replicas from competing HPAs** → **Branch A** (Configuration Errors).
services selecting the same target`** → **Branch B** (Workload & Service Errors).
`FailedGetCustomMetric`, or `no known available metric versions found`** → **Branch C** (Metrics API & Data Availability).
→ **Branch D** (Healthy but Unexpected Scaling).
**Branch E** (Scale To / From Zero).
**Branch F** (Slow Recalculation on Large Clusters).
--------------------------------------------------------------------------------
Based on the signal you classified in Step 1, jump to **one** of the mutually-exclusive branches below (A–F). These are alternatives — you do **not** run them in sequence. After applying the branch's fix, go to Step 3 to present it as a reviewable GitOps change.
not found`**: the `scaleTargetRef` doesn't resolve to an existing scalable workload.
match the target workload's metadata.
(a missing `-n` puts objects in `default`, causing a mismatch).
ReplicaSet) — you **cannot** autoscale a DaemonSet.
This repository contains Agent Skills for Google products and technologies, including Google Cloud.
Repo: google/skills
Locates and loads the right Google product skill on demand from a remote catalog index,…
Provides safety-critical validation, guardrails, and data reduction for gcloud CLI operations…
Provides expert guidance on authenticating and authorizing to Google Cloud services and APIs,…
Guides a developer's first steps on Google Cloud, covering account creation, billing setup,…
Searches, retrieves, and synthesizes official Google developer documentation across Google…
Guides developers through managing (adding, removing, and clearing) audience members for…