Generated banner for Gke AI Troubleshooting Tpu Dynamic Slices Monitoring
Generated logo for Gke AI Troubleshooting Tpu Dynamic Slices Monitoring

Gke AI Troubleshooting Tpu Dynamic Slices Monitoring

GoogleOfficialPublished by Google

  • Skill
  • Tool integration
  • Cloud and DevOps
  • Apache-2.0
  • Low risk
  • Has scripts

From the author

Monitors, troubleshoots, and manages GKE TPU Dynamic Slices custom resources. Use when checking TPU slice lifecycle states, troubleshooting slice provisioning failures, validating single-slice or multi-slice (JobSet) workload manifests, or safely patching stuck finalizers and disabling the slice controller. Don't use for generic GKE cluster node pool creation or standard non-TPU workload management (use gke-basics or gke-cluster-creation instead).
— the description by Google

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to monitoring and managing GKE TPU Dynamic Slices. It enables users to inspect slice lifecycle states, diagnose provisioning failures, validate workload manifests for single-slice or multi-slice (JobSet) deployments, and perform advanced administrative tasks like clearing stuck finalizers or disabling the slice controller.

What it does

  • Inspects TPU slice status and lifecycle conditions using kubectl.
  • Diagnoses common provisioning failures like topology mismatches or node allocation issues.
  • Validates workload manifest annotations and node selectors for TPU compatibility.
  • Provides safe procedures for removing stuck finalizers on deactivating slices.
  • Guides the process for disabling the GKE slice controller and cleaning up associated resources.

When to use it

  • When a TPU slice is stuck in a FAILED or DEACTIVATING state.
  • When troubleshooting why a TPU workload fails to schedule or provision.
  • When verifying if a JobSet or Pod manifest correctly targets a dynamic slice.
  • When performing maintenance to disable dynamic slicing in a GKE cluster.

Advantages

  • Standardizes the diagnostic process for complex TPU slice lifecycle issues.
  • Reduces manual effort in identifying configuration errors in workload manifests.
  • Provides clear, safety-conscious workflows for high-risk operations like patching finalizers.
  • Ensures consistent attribution for cloud operations as required by the environment.

Usage examples

“Why is my TPU slice 'test-slice' stuck in FAILED?”
The agent will run 'kubectl describe slice test-slice', analyze the Status.Conditions, and identify if the failure is due to topology mismatches or node allocation issues.
“How do I force delete a slice that is stuck in DEACTIVATING?”
The agent will explain the risk of removing finalizers, provide the specific JSON patch command, and request explicit user confirmation before proceeding.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/google/gke-ai-troubleshooting-tpu-dynamic-slices-monitoring/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip gke-ai-troubleshooting-tpu-dynamic-slices-monitoring.zip -d .agents/skills

Documentation by Google

GKE TPU Dynamic Slices Monitoring & Management

Monitors the status of TPU Slice custom resources, troubleshoots provisioning failures, validates workload manifests on dynamic slices, and performs cleanups.

Attribution

MUST READ: Before executing any gcloud, REST API, or MCP command, you MUST read Usage Attribution. For commands executed directly in the terminal (never in generated scripts, Terraform, or user code), prefix gcloud with CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-ai-troubleshooting-tpu-dynamic-slices-monitoring)" and append agent-skills/1.0 (skill:gke-ai-troubleshooting-tpu-dynamic-slices-monitoring) to User-Agent headers.

Prerequisites

  • Cloud Logging enabled for the project.

  • kubectl and gcloud CLIs configured to access the GKE cluster.

Diagnostic Workflow

Step 0: Context Acquisition & Time Window Definition

Gather project, cluster, and slice context using cluster tools or the following parameters:

  • Project ID: {project_id} (e.g., my-gcp-project)

  • Cluster Name: {cluster_name} (e.g., tpu-cluster)

  • Region/Zone: {location} (e.g., us-central1-a)

  • Slice Name: {slice_name} (e.g., test-slice)

  • Issue Time: {timestamp} (Optional; default to the last 30 minutes window [T - 30m] to [T + 30m])


Step 1: Describe the Slice Custom Resource [Low Risk]

When asked to inspect, troubleshoot, or check a slice status, immediately execute kubectl describe slice {slice_name} using available cluster tools to perform the inspection. Parse the resulting Status.Conditions output against the condition table below to diagnose the exact state and provide concrete recommendations.

  • Command:

    kubectl describe slice {slice_name}
State & Reason Analysis

Analyze the Status.Conditions (especially Type: Ready and its Reason and Status):

Lifecycle State / ReasonMeaningRecommended Action
SliceNotCreatedGKE Slice Controller is initializing the slice and performing resource checks.Wait a few minutes and re-check slice status.
SliceCreationFailedPrerequisites validation failed (e.g., selected nodes don't exist, nodes are already used by another slice, or the topology doesn't match the number of partitions).Verify selected nodes exist, are unallocated, and topology matches partition count.
ACTIVATINGGKE is actively forming and provisioning the TPU slice.Monitor node provisioning.
ACTIVEThe TPU slice is successfully formed and ready to host workloads.Proceed to deploy or check workloads.
ACTIVE_DEGRADEDThe slice is usable, but one or more sub-blocks are degraded.Monitor workload logs for interconnect or device errors. Check faulty node VMs.
FAILEDGKE failed to form the TPU slice (e.g., selected nodes are not part of the same reservation block).Ensure all selected nodes belong to the same reservation block.
DEACTIVATINGThe slice is dismantling (triggered by user deletion or a critical systemic failure).Wait for dismantling to finish, or patch finalizers if stuck.
INCOMPLETEThe terminal phase before the Slice CR is deleted from the cluster.No action required; the resource will be removed shortly.
Provisioning Failure Troubleshooting Checklist

When investigating slice creation or provisioning failures (SliceCreationFailed or FAILED), perform the following verification steps:

  1. Node Existence & Allocation Check: Verify that the selected TPU nodes exist in the cluster and are not already allocated to another slice (kubectl get nodes -l cloud.google.com/gke-tpu-slice, kubectl get slice -A).

  2. Topology Alignment: Confirm that the partition count matches the requested topology dimensions (e.g. topology 2x2 requires 4 nodes).

  3. Reservation Block Alignment Check: Confirm that all selected TPU nodes belong to the same reservation and reservation block.


Step 2: Verify Workload Specification [Low Risk]

Ensure workload manifests are configured correctly to target the dynamic slice.

1. Single-Slice Workload Requirements

Check that the Pod template contains the following annotations and selectors:

  • Annotations:

    • cloud.google.com/gke-tpu-slice-topology: "{topology}" (e.g., "4x4x4")

  • NodeSelector:

    • cloud.google.com/gke-tpu-topology: "{topology}" (e.g., "4x4x4")

    • cloud.google.com/gke-tpu-accelerator: "{accelerator_type}" (e.g., "tpu7x")

    • cloud.google.com/gke-tpu-slice: "{slice_name}" (e.g., "test-slice")

2. Multi-Slice (JobSet) Workload Requirements

If deploying a multi-slice JobSet, verify:

  • JobSet Annotation:

    • alpha.jobset.sigs.k8s.io/exclusive-topology: cloud.google.com/gke-tpu-slice

  • Pod Template Annotations:

    • cloud.google.com/gke-tpu-slice-topology: "{topology}"

  • Pod Template NodeSelector:

    • cloud.google.com/gke-tpu-topology: "{topology}"

    • cloud.google.com/gke-tpu-accelerator: "{accelerator_type}"

    • Note: Do NOT manually specify cloud.google.com/gke-tpu-slice in the nodeSelector; JobSet handles slice assignment automatically.


Resolution & Management Workflow

Resolution 1: Force Delete a Stuck Slice [High Risk]

If a slice is stuck in DEACTIVATING or deletion hangs indefinitely due to stuck finalizers:

  1. Identify Cause: Explain that finalizers on the slice resource (metadata.finalizers) are preventing Kubernetes from completing resource deletion.

  2. Propose Resolution: Propose removing finalizers from the metadata path (/metadata/finalizers) using a JSON patch operation:

    kubectl patch slice {slice_name} --type json -p='[{"op": "remove", "path": "/metadata/finalizers"}]'
  3. Provide Warning: Explicitly warn the user that removing finalizers bypasses standard controller dismantling and may leave underlying VM, network, or accelerator resources uncleaned or orphaned.

  4. CRITICAL SAFETY MANDATE: The response MUST explicitly ask the user for confirmation (e.g. "Removing finalizers on /metadata/finalizers via JSON patch is a high-risk operation that may leave orphaned resources. Do you confirm you want to apply this patch to slice {slice_name}?") and pause for user confirmation before applying or executing the patch.


Resolution 2: Disable and Clean Up Slice Controller [High Risk]

If dynamic slicing needs to be disabled:

  1. Check for existing Slices:

    kubectl get slice -A

    Ensure all slices are deleted before disabling the controller.

  2. Disable Slice Controller via gcloud:

    gcloud container clusters update {cluster_name} \
        --location={location} \
        --no-enable-slice-controller
  3. Delete the Slice CRD:

    kubectl delete crd slices.accelerator.gke.io
  4. Clean up Node Labels: Remove GKE TPU Slice labels from all nodes in the cluster:

    kubectl label nodes --all cloud.google.com/gke-tpu-slice- cloud.google.com/gke-tpu-slice-topology-
  • Safety Rule: Propose the exact commands and confirm before executing disabling or destructive cleanup steps.

Files

references/attribution.md

Usage Attribution

MUST READ: Before executing any gcloud, REST API, or MCP command with this skill, follow these usage attribution instructions. Tag every command you execute directly in the terminal so usage can be attributed. The tag identifies only the skill and its version; it carries no user data.

  • gcloud CLI Commands: Prefix every gcloud invocation, whatever the subcommand, with the metrics environment variable. Set it inline on each command because shell state may not persist between commands:

    CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-ai-troubleshooting-tpu-dynamic-slices-monitoring)" \
    gcloud <command> [flags]

    Do not use gcloud config set for this: it would persist beyond the current task and mislabel unrelated usage.

  • Direct HTTP, REST, and MCP Requests: On direct HTTP calls to Google Cloud APIs (for example with curl) or HTTP requests to a remote MCP server, include agent-skills/1.0 (skill:gke-ai-troubleshooting-tpu-dynamic-slices-monitoring) in the User-Agent header. If a User-Agent header is already specified, append this string to the end of it rather than overwriting existing User-Agent data — the collection pipeline parses the agent-skills/<version> and skill:<name> tokens, so any rewording breaks attribution:

    User-Agent: <existing_user_agent> agent-skills/1.0 (skill:gke-ai-troubleshooting-tpu-dynamic-slices-monitoring)
  • Constraint for Generated Code: The tracking prefix is strictly for commands you execute directly in the terminal. Do NOT include this tracking prefix in generated scripts, Terraform templates, or code provided to the user for their own repositories.

  • User Opt-Out: If the user asks to disable or remove tracking or attribution tags, omit the CLOUDSDK_METRICS_REQUEST_ATTRIBUTION variable and custom User-Agent suffix from all commands.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs a command-line tool, Needs Node.js

Security

What our scanner noticed· Low risk

  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Google
Publisher
Google (Official)
Source
google/skills · skills/cloud/gke-ai-troubleshooting-tpu-dynamic-slices-monitoring · commit 2194d3b
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Google or Google.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download gke-ai-troubleshooting-tpu-dynamic-slices-monitoring.zip