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.
Per ulteriori informazioni sull'espansione del volume, consulta la documentazione open source di Kubernetes.
Prerequisiti
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 successive.
Se il cluster ha pool di nodi Windows, assicurati che la versione del cluster GKE sia 1.18 o successive.
Se utilizzi il driver CSI Filestore GKE gestito
, la versione del cluster deve essere 1.21 o successive.
Se utilizzi il driver CSI Managed Lustre, la versione del cluster deve essere
1.35.0-gke.2331000o successive. - 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, il driver CSI Filestore e il driver CSI Managed Lustre supportano l'espansione del volume.
- Assicurati che la versione del cluster GKE sia 1.16 o successive.
Se il cluster ha pool di nodi Windows, assicurati che la versione del cluster GKE sia 1.18 o successive.
Se utilizzi il driver CSI Filestore GKE gestito
, la versione del cluster deve essere 1.21 o successive.
Se utilizzi il driver CSI Managed Lustre, la versione del cluster deve essere
- Se il volume di cui vuoi ridimensionare le dimensioni è gestito da un plug-in del volume in-tree:
- Assicurati che la versione del cluster GKE sia 1.11 o successive. 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.
- Consulta la documentazione del fornitore di spazio di archiviazione per verificare che il plug-in del volume in-tree supporti l'espansione del volume (il plug-in in-tree per il disco permanente di Compute Engine lo supporta).
- Non puoi utilizzare l'espansione del volume quando utilizzi
ReadOnlyManymodalità di accesso.
Utilizzo dell'espansione del volume
Per utilizzare l'espansione del volume, esegui le seguenti attività:
Aggiungi
allowVolumeExpansion: truealla StorageClass, se non ha già il campo. Ad esempio:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard provisioner: my.driver ... allowVolumeExpansion: trueRichiedi una modifica della capacità del volume modificando il campo
spec.resources.requests.storagedi PersistentVolumeClaim.kubectl edit pvc pvc-nameAd esempio, potresti modificare la seguente PVC in modo che il disco da 30 gibibyte (GiB) diventi un disco da 40 GiB.
Prima della modifica:
# pvc-demo.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-demo spec: accessModes: - ReadWriteOnce resources: requests: storage: 30GiDopo la modifica:
# pvc-demo.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-demo spec: accessModes: - ReadWriteOnce resources: requests: storage: 40GiVerifica la modifica visualizzando la PVC. Per visualizzare la PVC, esegui il comando seguente:
kubectl get pvc pvc-name -o yamlAlla fine, dovresti visualizzare il nuovo volume nel campo
status.capacity. Ad esempio:... spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi storageClassName: standard volumeMode: Filesystem volumeName: pvc-078b7484-cc8d-4077-9bcb-2c17d8d4550c status: accessModes: - ReadWriteOnce capacity: storage: 40Gi ...
Se la capacità di un PersistentVolume viene modificata direttamente, il file system del container potrebbe essere errato. Per risolvere questi problemi, consulta la sezione Risolvere i problemi relativi alle modifiche dell'espansione del volume.
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
di PersistentVolumeClaim (PVC) associato ai pod. Se tenti di modificare direttamente il campo volumeClaimTemplates nell'oggetto StatefulSet, si verificherà un errore.
Inoltre, se aumenti il numero di repliche di StatefulSet, verranno comunque create PVC delle dimensioni originali. Per modificare in modo permanente 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 in esecuzione durante la modifica di StatefulSet per eseguire il provisioning delle repliche future con le nuove dimensioni del volume.
Salva lo StatefulSet esistente in un file:
kubectl get StatefulSet statefulset-name -o yaml > sts-backup.yamlPer ogni PersistentVolumeClaim in StatefulSet, apri l'oggetto
PersistentVolumeClaimin un editor di testo:kubectl edit pvc PVC_NAMEAggiorna il campo
spec.resources.requests.storagecon le nuove dimensioni del volume, come nell'esempio seguente:apiVersion: v1 kind: PersistentVolumeClaim metadata: # lines omitted for clarity spec: resources: requests: storage: 14Gi # lines omitted for clarityPer i dettagli, consulta Espansione delle richieste di volumi permanenti.
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:
kubectl delete sts statefulset-name --cascade=orphanModifica le nuove dimensioni di archiviazione del volume nel file
sts-backup.yamlsalvato localmente, in particolare il valore dispec.volumeClaimTemplates.spec.resources.requests.storageRicrea StatefulSet nel cluster:
kubectl apply -f sts-backup.yaml
Passaggi successivi
- Scopri di più sui volumi.
- Scopri di più su ridimensionamento dei volumi permanenti utilizzando Kubernetes.