Questo documento descrive come aumentare dinamicamente la capacità di archiviazione dei volumi Managed Lustre per i carichi di lavoro stateful in Google Kubernetes Engine (GKE) senza interrompere le applicazioni.
Ad esempio, se i tuoi job di addestramento AI/ML a lunga esecuzione hanno requisiti di archiviazione dinamici e imprevedibili, abilita l'espansione del volume Managed Lustre per aumentare la capacità di archiviazione del tuo PersistentVolume (PV) Managed Lustre esistente.
Questo documento è destinato ad amministratori e operatori della piattaforma, DevOps, amministratori dello spazio di archiviazione e machine learning engineer (ML) che gestiscono lo spazio di archiviazione per i carichi di lavoro stateful su GKE.
Quando espandi un volume, i costi aumentano in base alla nuova capacità maggiore, in base ai Google Cloud prezzi standard di Managed Lustre.
Prima di iniziare
Requisiti
Assicurati di soddisfare i seguenti requisiti:
- Devi avere un cluster GKE versione 1.35.0-gke.2331000 o successive.
- Devi abilitare il driver CSI Managed Lustre in un cluster esistente. Il driver è disabilitato per impostazione predefinita nei cluster Standard e Autopilot.
Limitazioni
- Puoi solo aumentare le dimensioni di un volume esistente, non ridurle.
- Non puoi utilizzare l'espansione del volume con la modalità di accesso
ReadOnlyMany. - Quando ridimensioni i volumi Lustre, rispetta i limiti di capacità minima e massima e le dimensioni dei passaggi impostati dal livello di prestazioni del volume. Per ulteriori informazioni, vedi Considerazioni sul rendimento.
- Specifica le dimensioni del volume Lustre in GiB come multipli di 1000. Kubernetes traduce unità come Ti in valori binari (ad esempio, 18 Ti vengono interpretati come 18.432 GiB), il che comporta il rifiuto della richiesta da parte dell'API Lustre.
Abilitare l'espansione del volume per una StorageClass
Verifica se StorageClass supporta l'espansione del volume:
kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Sostituisci
STORAGECLASS_NAMEcon il nome della tua StorageClass.Se il comando non restituisce nulla o restituisce
false, devi aggiornare esplicitamente la configurazione StorageClass per consentire l'espansione.Apri la configurazione StorageClass per modificarla:
kubectl edit storageclass STORAGECLASS_NAMENell'editor, aggiungi il campo
allowVolumeExpansion: truealla configurazione StorageClass:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: lustre-sc provisioner: lustre.csi.storage.gke.io ... allowVolumeExpansion: true
Espandi un oggetto PersistentVolumeClaim
Per avviare l'espansione del volume, modifica PersistentVolumeClaim (PVC) per richiedere un aumento delle dimensioni del volume.
- Identifica la nuova dimensione valida per l'espansione come descritto in Determinare le dimensioni di espansione valide.
Apri la configurazione del PVC per la modifica:
kubectl edit pvc PVC_NAMESostituisci
PVC_NAMEcon il nome del tuo PVC.Nell'editor, aggiorna il campo
spec.resources.requests.storagecon le dimensioni di espansione valide. Ad esempio, per espandere un volume da9000Gia18000Gi, modifica il campostoragecome segue:spec: accessModes: - ReadWriteOnce resources: requests: storage: 18000Gi # Changed from 9000Gi
Verifica l'espansione del volume
Monitora l'avanzamento dell'espansione esaminando gli eventi del PVC:
kubectl describe pvc PVC_NAMEI seguenti eventi nell'output del PVC indicano l'avanzamento o il risultato attuale della richiesta di espansione del volume:
ExternalExpanding: indica che Kubernetes è in attesa cheexternal-resizerespanda il PVC.Resizing: indica che l'operazione di ridimensionamento è in corso. Questa operazione può richiedere fino a 90 minuti per aumenti di capacità più elevati.VolumeResizeSuccessful: conferma che il volume è stato espanso correttamente.VolumeResizeFailed: indica che si è verificato un errore. Il messaggio dell'evento contiene i dettagli dell'API Google Cloud Managed Lustre. Questo stato potrebbe essere temporaneo e risolversi autonomamente.
Al termine dell'espansione, verifica la configurazione aggiornata del PVC:
kubectl get pvc PVC_NAME -o yamlAssicurati che il campo
status.capacityrifletta le nuove dimensioni incrementate.
Se riscontri problemi durante la procedura di espansione, consulta la sezione Risoluzione dei problemi.
Determinare le dimensioni di espansione valide
Per determinare le nuove dimensioni del volume, identifica innanzitutto il livello di prestazioni del volume e le dimensioni del passaggio corrispondenti.
Identificare il livello di prestazioni del volume
Puoi trovare il livello di rendimento del volume utilizzando una delle seguenti opzioni:
StorageClass
Esegui il seguente comando e cerca
il valore perUnitStorageThroughput (ad esempio, 1000). Questo valore
indica il livello di rendimento in MBps per TiB.
kubectl get sc STORAGECLASS_NAME -o yaml
Sostituisci STORAGECLASS_NAME con il nome della tua StorageClass.
Istanza Lustre
Identifica il livello di rendimento del volume controllando direttamente le proprietà dell'istanza Managed Lustre sottostante:
Trova il nome del PV associato al tuo PVC:
kubectl get pvc PVC_NAMESostituisci
PVC_NAMEcon il nome del tuo PVC.L'output è simile al seguente. Prendi nota del nome del PV nella colonna
VOLUME, ad esempiopv-lustre.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-lustre Bound pv-lustre 9000Gi RWX lustre-rwx <unset> 26mTrova la posizione del volume e il nome dell'istanza nel campo
volumeHandle:kubectl get pv PV_NAME -o yamlSostituisci
PV_NAMEcon il nome del PV del passaggio precedente.Il valore
volumeHandleè formattato comePROJECT_ID/LOCATION/INSTANCE_NAME. Prendi nota diINSTANCE_NAMEeLOCATIONper il passaggio successivo.Controlla le proprietà del livello di prestazioni descrivendo l'istanza Managed Lustre:
gcloud lustre instances describe INSTANCE_NAME --location=LOCATIONSostituisci
INSTANCE_NAMEeLOCATIONcon i valori del passaggio precedente.Nell'output, cerca il campo
perUnitStorageThroughput. Questo valore indica il livello di prestazioni in MBps per TiB.
Limiti di capacità e dimensioni dei passaggi
Dopo aver identificato il livello di prestazioni, consulta la tabella seguente per trovare i limiti di capacità associati e la dimensione del passo richiesta.
Livello (perUnitStorageThroughput) |
Capacità minima | Capacità massima | Dimensione passo |
|---|---|---|---|
| 1000 MBps per TiB | 9000 GiB | 954.000 GiB (~1 PiB) | 9000 GiB |
| 500 MBps per TiB | 18.000 GiB | 1.908.000 GiB (~2 PiB) | 18.000 GiB |
| 250 MBps per TiB | 36.000 GiB | 3.816.000 GiB (~4 PiB) | 36.000 GiB |
| 125 MBps per TiB | 72.000 GiB | 7.632.000 GiB (~8 PiB) | 72.000 GiB |
I volumi devono essere aumentati in base alla dimensione del passaggio assegnata al loro livello. Qualsiasi aumento della capacità deve essere un multiplo di questa dimensione specifica del passo. Ad esempio, se il volume di livello da 1000 MB/s ha una capacità di 9000 GiB, puoi aumentarla a 18.000 GiB, 27.000 GiB e altri multipli.
Risoluzione dei problemi
Questa sezione fornisce soluzioni ai problemi comuni che potresti riscontrare quando espandi i volumi Lustre.
L'espansione non riesce e restituisce l'errore "Invalid Argument"
Sintomo
- Il PVC entra in uno stato
Resizing, ma poi non va a buon fine. - Quando esegui il comando
kubectl describe pvc PVC_NAME, viene visualizzato un errore simile aVolumeResizeFailed: rpc error: code = InvalidArgument desc = ....
Causa
Questo errore in genere significa che le dimensioni di archiviazione richieste non sono valide per il livello di prestazioni del volume Lustre per uno dei seguenti motivi:
- La dimensione richiesta non è un multiplo della dimensione del passaggio richiesta per il livello.
- La dimensione richiesta è inferiore alla capacità minima o superiore alla capacità massima per il livello.
Risoluzione
- Esamina i limiti di capacità e le dimensioni del passo per trovare le dimensioni del passo e i limiti di capacità validi per il livello di rendimento del volume.
- Modifica di nuovo il PVC per richiedere una dimensione di archiviazione valida che soddisfi i limiti di capacità e dimensione del passo.
L'espansione non riesce e restituisce un "Errore interno"
Sintomo
- Il ridimensionamento del PVC non riesce.
- Quando esegui il comando
kubectl describe pvc PVC_NAME, potresti visualizzare un eventoVolumeResizeFailedcon un messaggio di errore contenentecode = Internal.
Causa
Questo errore indica un problema con il servizio Managed Lustre sottostante.
Risoluzione
- Riprova l'espansione applicando di nuovo il manifest PVC con la nuova dimensione richiesta. In questo modo potrebbero essere risolti problemi temporanei del backend.
- Se il nuovo tentativo non va a buon fine, contatta l'assistenza clienti Google Cloud.
L'espansione è bloccata nello stato "Ridimensionamento"
Sintomo
- Il PVC rimane nello stato
Resizingper un periodo prolungato (più di 30 minuti per le espansioni più piccole o più di 90 minuti per quelle più grandi). - Potresti visualizzare un evento
VolumeResizeFailedcon un messaggio di erroreDEADLINE_EXCEEDED.
Causa
Questo problema può verificarsi con aumenti di capacità elevati, che possono richiedere fino a 90 minuti. Il componente csi-external-resizer potrebbe scadere durante l'attesa della risposta dell'API Google Cloud Managed Lustre, anche se l'operazione di espansione sottostante è ancora in corso.
Risoluzione
csi-external-resizerriprova automaticamente l'operazione dopo un periodo di backoff. Continua a monitorare gli eventi PVC per un eventoVolumeResizeSuccessful.- Se la PVC rimane nello stato
Resizingper più di 90 minuti, contatta l'assistenza clienti Google Cloud.
L'espansione non si avvia o è bloccata nello stato ExternalExpanding
Sintomo
- Aggiorni il campo
spec.resources.requests.storagenel tuo PVC, ma lo stato del PVC non cambia inResizing. - Quando esegui il comando
kubectl describe pvc PVC_NAME, il log eventi mostra solo lo statoExternalExpandinge non passa allo statoResizing:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalExpanding 21m (x2 over 58m) volume_expand waiting for an external controller to expand this PVC
Causa
Questo comportamento in genere indica uno dei seguenti problemi:
- StorageClass associata al PVC non consente l'espansione del volume.
- Si è verificato un problema con il container sidecar
csi-external-resizer, ovvero il componente responsabile dell'avvio dell'espansione.
Risoluzione
Controlla la configurazione di StorageClass e verifica che il campo
allowVolumeExpansion: truesia impostato:kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Se
allowVolumeExpansionnon è presente o è impostato sufalse, aggiorna StorageClass per consentire l'espansione del volume.Se StorageClass è configurata correttamente, il problema riguarda probabilmente i componenti del control plane GKE che gestiscono l'operazione di ridimensionamento. Contatta l'assistenza clienti Google Cloud per ricevere aiuto.
L'espansione non riesce a causa di un problema di quota o capacità
Sintomo
- Il ridimensionamento del PVC non va a buon fine e sul PVC viene visualizzato un evento
VolumeResizeFailed. - Quando esegui il comando
kubectl describe pvc PVC_NAME, il messaggio di evento del backend di Managed Lustre indica un problema di quota o capacità.
Causa
L'espansione valida richiesta non può essere soddisfatta perché supera la capacità o la quota complessiva disponibile per il servizio Managed Lustre nel tuo progetto o nella tua regione.
Risoluzione
- Modifica di nuovo il PVC e richiedi un aumento dello spazio di archiviazione inferiore.
- Contatta l'amministratore Google Cloud della tua organizzazione per richiedere un aumento delle quote o della capacità complessive del servizio Lustre per il tuo progetto.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo documento, elimina il PVC. Questa operazione elimina anche il PV associato e l'istanza Managed Lustre sottostante se reclaimPolicy è impostato su Delete.
kubectl delete pvc PVC_NAME
Sostituisci PVC_NAME con il nome del tuo PVC.
Passaggi successivi
- Scopri di più sull'archiviazione per i cluster GKE.
- Leggi la documentazione relativa al provisioning e ai volumi permanenti di GKE.