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

Questa pagina descrive gli errori relativi al sistema che potresti riscontrare quando utilizzi Backup per GKE, gli aspetti da considerare quando esegui il backup delle risorse e i passaggi per risolvere il problema.

Errore 100010108: Impossibile eseguire il backup di PersistentVolumeClaim - CMEK del piano di backup mancante per il disco criptato

L'errore 100010108 si verifica durante la creazione di backup del volume con ambito regionale e la CMEK del piano di backup è obbligatoria perché il cluster GKE fa riferimento a un disco criptato.

Informazioni sull'errore

Quando crei backup del volume con ambito regionale, la chiave CMEK del piano di backup è obbligatoria se il cluster GKE fa riferimento a un disco criptato. Questo è un requisito rigoroso per i backup dei volumi con scope regionale. Se il disco di origine è criptato, lo snapshot per quel disco è possibile solo se viene fornita una CMEK del piano di backup. Se il piano di backup non include questa configurazione CMEK, la creazione dello snapshot non va a buon fine e viene visualizzato un messaggio di errore simile al seguente:

failed to create snapshot as disk "pvc-1" is encrypted with CMEK "projects/proj1/locations/us-east1/keyRings/keyring1/cryptoKeys/key1/cryptoKeyVersions/1", but no Backup Plan CMEK is provided. Please add CMEK to the Backup Plan.

Passaggi per la risoluzione dei problemi

  1. Identifica la configurazione CMEK mancante: il messaggio di errore conferma che il PVC di cui viene eseguito il backup è criptato, ma nella configurazione del piano di backup manca una chiave di crittografia.
  2. Aggiungi una CMEK al piano di backup: aggiorna la configurazione del piano di backup in modo da includere una chiave di crittografia gestita dal cliente (CMEK). Questa chiave verrà utilizzata per criptare i dati di backup, inclusi i backup dei volumi con ambito regionale.
  3. Assicurati di disporre delle autorizzazioni appropriate: verifica che all'agente di servizio Backup per GKE (service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com) sia assegnato il ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter per la chiave CMEK appena aggiunta.
  4. Esegui nuovamente il test dell'operazione di backup: una volta aggiornato il piano di backup con la CMEK e concesse le autorizzazioni, riprova l'operazione di backup.

Errore 100020102: CustomResourceDefinition - has an invalid schema - Unsupported v1beta1 API version

L'errore 100020102 si verifica quando un tentativo di backup di un CustomResourceDefinition originariamente applicato come versione apiextensions.k8s.io/v1beta1 non va a buon fine perché non dispone dello schema strutturale richiesto nella versione dell'API apiextensions.k8s.io/v1. Questo errore genera il seguente messaggio di errore: CustomResourceDefinition - has an invalid schema. The resource was originally applied as v1beta1, which has been removed from Kubernetes 1.22+.

Questo errore si verifica perché la versione dell'API apiextensions.k8s.io/v1beta1 è stata rimossa in Google Kubernetes Engine versione 1.22. Per saperne di più sulla rimozione dell'API per GKE versione 1.22, consulta Rimozioni di API per GKE v1.22.

Comportamento delle operazioni di backup in modalità non permissiva

In modalità non permissiva o in un piano di backup rigoroso, l'operazione di backup non va a buon fine se rileva una risorsa di cui non è possibile eseguire il backup, ad esempio un CustomResourceDefinition creato con l'API v1beta1. Questo errore si verifica perché la risorsa non dispone dello schema strutturale richiesto dall'API v1. La presenza di questo CustomResourceDefinition è considerata un errore critico perché potrebbe non essere ripristinato correttamente in un cluster più recente.

Per risolvere questo errore, segui queste istruzioni:

  1. Identifica il CustomResourceDefinition problematico eseguendo il comando kubectl get crd:

    kubectl get crd CRD_NAME
    

    Sostituisci CRD_NAME con il nome di CustomResourceDefinition del messaggio di errore.

  2. Nell'output YAML, verifica se CustomResourceDefinition è stato convertito correttamente dall'API vbeta1 all'API v1 individuando le seguenti condizioni:

    1. spec.versions: individua la condizione spec.versions esaminando ogni versione elencata nel campo spec.versions. Se uno dei spec.versions non ha il campo schema.openAIV3Schema, CustomResourceDefinition non ha uno schema strutturale definito per quella versione.

    2. status.conditions: individua la condizione status.conditions trovando la condizione type:NonStructuralSchema. Se il status.conditionsdi status è true, viene confermato esplicitamente che lo schema non è strutturale.

  3. Esegui l'upgrade di CustomResourceDefinition alla versione dell'API v1 seguendo i seguenti passaggi:

    1. Modifica l'CustomResourceDefinition esistente per renderlo compatibile con lo standard v1 aggiungendo uno schema strutturale che definisca ogni campo e il relativo tipo all'interno della risorsa personalizzata. Per maggiori informazioni su come aggiungere uno schema strutturale, consulta Specificare uno schema strutturale.

    2. Applica il manifest v1 compatibile al tuo cluster.

  4. Se l'upgrade va a buon fine, riprova l'operazione di backup. In caso contrario, utilizza uno dei seguenti metodi per risolvere il problema:

    • Elimina CustomResourceDefinition eseguendo il comando kubectl delete crd se CustomResourceDefinition non viene utilizzato nel cluster.

      kubectl delete crd CRD_NAME
      

      Sostituisci CRD_NAME con il nome dellaCustomResourceDefinitionche vuoi eliminare.

    • Attiva la modalità permissiva nel piano di backup, che consente a Backup per GKE di ignorare la risorsa, incluso CustomResourceDefinitions nella versione dell'API v1beta1, e di continuare con il resto dell'operazione di backup. Per saperne di più su come attivare la modalità permissiva, consulta Attivare la modalità permissiva su un piano di backup.

  5. Riprova a eseguire l'operazione di backup. Se l'operazione continua a non riuscire, contatta l'assistenza clienti Google Cloud per ulteriore assistenza.

Errore 100020103: Impossibile eseguire query sulle risorse API

L'errore 100020103 si verifica quando Backup per GKE non riesce a rilevare i servizi API Kubernetes personalizzati o aggregati prima di eseguire un backup, generando un messaggio di errore che indica Failed to query API resources. Please check if any API service is unavailable by using 'kubectl get apiservice'. Ciò accade se un servizio API aggregato non è configurato correttamente o se i relativi servizi e pod di backend non sono integri o non sono raggiungibili. In modalità non permissiva o in un piano di backup rigoroso, Backup per GKE interrompe l'operazione di backup se rileva un APIService non disponibile per evitare di acquisire uno stato del cluster incompleto o incoerente.

Per risolvere questo errore, segui queste istruzioni:

  1. Identifica i servizi API non disponibili eseguendo questo comando:

    kubectl get apiservice
    

    Nell'output, cerca i servizi API in cui la colonna AVAILABLE è False.

  2. Esamina i dettagli di APIService non riuscito eseguendo questo comando:

    kubectl describe apiservice APISERVICE_NAME
    

    Sostituisci APISERVICE_NAME con il nome del servizio API con errori, ad esempio v1beta1.custom.metrics.k8s.io.

    Nell'output, esamina il campo Service in spec.service e la sezione Conditions per identificare il servizio di backend, il relativo spazio dei nomi e la causa dell'errore (ad esempio endpoint mancanti o una porta di destinazione non raggiungibile).

  3. Utilizza uno dei seguenti metodi per risolvere l'errore:

    • Ripristina il servizio di supporto: verifica che il servizio di supporto abbia endpoint pronti eseguendo questo comando:

      kubectl get endpoints -n NAMESPACE SERVICE_NAME
      

      Sostituisci quanto segue:

      • NAMESPACE: lo spazio dei nomi del servizio di supporto.
      • SERVICE_NAME: il nome del servizio di supporto.

      Verifica che i pod che supportano il servizio esistano e si trovino nello stato Running. Risolvi eventuali arresti anomali dei pod, errori di pull delle immagini o configurazioni errate delle policy di rete che impediscono al traffico di raggiungere il servizio di supporto.

    • Elimina un APIService orfano: se il APIService appartiene a un'applicazione, a un operatore o a uno strumento di monitoraggio che è stato rimosso o non è più in uso, elimina il APIService obsoleto:

      kubectl delete apiservice APISERVICE_NAME
      

      Sostituisci APISERVICE_NAME con il nome del servizio API orfano.

    • Abilita la modalità permissiva: se non riesci a correggere o rimuovere immediatamente il servizio API non disponibile, abilita la modalità permissiva nel piano di backup. Quando la modalità permissiva è abilitata, Backup per GKE continua l'operazione di backup. Tuttavia, le risorse appartenenti al gruppo API non disponibile non verranno sottoposte a backup. Per saperne di più su come abilitare la modalità permissiva, consulta Abilitare la modalità permissiva su un piano di backup.

  4. Riprova a eseguire l'operazione di backup. Se l'operazione continua a non riuscire, contatta l'assistenza clienti Google Cloud per ulteriore assistenza.

Errore 100040102: spazio dei nomi non trovato

L'errore 100040102 si verifica quando un tentativo di eseguire un'operazione di backup non va a buon fine perché non è possibile trovare uno spazio dei nomi specificato nell'ambito del backup all'interno del cluster. L'agente Backup per GKE non è riuscito a individuare uno o più spazi dei nomi elencati esplicitamente nel campo selectedNamespaces della configurazione BackupPlan. Backup per GKE richiede che tutti gli spazi dei nomi specificati siano presenti nel cluster al momento dell'avvio dell'operazione di backup. Se lo spazio dei nomi non viene trovato, viene visualizzato il seguente messaggio di errore:

Namespace [NAMESPACE_NAME] is not found.

Per risolvere il problema, segui queste istruzioni:

  1. Verifica che lo spazio dei nomi sia stato inserito correttamente controllando l'elenco selectedNamespaces nella configurazione di BackupPlan.

  2. Verifica che lo spazio dei nomi segnalato nel messaggio di errore esista eseguendo il comando kubectl get namespace:

    kubectl get namespace NAMESPACE_NAME
    

    Sostituisci NAMESPACE_NAME con il nome dello spazio dei nomi indicato nel messaggio di errore.

    Se lo spazio dei nomi non esiste, viene visualizzato un messaggio che indica che lo spazio dei nomi non è stato trovato, ad esempio Error from server (NotFound): namespaces "[NAMESPACE_NAME]" not found.

  3. Correggi BackupPlan. Se lo spazio dei nomi è scritto in modo errato, aggiorna BackupPlan con il nome corretto. Se lo spazio dei nomi non esiste più e non è necessario eseguirne il backup, rimuovilo dall'elenco selectedNamespaces nella configurazione BackupPlan.

  4. Riprova l'operazione di backup dopo aver apportato le correzioni necessarie a BackupPlan e avvia un nuovo backup.

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

Passaggi successivi