Utilizzo dell'espansione del volume


In Google Kubernetes Engine (GKE) versione 1.24 o successive, puoi utilizzare lo strumento Kubernetes funzionalità di espansione del volume per modificare la capacità di un volume permanente dopo la sua creazione.

Per ulteriori informazioni sull'espansione del volume, consulta la documentazione Documentazione relativa a Kubernetes.

Prerequisiti

L'espansione del volume presenta i seguenti prerequisiti:

  • Se il volume che vuoi ridimensionare è 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 modello gestito Driver CSI di GKE Filestore, la versione del cluster deve essere 1.21 o successiva.
    • Controlla la documentazione del fornitore dello spazio di archiviazione per verificare che il driver CSI sia supportato dell'espansione del volume. Il driver CSI per il disco permanente di Compute Engine e il Il driver CSI Filestore supporta l'espansione del volume.
  • Se il volume che vuoi ridimensionare è gestito da un plug-in di volume integrato:
    • Assicurati che la versione del cluster GKE sia 1.11 o successiva. Mentre Le versioni 1.11-1.14 del cluster GKE supportano l'espansione dei volumi gestiti da plug-in in-tree, richiedono che tutti i pod che utilizzano il volume terminati e ricreati per completare l'espansione del volume.
    • Controlla la documentazione del fornitore dello spazio di archiviazione per verificare il volume in-tree il plug-in supporta l'espansione del volume (il disco permanente il plug-in in-tree).
  • Non puoi utilizzare l'espansione del volume quando utilizzi Modalità di accesso a ReadOnlyMany.

Utilizzo dell'espansione del volume

Per utilizzare l'espansione del volume, esegui le seguenti attività:

  1. Aggiungi allowVolumeExpansion: true al tuo oggetto StorageClass, se il tuo non include già il campo. Ad esempio:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: standard
    provisioner: my.driver
    ...
    allowVolumeExpansion: true
    
  2. Per richiedere una modifica della capacità del volume, modifica il valore campo spec.resources.requests.storage.

     kubectl edit pvc pvc-name
    

    Ad esempio, puoi modificare a seguito della PVC, passando da un disco da 30 gibibyte (GiB) a un disco da 40 GiB.

    Prima di modificare:

     # pvc-demo.yaml
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: pvc-demo
     spec:
       accessModes:
         - ReadWriteOnce
       resources:
         requests:
           storage: 30Gi
    

    Dopo la modifica:

     # pvc-demo.yaml
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: pvc-demo
     spec:
       accessModes:
         - ReadWriteOnce
       resources:
         requests:
           storage: 40Gi
    
  3. Verifica la modifica visualizzando la PVC. Per visualizzare la PVC, esegui questo comando:

    kubectl get pvc pvc-name -o yaml
    

    Alla fine, dovresti vedere 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
    ...
    
di Gemini Advanced.

Se la capacità di un PersistentVolume viene modificata direttamente, questo potrebbe che il file system del container non sia corretto. Per risolvere questi problemi, consulta Risolvere i problemi relativi alle modifiche dell'espansione del volume.

Gestione delle espansioni di volume negli oggetti StatefulSet

Se hai bisogno di aumentare la dimensione dei volumi utilizzati dai pod all'interno di un StatefulSet in Kubernetes, devi modificare il campo spec.resources.requests.storage di oggetti PersistentVolumeClaim (PVC) associati ai pod. Tentativo di modificare il campo volumeClaimTemplates direttamente nello StatefulSet causerà un errore.

Inoltre, se aumenti il numero di repliche dello StatefulSet, verranno comunque create PVC delle dimensioni originali. Per modificare definitivamente dei volumi di cui è stato eseguito il provisioning per i pod gestiti dallo StatefulSet, devi eliminare e ricreare l'oggetto StatefulSet con le dimensioni aggiornate specificato nel campo volumeClaimTemplates. Tieni presente che questo processo comporterà l'eliminazione dei vecchi pod e le PVC corrispondenti. In base al ReclaimPolicy, potrebbe essere eliminato anche lo spazio di archiviazione sottostante.

Puoi eseguire questi passaggi per mantenere i pod originali in esecuzione durante la regolazione dello StatefulSet per eseguire il provisioning delle repliche future con nuova dimensione del volume.

  1. Salva lo StatefulSet esistente in un file:

    kubectl get StatefulSet statefulset-name -o yaml > sts-backup.yaml
    
  2. Rimuovi l'oggetto StatefulSet dal cluster mantenendo i pod in esecuzione come pod autonomi:

    kubectl delete sts statefulset-name --cascade=orphan
    
  3. Modifica la nuova dimensione dello spazio di archiviazione del volume nell'elemento sts-backup.yaml salvato localmente nello specifico il valore spec.volumeClaimTemplates.spec.resources.requests.storage

  4. Ricrea lo StatefulSet nel cluster:

    kubectl apply -f sts-backup.yaml
    

Passaggi successivi