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 :
Identifiez le
CustomResourceDefinition
problématique en exécutant la commandekubectl get crd
:kubectl get crd CRD_NAME
Remplacez
CRD_NAME
par le nom de l'CustomResourceDefinition
indiqué dans votre message d'erreur.Dans le résultat YAML, vérifiez si
CustomResourceDefinition
a été correctement converti de l'APIvbeta1
à l'APIv1
en recherchant les conditions suivantes :spec.versions
: recherchez la conditionspec.versions
en examinant chaque version listée sous le champspec.versions
. Si l'un desspec.versions
ne comporte pas le champschema.openAIV3Schema
, cela signifie qu'aucun schéma structurel n'est défini pour cette version deCustomResourceDefinition
.status.conditions
: localisez la conditionstatus.conditions
en recherchant la conditiontype:NonStructuralSchema
. Si la valeurstatus
destatus.conditions
esttrue
, cela confirme explicitement que le schéma n'est pas structurel.
Mettez à niveau la version de l'API
CustomResourceDefinition
versv1
en procédant comme suit :Modifiez le
CustomResourceDefinition
existant pour le rendre compatible avec la normev1
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.Appliquez le fichier manifeste
v1
compatible à votre cluster.
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 commandekubectl delete crd
si leCustomResourceDefinition
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'APIv1beta1
) 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.
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.