Resolva problemas de armazenamento na Cópia de segurança do GKE

Esta página descreve os erros relacionados com o armazenamento que pode ter quando usa a cópia de segurança para o GKE, aspetos a ter em conta quando realiza a ação e os passos sobre como resolver o problema.

Erro 100010105: não foi possível fazer uma cópia de segurança de PersistentVolumeClaim. O disco referenciado por PersistentVolume não existe

O erro 100010105 ocorre quando uma tentativa de fazer uma cópia de segurança de um PersistentVolumeClaim falha porque faz referência a um disco que não existe, o que resulta numa mensagem de erro a indicar Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist.

No Google Kubernetes Engine, PersistentVolumeClaims solicite armazenamento a partir de PersistentVolumes. Por sua vez, um PersistentVolume representa uma parte do armazenamento, muitas vezes um Persistent Disk subjacente do Compute Engine. Pode ocorrer um erro quando um PersistentVolumeClaim está associado a um PersistentVolume e a configuração do PersistentVolume especifica um Persistent Disk do Compute Engine. No entanto, não é possível encontrar o disco real com o nome e a localização especificados na configuração PersistentVolume no seu projeto Google Cloud . Assim, a Cópia de segurança do GKE não pode avançar com a criação de cópias de segurança de um disco inexistente e ocorre uma falha.

Para resolver este erro, siga estas instruções:

  1. Identifique o PersistentVolumeClaim e o PersistentVolume problemáticos. Os nomes do PersistentVolumeClaim problemático e do respetivo PersistentVolume associado estão listados no campo state reason da operação de cópia de segurança para o GKE com falha. Recomendamos que documente o PersistentVolumeClaim nome, o respetivo espaço de nomes e o nome do PersistentVolume.

  2. Inspecione o PersistentVolume. Para descrever o PersistentVolume, use o nome do PersistentVolume que identificou no campo de motivo do estado no seguinte comando:

    kubectl describe pv PERSISTENTVOLUME_NAME
    

    Substitua PERSISTENTVOLUME_NAME pelo nome do seu PersistentVolume.

  3. No resultado, examine a secção source, especificamente em csi. Esta secção descreve o VolumeHandle que o PersistentVolume está a tentar referenciar. Por exemplo:

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

    Neste exemplo, o VolumeHandle contém o caminho completo para o disco, incluindo o nome e a localização. Por exemplo, projects/my-gcp-project/zones/us-central1-a/disks/my-disk-name.

  4. Use o VolumeHandle obtido a partir da descrição PersistentVolume para identificar o nome e a zona do disco.

  5. Verifique se o disco existe no seu Google Cloud projeto através de um dos seguintes métodos:

    Disco zonal

    Se estiver a usar um disco zonal, use a Google Cloud CLI para executar o comando gcloud compute disks describe:

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

    Substitua o seguinte:

    • DISK_NAME: o nome do disco que obteve a partir da descrição PersistentVolume.

    • ZONE_NAME: a zona do disco que obteve a partir da descrição PersistentVolume.

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    Disco regional

    Se estiver a usar um disco regional, use a Google Cloud CLI para executar o comando gcloud compute disks describe:

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

    Substitua o seguinte:

    • DISK_NAME: o nome do disco que obteve a partir da descrição PersistentVolume.

    • REGION_NAME: a região do disco que obteve a partir da descrição PersistentVolume.

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    Se receber uma mensagem de erro Resource not found ou The resource DISK_NAME was not found, o disco não existe. Use um dos seguintes métodos para resolver o problema, consoante o cenário que melhor se adapta às suas necessidades:

    • Se o disco foi eliminado ou teve o nome alterado acidentalmente e quiser manter os dados ou o PersistentVolumeClaim, ou se o PersistentVolume foi configurado com um nome de disco incorreto, use um dos seguintes métodos para resolver o problema:

      • Restaurar o disco: se tiver uma cópia de segurança do disco, restaure-o com o mesmo nome e localização que o PersistentVolume referencia.

      • Crie um novo disco: se a reposição do disco não for uma opção, crie um novo disco com o mesmo nome e localização que se encontram na configuração PersistentVolume.

    • Se o PersistentVolumeClaim ou o PersistentVolume, os respetivos dados ou a aplicação já não forem necessários, recomendamos que remova a entidade desnecessária:

      • Elimine o PersistentVolumeClaim: elimine o PersistentVolumeClaim com a ferramenta de linha de comandos kubectl para executar o comando kubectl delete pvc:
      kubectl delete pvc PVC_NAME -n NAMESPACE
      

      Substitua o seguinte:

      • PVC_NAME: o nome do PersistentVolumeClaim que quer eliminar.

      • NAMESPACE: o espaço de nomes do PersistentVolumeClaim que quer eliminar.

    • O PersistentVolume continua presente depois de eliminar o PersistentVolumeClaim: se o PersistentVolumeReclaimPolicy do PersistentVolume estiver definido como Delete, o PersistentVolume é eliminado automaticamente quando o PersistentVolumeClaim é eliminado. Se o persistentVolumeReclaimPolicy estiver definido como Retain, tem de eliminar manualmente o PersistentVolume depois de o PersistentVolumeClaim ser eliminado. Para eliminar o PersistentVolume, use a ferramenta de linha de comandos kubectl para executar o comando kubectl delete pv:

      kubectl delete pv PV_NAME
      

      Substitua PV_NAME pelo nome do PersistentVolume que quer eliminar.

Se a operação continuar a falhar, contacte o apoio ao cliente do Google Cloud para receber mais assistência.