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 100020102: modalità permissiva rigorosa - Impossibile eseguire il backup di CRD - Versione API v1beta1 non supportata

L'errore 100020102 si verifica quando un tentativo di backup di un CustomResourceDefinition originariamente applicato come versione apiextensions.k8s.io/v1beta1 non riesce perché non dispone dello schema strutturale richiesto nella versione dell'API apiextensions.k8s.io/v1. Questo errore genera il seguente messaggio di errore: Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version.

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

Comportamento dell'operazione 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 in uno dei spec.versions manca 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.conditions's status è true, conferma esplicitamente che lo schema non è strutturale.

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

    1. Modifica il 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 saperne di più 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 del CustomResourceDefinitionche 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 ulteriori informazioni su come attivare la modalità permissiva, vedi 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.

Passaggi successivi