Gke Storage
GoogleOfficialPublished by Google
- Skill
- Tool integration
- Cloud and DevOps
- Apache-2.0
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a reference for configuring storage in GKE clusters. It covers the use of built-in and custom StorageClasses, the creation of PersistentVolumeClaims for block and shared file storage, and the integration of GCS buckets via FUSE. It also outlines best practices for volume expansion, topology-aware scheduling, and capacity management for stateful workloads.
What it does
- Defines StorageClass configurations for different disk types and performance needs.
- Provides templates for PersistentVolumeClaims for block storage and shared Filestore access.
- Demonstrates how to mount GCS buckets as volumes using the GCS FUSE CSI driver.
- Explains how to perform volume expansion on existing PVCs.
- Offers guidance on capacity constraints and zonal scheduling for stateful workloads.
When to use it
- When you need to provision persistent storage for GKE workloads.
- When configuring StorageClasses for specific performance or replication requirements.
- When setting up shared file access across multiple pods using Filestore.
- When mounting GCS buckets directly into containers for data access.
- When planning for volume expansion or managing stateful workload capacity.
Advantages
- Standardizes storage configuration using Kubernetes manifests.
- Provides clear guidance on selecting appropriate disk types for different workloads.
- Includes instructions for enabling volume expansion to support dynamic storage growth.
- Offers specific patterns for topology-aware scheduling to avoid zonal capacity issues.
Usage examples
- “Create a PersistentVolumeClaim for a database using premium SSD storage.”
- Generates a YAML manifest for a PVC with access mode ReadWriteOnce and storageClassName set to premium-rwo.
- “How do I resize a persistent volume in GKE?”
- Provides the command to patch the PVC with a new storage request size, assuming allowVolumeExpansion is enabled.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/google/gke-storage/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip gke-storage.zip -d .agents/skills
Documentation by Google
GKE Storage
Routing Note: For Cloud Storage FUSE (
gcsfuse) mounts or the GKEgcsfuse.csi.storage.gke.ioCSI driver, opengoogle-cloud-storage-fuse/SKILL.md.
This reference covers storage configuration for GKE clusters including persistent disks, file storage, and cloud storage integration.
MCP Tools:
apply_k8s_manifest,get_k8s_resource,describe_k8s_resource,get_cluster
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-storage)"
and append agent-skills/1.0 (skill:gke-storage) to User-Agent headers.
Golden Path Storage Defaults
The golden path Autopilot config enables these CSI drivers:
| Driver | Golden Path | Access Mode | Use Case |
|---|---|---|---|
| Compute Engine | Enabled (default) | ReadWriteOnce | Block storage for |
| : Persistent Disk : : : databases, : | |||
| : CSI : : : single-pod workloads : | |||
| Google Cloud | Enabled | ReadWriteMany | Shared NFS for |
| : Filestore CSI : : : multi-pod access : | |||
| Cloud Storage | Enabled | ReadWriteMany / | Mount GCS buckets as |
| : FUSE CSI : : ReadOnlyMany : volumes : | |||
| Parallelstore | Enabled | ReadWriteMany | High-performance |
| : CSI : : : parallel file system : | |||
| Boot disk type | pd-balanced | N/A | Node boot disks |
StorageClasses
Default StorageClasses
GKE provides built-in StorageClasses:
| StorageClass | Disk Type | Use Case |
|---|---|---|
standard-rwo | pd-standard | Cost-effective, low IOPS |
premium-rwo | pd-ssd | High IOPS, databases |
standard-rwx | Filestore (Basic HDD) | Shared NFS |
premium-rwx | Filestore (Basic SSD) | Shared NFS, higher performance |
Custom StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-regional
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-ssd
replication-type: regional-pd # Replicate across 2 zones
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true # Always enable for productionPersistentVolumeClaims
Block Storage (ReadWriteOnce)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: premium-rwo
resources:
requests:
storage: 100GiShared File Storage (ReadWriteMany via Filestore)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: shared-data
spec:
accessModes:
- ReadWriteMany
storageClassName: standard-rwx
resources:
requests:
storage: 1Ti # Filestore minimum is 1 TiB for Basic tierGCS Bucket Mount (Cloud Storage FUSE)
Mount a GCS bucket as a volume without a PVC:
apiVersion: v1
kind: Pod
metadata:
name: gcs-reader
annotations:
gke-gcsfuse/volumes: "true"
spec:
containers:
- name: reader
image: busybox
command: ["ls", "/data"]
volumeMounts:
- name: gcs-bucket
mountPath: /data
volumes:
- name: gcs-bucket
csi:
driver: gcsfuse.csi.storage.gke.io
readOnly: true
volumeAttributes:
bucketName: <BUCKET_NAME>Requires Workload Identity for the pod's service account to have
storage.objectVieweron the bucket.
Volume Expansion
If allowVolumeExpansion: true is set on the StorageClass, resize by updating
the PVC:
# kubectl
kubectl patch pvc <PVC_NAME> -p '{"spec":{"resources":{"requests":{"storage":"200Gi"}}}}'# MCP (preferred)
patch_k8s_resource(parent="...", resourceType="persistentvolumeclaim", name="<PVC_NAME>",
patch='{"spec":{"resources":{"requests":{"storage":"200Gi"}}}}')Kubernetes automatically resizes the filesystem.
Stateful Storage & Capacity Constraints
When configuring storage for stateful workloads, keep the following capacity and scheduling constraints in mind:
Existing zonal PVs pin the workload to a zone: A Pod that uses an existing zonal PersistentVolume (for example, in
europe-north1-b) can only run in that zone. The cluster autoscaler can't work around a capacity shortage by adding nodes in another zone; any fallback must be in the same zone.Use automated disk type selection and topology-aware scheduling for new workloads: Use
volumeBindingMode: WaitForFirstConsumerso the volume is created in the zone where the Pod lands. When a ComputeClass mixes machine generations (for example, C4/N4 priority with N2 fallback), configure the StorageClass for automated disk type selection (parameters.type: dynamicwithpd-type: pd-balanced,hyperdisk-type: hyperdisk-balanced,disk-type-preference: hyperdisk-type, anduse-allowed-disk-topology: "true", GKE 1.35.3-gke.1290000+; oruse-allowed-disk-topology: "true"on GKE 1.34.1-gke.2541000+) so the autoscaler only picks nodes that support the disk type and new volumes get a compatible disk type per node.Same-zone PD-type swaps rarely help: Switching a same-zone fallback from
pd-ssdtopd-balancedis unlikely to resolve a zonal capacity shortage, because both can be affected by the same zonal constraints. Prefer a fallback to a Hyperdisk-capable machine series (for example, C3 or N4) withhyperdisk-balanced.Check Hyperdisk quotas first: Hyperdisk quotas (for example,
HDB-TOTAL-GB, throughput, and IOPS) are separate from Persistent Disk quotas. Verify the regional limits before recommending a Hyperdisk Balanced fallback.
Best Practices
Always enable volume expansion: Set
allowVolumeExpansion: trueon all StorageClassesUse regional PDs for production:
replication-type: regional-pdreplicates across 2 zones for HAUse
WaitForFirstConsumer: Ensures the PV is provisioned in the same zone as the podChoose the right disk type:
pd-ssdfor databases,pd-balanced(golden path default) for general use,pd-standardfor cold storageUse Filestore for shared access: When multiple pods need to read/write the same files
Use GCS FUSE for data pipelines: Mount buckets directly for ML training data, logs, etc.
Back up PVCs: Use Backup for GKE (see the
gke-backup-drskill) to protect persistent data
Files
- ATTRIBUTION.mdAdded by AutoGineer840 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md7.3 KiB
- references/attribution.md1.8 KiB
ATTRIBUTION.md
Attribution
This folder is an unmodified copy of the Agent Skill "gke-storage", distributed by AutoGineer (https://autogineer.com/agent-skills).
Commit: 2194d3b8b1f31975fef2f1a0ae6b9ab55bd7ceee
Published by: Google (https://github.com/google)
Publisher: Google (https://github.com/google)
Licence: Apache License 2.0 (https://github.com/google/skills/blob/2194d3b8b1f31975fef2f1a0ae6b9ab55bd7ceee/LICENSE)
Licence evidence: repository licence LICENSE
Retrieved: 2026-11-07
The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.
Files added by AutoGineer
ATTRIBUTION.md: this file, written by AutoGineer
LICENSE: copied from LICENSE
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
No issues found by our static scan· No issues found
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
- Publisher
- Google (Official)
- Source
- google/skills · skills/cloud/gke-storage · 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.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download gke-storage.zip