Solucionar problemas de almacenamiento en Backup for GKE

En esta página se describen los errores relacionados con el almacenamiento que pueden producirse al usar Backup para GKE, los aspectos que debes tener en cuenta al realizar la acción y los pasos para solucionar el problema.

Error 100010105: No se ha podido crear una copia de seguridad de PersistentVolumeClaim. El disco al que hace referencia PersistentVolume no existe.

El error 100010105 se produce cuando se intenta crear una copia de seguridad de un PersistentVolumeClaim y se produce un fallo porque hace referencia a un disco que no existe, lo que provoca que se muestre el mensaje de error Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist.

En Google Kubernetes Engine, PersistentVolumeClaimssolicita almacenamiento a PersistentVolumes. Un PersistentVolume, a su vez, representa una parte del almacenamiento, a menudo un disco persistente de Compute Engine subyacente. Se puede producir un error cuando se vincula un PersistentVolumeClaim a un PersistentVolume y la configuración del PersistentVolume especifica un disco persistente de Compute Engine. Sin embargo, no se ha encontrado el disco con el nombre y la ubicación especificados en la configuración PersistentVolume en tu proyecto Google Cloud . Por lo tanto, Copia de seguridad de GKE no puede crear una copia de seguridad de un disco que no existe y se produce un error.

Para resolver este error, siga estas instrucciones:

  1. Identifica los PersistentVolumeClaim y PersistentVolume problemáticos. Los nombres del PersistentVolumeClaim problemático y de su PersistentVolume asociado se indican en el campo state reason de la operación Backup for GKE fallida. Recomendamos documentar tanto el nombre de PersistentVolumeClaim como su espacio de nombres y el nombre de PersistentVolume.

  2. Inspecciona el PersistentVolume. Para describir el PersistentVolume, usa el nombre PersistentVolume que has identificado en el campo "state reason" (motivo del estado) del siguiente comando:

    kubectl describe pv PERSISTENTVOLUME_NAME
    

    Sustituye PERSISTENTVOLUME_NAME por el nombre de tu PersistentVolume.

  3. En el resultado, consulta la sección source, concretamente en csi. En esta sección se describe el VolumeHandle al que intenta hacer referencia el PersistentVolume. Por ejemplo:

    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
    ...
    

    En este ejemplo, VolumeHandle contiene la ruta completa al disco, incluido su nombre y su ubicación. Por ejemplo, projects/my-gcp-project/zones/us-central1-a/disks/my-disk-name.

  4. Usa el VolumeHandle obtenido de la descripción de PersistentVolume para identificar el nombre y la zona del disco.

  5. Verifica que el disco existe en tu Google Cloud proyecto mediante uno de los siguientes métodos:

    Disco de zona

    Si usas un disco zonal, usa Google Cloud CLI para ejecutar el comando gcloud compute disks describe:

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

    Haz los cambios siguientes:

    • DISK_NAME: el nombre del disco que has obtenido de la PersistentVolume descripción.

    • ZONE_NAME: la zona del disco que has obtenido de la descripción PersistentVolume.

    • PROJECT_ID: tu ID de proyecto Google Cloud .

    Disco regional

    Si usas un disco regional, usa Google Cloud CLI para ejecutar el comando gcloud compute disks describe:

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

    Haz los cambios siguientes:

    • DISK_NAME: el nombre del disco que has obtenido de la PersistentVolume descripción.

    • REGION_NAME: la región del disco que has obtenido de la descripción PersistentVolume.

    • PROJECT_ID: tu ID de proyecto Google Cloud .

    Si recibes un mensaje de error Resource not found o The resource DISK_NAME was not found, significa que el disco no existe. Utilice uno de los siguientes métodos para resolver el problema en función del escenario que mejor se adapte a sus necesidades:

    • Si el disco se ha eliminado o se le ha cambiado el nombre por error y quieres conservar los datos o PersistentVolumeClaim, o bien si se ha configurado PersistentVolume con un nombre de disco incorrecto, utiliza uno de los siguientes métodos para solucionar el problema:

      • Restaurar el disco: si tienes una copia de seguridad del disco, restáurala con el mismo nombre y ubicación que PersistentVolume.

      • Crea un disco nuevo: si no puedes restaurar el disco, crea uno nuevo con el mismo nombre y la misma ubicación que en la PersistentVolume configuración.

    • Si ya no se necesitan el PersistentVolumeClaim o el PersistentVolume, sus datos o la aplicación, te recomendamos que elimines la entidad que no necesites:

      • Elimina el PersistentVolumeClaim: elimina el PersistentVolumeClaim con la herramienta de línea de comandos kubectl para ejecutar el comando kubectl delete pvc:
      kubectl delete pvc PVC_NAME -n NAMESPACE
      

      Haz los cambios siguientes:

      • PVC_NAME: el nombre del PersistentVolumeClaim que quieres eliminar.

      • NAMESPACE: el espacio de nombres del PersistentVolumeClaim que quieras eliminar.

    • El PersistentVolume sigue presente después de eliminar el PersistentVolumeClaim: si el PersistentVolumeReclaimPolicy del PersistentVolume está configurado como Delete, el PersistentVolume se elimina automáticamente cuando se elimina el PersistentVolumeClaim. Si el persistentVolumeReclaimPolicy está configurado como Retain, debes eliminar manualmente el PersistentVolume después de que se elimine el PersistentVolumeClaim. Para eliminar el PersistentVolume, usa la herramienta de línea de comandos kubectl para ejecutar el comando kubectl delete pv:

      kubectl delete pv PV_NAME
      

      Sustituye PV_NAME por el nombre del PersistentVolume que quieras eliminar.

Si la operación sigue fallando, ponte en contacto con el equipo de Asistencia de Google Cloud para obtener más ayuda.