Risolvere i problemi relativi agli errori di archiviazione in Backup per GKE

Questa pagina descrive gli errori relativi allo spazio di archiviazione che potresti riscontrare durante l'utilizzo di Backup per GKE, gli aspetti da considerare durante l'esecuzione dell'azione e i passaggi per la risoluzione dei problemi.

Errore 100010105: Impossibile eseguire il backup di PersistentVolumeClaim. Il disco a cui fa riferimento PersistentVolume non esiste

L'errore 100010105 si verifica quando un tentativo di backup di un PersistentVolumeClaim non riesce perché fa riferimento a un disco inesistente, generando un messaggio di errore che indica Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist.

In Google Kubernetes Engine, i PersistentVolumeClaims richiedono spazio di archiviazione da PersistentVolumes. Un PersistentVolume, a sua volta, rappresenta una parte di spazio di archiviazione, spesso un Persistent Disk di Compute Engine sottostante. Si può verificare un errore quando un PersistentVolumeClaim è associato a un PersistentVolume e la configurazione di PersistentVolume specifica un disco permanente di Compute Engine. Tuttavia, il disco effettivo con il nome e la posizione specificati nella configurazione PersistentVolume non è stato trovato nel tuo progetto Google Cloud . Pertanto, Backup per GKE non può procedere con il backup di un disco inesistente e si verifica un errore.

Per risolvere questo errore, segui queste istruzioni:

  1. Identifica i PersistentVolumeClaim e i PersistentVolume problematici. I nomi sia del PersistentVolumeClaim problematico sia del relativo PersistentVolume sono elencati nel campo state reason dell'operazione di Backup per GKE non riuscita. Ti consigliamo di documentare sia il nome di PersistentVolumeClaim, il relativo spazio dei nomi e il nome di PersistentVolume.

  2. Controlla PersistentVolume. Per descrivere PersistentVolume, utilizza il nome PersistentVolume identificato nel campo del motivo dello stato nel seguente comando:

    kubectl describe pv PERSISTENTVOLUME_NAME
    

    Sostituisci PERSISTENTVOLUME_NAME con il nome del tuo PersistentVolume.

  3. Nell'output, esamina la sezione source, in particolare sotto csi. Questa sezione descrive VolumeHandle che PersistentVolume sta tentando di fare riferimento. Ad esempio:

    Source:
      Type: GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
    PDName: my-non-existent-disk
    FSType: ext4
    Partition: 0
    ReadOnly: false
                In this example, the PD name is my-non-existent-disk.
    
        Source:
      Type:       CSI (a Container Storage Interface (CSI) volume)
      Driver:     pd.csi.storage.gke.io
      VolumeHandle: projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    ...
    

    In questo esempio, VolumeHandle contiene il percorso completo del disco, inclusi il nome e la posizione. Ad esempio, projects/my-gcp-project/zones/us-central1-a/disks/my-disk-name.

  4. Utilizza il VolumeHandle ottenuto dalla descrizione di PersistentVolume per identificare il nome e la zona del disco.

  5. Verifica che il disco esista nel tuo progetto Google Cloud utilizzando uno dei seguenti metodi:

    Disco a livello di zona

    Se utilizzi un disco di zona, utilizza Google Cloud CLI per eseguire il comando gcloud compute disks describe:

    gcloud compute disks describe DISK_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • DISK_NAME: il nome del disco ottenuto dalla descrizione di PersistentVolume.

    • ZONE_NAME: la zona del disco che hai ottenuto dalla descrizione di PersistentVolume.

    • PROJECT_ID: il tuo ID progetto Google Cloud .

    Disco regionale

    Se utilizzi un disco regionale, utilizza Google Cloud CLI per eseguire il comando gcloud compute disks describe:

    gcloud compute disks describe DISK_NAME \
        --region=REGION_NAME \
        --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • DISK_NAME: il nome del disco ottenuto dalla descrizione di PersistentVolume.

    • REGION_NAME: la regione del disco che hai ottenuto dalla descrizione di PersistentVolume.

    • PROJECT_ID: il tuo ID progetto Google Cloud .

    Se ricevi un messaggio di errore Resource not found o The resource DISK_NAME was not found, il disco non esiste. Utilizza uno dei seguenti metodi per risolvere il problema a seconda dello scenario più adatto alle tue esigenze:

    • Se il disco è stato eliminato o denominato in modo errato per errore e vuoi conservare i dati o PersistentVolumeClaim oppure se PersistentVolume è stato configurato con un nome del disco errato, utilizza uno dei seguenti metodi per risolvere il problema:

      • Ripristina il disco: se hai un backup del disco, ripristinalo con lo stesso nome e la stessa posizione a cui fa riferimento PersistentVolume.

      • Crea un nuovo disco: se il ripristino del disco non è un'opzione, crea un nuovo disco con lo stesso nome e la stessa posizione della configurazione PersistentVolume.

    • Se PersistentVolumeClaim o PersistentVolume, i relativi dati o l'applicazione non sono più necessari, ti consigliamo di rimuovere l'entità non necessaria:

      • Elimina PersistentVolumeClaim: elimina PersistentVolumeClaim utilizzando lo strumento a riga di comando kubectl per eseguire il comando kubectl delete pvc:
      kubectl delete pvc PVC_NAME -n NAMESPACE
      

      Sostituisci quanto segue:

      • PVC_NAME: il nome del PersistentVolumeClaim che vuoi eliminare.

      • NAMESPACE: lo spazio dei nomi del PersistentVolumeClaim che vuoi eliminare.

    • PersistentVolume è ancora presente dopo l'eliminazione di PersistentVolumeClaim: se PersistentVolumeReclaimPolicy di PersistentVolume è impostato su Delete, PersistentVolume viene eliminato automaticamente quando viene eliminato PersistentVolumeClaim. Se persistentVolumeReclaimPolicy è impostato su Retain, devi eliminare manualmente PersistentVolume dopo l'eliminazione di PersistentVolumeClaim. Per eliminare PersistentVolume, utilizza lo strumento a riga di comando kubectl per eseguire il comando kubectl delete pv:

      kubectl delete pv PV_NAME
      

      Sostituisci PV_NAME con il nome del PersistentVolume che vuoi eliminare.

Se l'operazione continua a non riuscire, contatta l'assistenza clienti Google Cloud per ulteriore assistenza.

Errore 100010202: creazione dello snapshot del volume non riuscita

Si verifica l'errore 100010202 quando la creazione dello snapshot del disco permanente di Compute Engine non va a buon fine, generando un messaggio di errore che indica Snapshotting volume failed.

Un'operazione di snapshot di un disco permanente Compute Engine non riesce se lo stato di collegamento del disco a un'istanza di macchina virtuale (VM) cambia durante il processo di creazione dello snapshot avviato dal servizio Backup per GKE. Gli scenari comuni che attivano questo includono:

  • Riparazione automatica dei nodi: i nodi non integri vengono ricreati, il che comporta la ripianificazione dei pod e lo scollegamento e il ricollegamento dei dischi.
  • Upgrade dei nodi: durante gli upgrade dei pool di nodi, i nodi vengono in genere svuotati e sostituiti. I pod vengono terminati normalmente e ripianificati sui nuovi nodi, attivando cicli di scollegamento e ricollegamento dei dischi.
  • Scalabilità automatica dei cluster: durante gli eventi di scale down, se il gestore della scalabilità automatica dei cluster rimuove un nodo, tutti i pod su quel nodo con Persistent Disk vengono rimossi, causando lo scollegamento dei dischi. Se questi pod vengono ripianificati altrove, gli allegati verranno creati sui nuovi nodi. Durante gli eventi di scale up, i nuovi nodi non causano direttamente i ricollegamenti, ma i pod pianificati su di essi attiveranno i collegamenti iniziali.

Si tratta di un errore temporaneo. Il backup in genere viene eseguito correttamente alla successiva esecuzione automatica una volta stabilizzato l'allegato del disco. Per evitare che gli eventi del cluster influenzino i backup, applica i seguenti consigli:

  1. Abilita la Programmazione Smart: configura il piano di backup utilizzando la Programmazione Smart (una pianificazione basata sull'RPO). In questo modo, il sistema può riprovare automaticamente gli errori temporanei entro l'intervallo di tempo specificato senza influire sull'RPO complessivo del piano di backup.

  2. Configura le finestre di esclusione dei backup: se esegui upgrade pool di nodi o operazioni di ridimensionamento dei cluster, aggiungi una finestra di esclusione dei backup alle impostazioni di backup durante questi intervalli. In questo modo, il servizio Backup per GKE si interromperà ed eviterà di pianificare snapshot mentre il cluster sta modificando attivamente gli allegati del disco.

  3. Riprova i backup manuali: nel caso di backup manuali o on demand, riprova l'operazione di backup al termine dell'evento del cluster.

Se l'operazione continua a non riuscire, contatta l'assistenza clienti Google Cloud per ulteriore assistenza.

Passaggi successivi