Solucionar problemas del sistema en Copia de seguridad de GKE

En esta página se describen los errores relacionados con el sistema que pueden producirse al usar Backup para GKE, los aspectos que debes tener en cuenta al crear copias de seguridad de los recursos y los pasos para solucionar el problema.

Error 100020102: modo permisivo estricto. No se ha podido crear una copia de seguridad de CRD. Versión de la API v1beta1 no compatible.

El error 100020102 se produce cuando se intenta crear una copia de seguridad de un CustomResourceDefinition que se aplicó originalmente como una versión apiextensions.k8s.io/v1beta1, pero no se puede porque carece del esquema estructural necesario en la versión de la API apiextensions.k8s.io/v1. Este error genera el siguiente mensaje: Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version.

Este error se produce porque la versión de la API apiextensions.k8s.io/v1 se ha retirado en la versión 1.22 de Google Kubernetes Engine. Para obtener más información sobre la retirada de la API en la versión 1.22 de GKE, consulta el artículo Retirada de APIs en GKE 1.22.

Comportamiento de las operaciones de copia de seguridad en modo no permisivo

En el modo no permisivo o en un plan de copias de seguridad estricto, la operación de copia de seguridad falla si encuentra un recurso del que no se puede crear una copia de seguridad, como un CustomResourceDefinition que se haya creado con la API v1beta1. Este error se produce porque el recurso no tiene el esquema estructural que requiere la API v1. La presencia de este CustomResourceDefinition se considera un error crítico porque es posible que no se restaure correctamente en un clúster más reciente.

Para resolver este error, siga estas instrucciones:

  1. Identifica el CustomResourceDefinition problemático ejecutando el comando kubectl get crd:

    kubectl get crd CRD_NAME
    

    Sustituye CRD_NAME por el nombre del CustomResourceDefinition del mensaje de error.

  2. En el resultado de YAML, comprueba si CustomResourceDefinition se ha convertido correctamente de la API vbeta1 a la API v1 buscando las siguientes condiciones:

    1. spec.versions: busca la condición spec.versions consultando cada versión que aparece en el campo spec.versions. Si falta el campo schema.openAIV3Schema en alguno de los spec.versions, significa que CustomResourceDefinition no tiene un esquema estructural definido para esa versión.

    2. status.conditions: busca la condición status.conditions en la condición type:NonStructuralSchema. Si el status de status.conditions es true, se confirma explícitamente que el esquema no es estructural.

  3. Actualiza la versión de la API CustomResourceDefinition a v1 siguiendo estos pasos:

    1. Edita el CustomResourceDefinition para que sea compatible con el estándar v1 añadiendo un esquema estructural que defina cada campo y su tipo en el recurso personalizado. Para obtener más información sobre cómo añadir un esquema estructural, consulta Especificar un esquema estructural.

    2. Aplica el manifiesto v1 compatible a tu clúster.

  4. Si la actualización se realiza correctamente, vuelve a intentar crear la copia de seguridad. De lo contrario, utilice uno de los siguientes métodos para resolver el problema:

    • Elimina el CustomResourceDefinition ejecutando el comando kubectl delete crd si el CustomResourceDefinition no se está usando en el clúster.

      kubectl delete crd CRD_NAME
      

      Sustituye CRD_NAME por el nombre del CustomResourceDefinition que quieras eliminar.

    • Habilita el modo permisivo en el plan de copia de seguridad, lo que permite que la función de copia de seguridad de GKE omita el recurso (incluido CustomResourceDefinitions en la versión de la API v1beta1) y continúe con el resto de la operación de copia de seguridad. Para obtener más información sobre cómo habilitar el modo Permisivo, consulta el artículo Habilitar el modo Permisivo en un plan de copia de seguridad.

  5. Vuelve a intentar la operación de copia de seguridad. Si la operación sigue fallando, ponte en contacto con Cloud Customer Care para obtener más ayuda.

Siguientes pasos