Résoudre les problèmes liés aux erreurs système dans Sauvegarde pour GKE

Cette page décrit les erreurs liées au système que vous pouvez rencontrer lorsque vous utilisez Sauvegarde pour GKE, les éléments à prendre en compte lorsque vous sauvegardez des ressources et les étapes à suivre pour résoudre le problème.

Erreur 100020102 : Mode permissif strict – Échec de la sauvegarde du CRD – Version de l'API v1beta1 non compatible

L'erreur 100020102 se produit lorsqu'une tentative de sauvegarde d'un CustomResourceDefinition initialement appliqué en tant que version apiextensions.k8s.io/v1beta1 échoue, car il ne dispose pas du schéma structurel requis dans la version apiextensions.k8s.io/v1 de l'API. Cette erreur génère le message d'erreur suivant : Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version.

Cette erreur se produit, car la version de l'API apiextensions.k8s.io/v1 a été supprimée dans Google Kubernetes Engine version 1.22. Pour en savoir plus sur la suppression d'API pour GKE version 1.22, consultez Suppression d'API pour GKE version 1.22.

Comportement de l'opération de sauvegarde en mode non permissif

En mode non permissif ou dans un plan de sauvegarde strict, l'opération de sauvegarde échoue si elle rencontre une ressource qui ne peut pas être sauvegardée, comme un CustomResourceDefinition créé avec l'API v1beta1. Cette erreur se produit, car la ressource ne dispose pas du schéma structurel requis par l'API v1. La présence de cet CustomResourceDefinition est considérée comme une erreur critique, car il est possible qu'il ne soit pas restauré correctement dans un cluster plus récent.

Pour résoudre cette erreur, suivez les instructions ci-dessous :

  1. Identifiez le CustomResourceDefinition problématique en exécutant la commande kubectl get crd :

    kubectl get crd CRD_NAME
    

    Remplacez CRD_NAME par le nom de l'CustomResourceDefinition indiqué dans votre message d'erreur.

  2. Dans le résultat YAML, vérifiez si CustomResourceDefinition a été correctement converti de l'API vbeta1 à l'API v1 en recherchant les conditions suivantes :

    1. spec.versions : recherchez la condition spec.versions en examinant chaque version listée sous le champ spec.versions. Si l'un des spec.versions ne comporte pas le champ schema.openAIV3Schema, cela signifie qu'aucun schéma structurel n'est défini pour cette version de CustomResourceDefinition.

    2. status.conditions : localisez la condition status.conditions en recherchant la condition type:NonStructuralSchema. Si la valeur status de status.conditions est true, cela confirme explicitement que le schéma n'est pas structurel.

  3. Mettez à niveau la version de l'API CustomResourceDefinition vers v1 en procédant comme suit :

    1. Modifiez le CustomResourceDefinition existant pour le rendre compatible avec la norme v1 en ajoutant un schéma structurel qui définit chaque champ et son type dans la ressource personnalisée. Pour savoir comment ajouter un schéma structurel, consultez Spécifier un schéma structurel.

    2. Appliquez le fichier manifeste v1 compatible à votre cluster.

  4. Si la mise à niveau réussit, réessayez l'opération de sauvegarde. Sinon, utilisez l'une des méthodes suivantes pour résoudre le problème :

    • Supprimez le CustomResourceDefinition en exécutant la commande kubectl delete crd si le CustomResourceDefinition n'est pas utilisé dans le cluster.

      kubectl delete crd CRD_NAME
      

      Remplacez CRD_NAME par le nom de l'CustomResourceDefinition que vous souhaitez supprimer.

    • Activez le mode permissif sur le plan de sauvegarde, ce qui permet à Sauvegarde pour GKE d'ignorer la ressource (y compris CustomResourceDefinitions dans la version d'API v1beta1) et de poursuivre le reste de l'opération de sauvegarde. Pour savoir comment activer le mode permissif, consultez Activer le mode permissif sur un plan de sauvegarde.

  5. Réessayez de sauvegarder vos données. Si l'opération continue d'échouer, contactez l'assistance Cloud Customer Care pour obtenir de l'aide.

Étapes suivantes