In Google Kubernetes Engine (GKE) versione 1.24 o successive, puoi utilizzare la funzionalità di espansione del volume di Kubernetes per modificare la capacità di un volume permanente dopo la sua creazione.
L'espansione del volume presenta i seguenti prerequisiti:
Se il volume di cui vuoi ridimensionare le dimensioni è gestito da un driver CSI:
Assicurati che la versione del cluster GKE sia 1.16 o successiva.
Se il cluster ha pool di nodi Windows, assicurati che la versione del cluster GKE sia 1.18 o successiva.
Se utilizzi il driver CSI Filestore GKE gestito, la versione del cluster deve essere 1.21 o successiva.
Consulta la documentazione del fornitore di spazio di archiviazione per verificare che il driver CSI supporti
l'espansione del volume. Il driver CSI per il disco permanente di Compute Engine e il
driver CSI per Filestore supportano l'espansione del volume.
Se il volume che vuoi ridimensionare è gestito da un plug-in del volume in-tree:
Assicurati che la versione del cluster GKE sia 1.11 o successiva. Sebbene
le versioni del cluster GKE 1.11-1.14 supportino l'espansione dei volumi
gestiti dai plug-in in-tree, richiedono che tutti i pod che utilizzano il volume vengano
terminati e ricreati per completare l'espansione del volume.
Controlla la documentazione del fornitore dello spazio di archiviazione per verificare che il plug-in del volume in-tree supporti l'espansione del volume (il plug-in in-tree del disco permanente Compute Engine lo fa).
Non puoi utilizzare l'espansione del volume quando utilizzi la modalità di accesso
ReadOnlyMany.
Utilizzo dell'espansione del volume
Per utilizzare l'espansione del volume, esegui le seguenti attività:
Aggiungi allowVolumeExpansion: true a StorageClass, se StorageClass
non ha già il campo. Ad esempio:
Gestione delle espansioni dei volumi in StatefulSet
Se devi aumentare le dimensioni dei volumi utilizzati dai pod all'interno di un
StatefulSet
in Kubernetes, devi modificare il campo spec.resources.requests.storage
dei PersistentVolumeClaim (PVC) associati ai pod. Il tentativo di
modificare il campo volumeClaimTemplates direttamente nell'oggetto StatefulSet
causerà un errore.
Inoltre, se aumenti il numero di repliche dello StatefulSet,
verranno comunque create PVC delle dimensioni originali. Per modificare definitivamente le dimensioni dei volumi di cui è stato eseguito il provisioning per i pod gestiti da StatefulSet, devi eliminare e ricreare l'oggetto StatefulSet con le dimensioni aggiornate specificate nel campo volumeClaimTemplates.
Puoi eseguire i seguenti passaggi per mantenere i pod originali attivi
durante la regolazione di StatefulSet per eseguire il provisioning delle repliche future con la
nuova dimensione del volume.
Salva le modifiche e chiudi l'editor di testo. Attendi che Kubernetes aggiorni
PersistentVolumeClaim con le modifiche.
Rimuovi l'oggetto StatefulSet dal cluster mantenendo i pod
in esecuzione come pod autonomi:
kubectldeletestsstatefulset-name--cascade=orphan
Modifica le dimensioni di archiviazione del nuovo volume nel file sts-backup.yaml
salvato localmente, in particolare il valore di spec.volumeClaimTemplates.spec.resources.requests.storage
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-01 UTC."],[],[],null,["# Using volume expansion\n\n[Autopilot](/kubernetes-engine/docs/concepts/autopilot-overview) [Standard](/kubernetes-engine/docs/concepts/choose-cluster-mode)\n\n*** ** * ** ***\n\nIn Google Kubernetes Engine (GKE) version 1.24 or later, you can use the Kubernetes\nvolume expansion feature to change a persistent volume's capacity after\nits creation.\n\nFor more information on volume expansion, see the open source\n[Kubernetes documentation](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims).\n\nPrerequisites\n-------------\n\nVolume expansion has the following prerequisites:\n\n- If the volume you want to resize is managed by a CSI Driver:\n - Ensure the GKE cluster version is 1.16 or later. If the cluster has Windows node pools, ensure the GKE cluster version is 1.18 or later. If you are using the managed [GKE Filestore CSI driver](/kubernetes-engine/docs/how-to/persistent-volumes/filestore-csi-driver), the cluster version must be 1.21 or later.\n - Check your storage vendor's documentation to verify your CSI driver supports volume expansion. The Compute Engine Persistent Disk CSI driver and the Filestore CSI driver support volume expansion.\n- If the volume you want to resize is managed by an in-tree volume plugin:\n - Ensure the GKE cluster version is 1.11 or greater. While GKE cluster versions 1.11-1.14 support expansion of volumes managed by in-tree plugins, they require all Pods using the volume to be terminated and recreated to complete volume expansion.\n - Check your storage vendor's documentation to verify your in-tree volume plugin supports volume expansion (the Compute Engine Persistent Disk in-tree plugin does).\n- You can't use volume expansion when using [`ReadOnlyMany` access mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes).\n\nUsing volume expansion\n----------------------\n\n| **Note:** To avoid errors using volume expansion, ensure that you complete the steps in this section in the right sequence.\n\nTo use volume expansion, perform the following tasks:\n\n1. Add `allowVolumeExpansion: true` to your StorageClass, if your StorageClass\n doesn't already have the field. For example:\n\n apiVersion: storage.k8s.io/v1\n kind: StorageClass\n metadata:\n name: standard\n provisioner: my.driver\n ...\n allowVolumeExpansion: true\n\n2. Request a change in volume capacity by editing your PersistentVolumeClaim's\n `spec.resources.requests.storage` field.\n\n kubectl edit pvc \u003cvar translate=\"no\"\u003epvc-name\u003c/var\u003e\n\n For example, you could change the\n following PVC from having a 30 gibibyte (GiB) disk to having a 40 GiB disk.\n\n Before editing: \n\n # pvc-demo.yaml\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n name: pvc-demo\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 30Gi\n\n After editing: \n\n # pvc-demo.yaml\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n name: pvc-demo\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 40Gi\n\n3. Verify the change by viewing PVC. To view your PVC, run the following command:\n\n kubectl get pvc \u003cvar translate=\"no\"\u003epvc-name\u003c/var\u003e -o yaml\n\n Eventually, you should see the new volume in the `status.capacity` field.\n For example: \n\n ...\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 40Gi\n storageClassName: standard\n volumeMode: Filesystem\n volumeName: pvc-078b7484-cc8d-4077-9bcb-2c17d8d4550c\n status:\n accessModes:\n - ReadWriteOnce\n capacity:\n storage: 40Gi\n ...\n\n| **Note:** Don't edit the capacity of the PersistentVolume object directly. If you edit the capacity of a PersistentVolume, and then change the size of the corresponding PersistentVolumeClaim to the same value, volume expansion won't happen. Kubernetes will assume that the backing volume was manually resized, and that no expansion is required.\n\nIf the capacity of a PersistentVolume is modified directly, this could lead the\ncontainer file system to be incorrect. To fix these issues, see\n[troubleshoot volume expansion changes](/kubernetes-engine/docs/troubleshooting/troubleshooting-gke-storage#volume_expansion_changes_not_reflecting_in_the_container_filesystem).\n\nManaging volume expansions in StatefulSets\n------------------------------------------\n\nIf you need to increase the size of volumes used by Pods within a\n[StatefulSet](https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#creating-a-statefulset)\nin Kubernetes, you should adjust the `spec.resources.requests.storage` field\nof the PersistentVolumeClaims (PVCs) associated with the Pods. Attempting to\nmodify the `volumeClaimTemplates` field directly in the StatefulSet\nobject will cause an error.\n\nAdditionally, if you increase the replica count of the StatefulSet,\nit will still create PVCs of the original size. To permanently change the\nsize of the volumes provisioned for the Pods managed by the StatefulSet,\nyou must delete and recreate the StatefulSet object with the updated size\nthat's specified in the `volumeClaimTemplates` field.\n\nYou can perform the following steps in order to keep the original Pods up and\nrunning while adjusting the StatefulSet to provision future replicas with the\nnew volume size.\n\n1. Save the existing StatefulSet to a file:\n\n kubectl get StatefulSet \u003cvar translate=\"no\"\u003estatefulset-name\u003c/var\u003e -o yaml \u003e sts-backup.yaml\n\n2. For each PersistentVolumeClaim in the StatefulSet, open the\n `PersistentVolumeClaim` object in a text editor:\n\n kubectl edit pvc \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e\n\n3. Update the `spec.resources.requests.storage` field to the new volume size,\n like in the following example:\n\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n # lines omitted for clarity\n spec:\n resources:\n requests:\n storage: 14Gi\n # lines omitted for clarity\n\n For details, see [Expanding Persistent Volumes Claims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims).\n4. Save your edits and close the text editor. Wait for Kubernetes to update the\n PersistentVolumeClaim with your changes.\n\n5. Remove the StatefulSet object from the cluster while keeping the Pods\n running as standalone Pods:\n\n kubectl delete sts \u003cvar translate=\"no\"\u003estatefulset-name\u003c/var\u003e --cascade=orphan\n\n6. Edit the new volume storage size in the locally saved `sts-backup.yaml`\n file, specifically the value of `spec.volumeClaimTemplates.spec.resources.requests.storage`\n\n7. Recreate the StatefulSet back in the cluster:\n\n kubectl apply -f sts-backup.yaml\n\nWhat's next\n-----------\n\n- Learn more about [volumes](https://kubernetes.io/docs/concepts/storage/volumes/).\n- Learn more about [Resizing Persistent Volumes using Kubernetes](https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/)."]]