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
Golden Path Storage Defaults
The golden path Autopilot config enables these CSI drivers:
StorageClasses
Default StorageClasses
GKE provides built-in StorageClasses:
Custom StorageClass
PersistentVolumeClaims
Block Storage (ReadWriteOnce)
Shared File Storage (ReadWriteMany via Filestore)
GCS Bucket Mount (Cloud Storage FUSE)
Mount a GCS bucket as a volume without a PVC:
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:
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 StorageClasses - Use regional PDs for production:
replication-type: regional-pdreplicates across 2 zones for HA - Use
WaitForFirstConsumer: Ensures the PV is provisioned in the same zone as the pod - Choose the right disk type:
pd-ssdfor databases,pd-balanced(golden path default) for general use,pd-standardfor cold storage - Use 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


