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 de la CRD – Version d'API v1beta1 non compatible

L'erreur 100020102 se produit lorsqu'une tentative de sauvegarde d'une CustomResourceDefinition initialement appliquée en tant que version apiextensions.k8s.io/v1beta1 échoue, car elle ne dispose pas du schéma structurel requis dans la version d'API apiextensions.k8s.io/v1. 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 d'API apiextensions.k8s.io/v1 a été supprimée dans Google Kubernetes Engine version 1.22. Pour en savoir plus sur la suppression de l'API pour GKE version 1.22, consultez la section Suppressions d'API pour GKE v1.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 une CustomResourceDefinition créée 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 cette CustomResourceDefinition est considérée comme une erreur critique, car elle risque de ne pas être restaurée correctement dans un cluster plus récent.

Pour résoudre cette erreur, procédez comme suit :

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

    kubectl get crd CRD_NAME
    

    Remplacez CRD_NAME par le nom de la CustomResourceDefinition dans votre message d'erreur.

  2. Dans la sortie YAML, vérifiez si la CustomResourceDefinition a été correctement convertie de l'API vbeta1 vers 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 le champ schema.openAIV3Schema est manquant dans l'une des spec.versions, cela signifie qu'aucun schéma structurel n'est défini pour cette version dans la CustomResourceDefinition.

    2. status.conditions: recherchez la condition status.conditions en trouvant la condition type:NonStructuralSchema. Si le status.conditions's status est true, cela confirme explicitement que le schéma n'est pas structurel.

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

    1. Modifiez la CustomResourceDefinition existante pour la 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 en savoir plus sur l'ajout d'un schéma structurel, consultez la section Spécifier un schéma structurel.

    2. Appliquez le 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 la CustomResourceDefinition en exécutant la commande kubectl delete crd si elle n'est pas utilisée dans le cluster.CustomResourceDefinition

      kubectl delete crd CRD_NAME
      

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

    • Activez le mode permissif sur le plan de sauvegarde. Cela permet à Sauvegarde pour GKE d'ignorer la ressource, y compris les CustomResourceDefinitions dans la version d'API v1beta1, et de poursuivre le reste de l'opération de sauvegarde. Pour en savoir plus sur l'activation du mode permissif, consultez la section Activer le mode permissif sur un plan de sauvegarde.

  5. Réessayez l'opération de sauvegarde. Si l'opération échoue toujours, contactez l'assistance Cloud Customer Care pour obtenir de l'aide.

Erreur 100040102 : Espace de noms introuvable

L'erreur 100040102 se produit lorsqu'une tentative d'opération de sauvegarde échoue, car un espace de noms spécifié dans le champ d'application de la sauvegarde est introuvable dans le cluster. L'agent Sauvegarde pour GKE n'a pas pu trouver un ou plusieurs espaces de noms explicitement listés dans le champ selectedNamespaces de la configuration BackupPlan. Sauvegarde pour GKE nécessite que tous les espaces de noms spécifiés soient présents dans le cluster au moment où l'opération de sauvegarde est lancée. Si l'espace de noms est introuvable, le message d'erreur suivant s'affiche :

Namespace [NAMESPACE_NAME] is not found.

Pour résoudre ce problème, procédez comme suit :

  1. Vérifiez que l'espace de noms a été saisi correctement en consultant la liste selectedNamespaces dans votre configuration BackupPlan.

  2. Vérifiez que l'espace de noms signalé dans le message d'erreur existe en exécutant la commande kubectl get namespace :

    kubectl get namespace NAMESPACE_NAME
    

    Remplacez NAMESPACE_NAME par le nom de l'espace de noms signalé dans le message d'erreur.

    Si l'espace de noms n'existe pas, un message s'affiche indiquant qu'il n'a pas été trouvé, par exemple : Error from server (NotFound): namespaces "[NAMESPACE_NAME]" not found.

  3. Corrigez le BackupPlan. Si l'espace de noms a été mal orthographié, mettez à jour le BackupPlan avec le nom d'espace de noms correct. Si l'espace de noms n'existe plus et n'a pas besoin d'être sauvegardé, supprimez-le de la liste selectedNamespaces dans la configuration BackupPlan.

  4. Réessayez l'opération de sauvegarde après avoir apporté les corrections nécessaires au BackupPlan et lancez une nouvelle sauvegarde.

Si l'opération échoue toujours, contactez l'assistance Cloud Customer Care pour obtenir de l'aide.

Étape suivante