Soluciona problemas de errores de permisos en Copia de seguridad para GKE

En esta página, se describen los errores de permisos que puedes encontrar cuando usas la Copia de seguridad para GKE, los aspectos que debes tener en cuenta cuando realizas la acción y cómo resolver el error.

Error 100010101: No se pudo crear una copia de seguridad de PersistentVolumeClaim. Falta la vinculación de IAM para el proyecto del arrendatario.

El error 100010101 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim debido a que falta una vinculación de Identity and Access Management para tu proyecto de arrendatario, lo que genera un mensaje de error que indica Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project.

Copia de seguridad para GKE crea instantáneas del Persistent Disk de tu clúster de GKE. Las instantáneas residen en tu proyecto Google Cloud , también conocido como proyecto de consumidor, y Google Cloud las crea dentro de un proyecto de inquilino que administra. El proyecto de arrendatario existe dentro de la organización google.com, separado de tu propia organización.

El agente de servicio dentro del proyecto del arrendatario requiere permisos específicos para usar la clave de encriptación administrada por el cliente (CMEK) que encripta el Persistent Disk al que hace referencia el PersistentVolumeClaim de tu clúster. Este permiso encripta y desencripta los datos de la instantánea. Si el agente de servicio de service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com no tiene el rol de roles/cloudkms.cryptoKeyEncrypterDecrypter en la CMEK de tu disco, la operación de copia de seguridad fallará.

Para resolver este error, sigue estas instrucciones:

  1. Verifica que tengas los permisos de IAM suficientes para modificar las políticas de IAM en la clave de Cloud Key Management Service en la consola de Google Cloud , como roles/cloudkms.admin o roles/owner.

  2. Ubica el agente de servicio de Compute Engine del proyecto de arrendatario con el valor TENANT_PROJECT_NUMBER que se encuentra en el mensaje status reason de la operación de copia de seguridad fallida. Por ejemplo, service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

  3. Ubica la siguiente información de CMEK que se usa para tu Persistent Disk encriptado:

    • Nombre de la clave: Es el nombre de tu clave de encriptación.

    • Llavero de claves: Es el nombre del llavero de claves en el que se encuentra tu clave.

    • Ubicación: Es la ubicación Google Cloud en la que se encuentra tu llave. Por ejemplo: global o us-central1.

  4. Para otorgar al agente de servicio de Compute Engine del proyecto de arrendatario el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, ejecuta el comando gcloud kms keys add-iam-policy-binding con Google Cloud CLI:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Reemplaza lo siguiente:

    • KEY_NAME: Es el nombre de tu clave de encriptación.

    • KEY_RING: es el nombre del llavero de claves.

    • LOCATION: Es la Google Cloud ubicación de tu llave. Por ejemplo: global o us-central1.

    • TENANT_PROJECT_NUMBER: Es el número del proyecto de usuario que obtuviste del mensaje status reason de tu operación de copia de seguridad fallida.

    Si el comando se ejecuta correctamente, el resultado es similar al siguiente:

    - members:
    - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. Vuelve a probar la operación de copia de seguridad. Si la operación sigue sin completarse, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100010104: No se pudo crear una copia de seguridad de PersistentVolumeClaim. Se incumplió la restricción de la política de la organización durante la creación de la instantánea.

El error 100010104 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim debido a un incumplimiento de la restricción de la política de la organización durante la creación de la instantánea, lo que genera un mensaje de error que indica Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot.

Copia de seguridad para GKE crea instantáneas del Persistent Disk de tu clúster de GKE. Las instantáneas residen en tu proyecto Google Cloud , también conocido como proyecto de consumidor, y se crean dentro de un proyecto de usuario administrado por Google Cloud. El proyecto de arrendatario existe dentro de la organización google.com, separado de tu propia organización.

La política de tu organización determina dónde puedes crear recursos de almacenamiento. El error Constraint constraints/compute.storageResourceUseRestrictions violated significa que un recurso o una instantánea incumplen la política porque se crearon en un proyecto de inquilino que no forma parte de la estructura organizativa permitida. Dado que el proyecto del arrendatario se encuentra dentro de la organización de Google, queda fuera de la política que definiste, lo que provoca la falla de la copia de seguridad.

Para resolver este error, sigue estas instrucciones:

  1. Ubica la política de la organización que implementa la restricción constraints/compute.storageResourceUseRestrictions. Para obtener más información sobre cómo ver las políticas de la organización con la consola de Google Cloud , consulta Visualiza las políticas de la organización.

  2. Modifica la política de constraints/compute.storageResourceUseRestrictions para incluir la carpeta del proyecto del arrendatario folders/77620796932 que usa Copia de seguridad para GKE en su lista de entidades permitidas.

  3. Guarda los cambios en la política después de agregar la carpeta a la lista de entidades permitidas.

  4. Vuelve a probar la operación de copia de seguridad después de que se actualice y propague la política de la organización, lo que suele tardar unos minutos. La copia de seguridad debe continuar sin incumplir las restricciones de uso de recursos de almacenamiento. Si la operación sigue sin completarse, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100010106: No se pudo crear una copia de seguridad de PersistentVolumeClaim. Falta la vinculación de IAM para el agente de servicio de Copia de seguridad para GKE

El error 100010106 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim debido a una vinculación faltante de Identity and Access Management para tu agente de servicio de Copia de seguridad para GKE, lo que genera un mensaje de error que indica Failed to backup PVC - Missing IAM binding for Backup for GKE service agent.

Copia de seguridad para GKE requiere permisos para usar la clave de encriptación administrada por el cliente (CMEK) de tu BackupPlan para encriptar y desencriptar volúmenes de discos persistentes. Cuando el agente de servicio de Copia de seguridad para GKE no tiene el rol de roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK de BackupPlan, fallan las operaciones de copia de seguridad.

Para resolver este error, sigue estas instrucciones:

  1. Identifica el agente de servicio de Copia de seguridad para GKE administrado por Google específico para tu proyecto. Por ejemplo, service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com. Puedes encontrar el número de tu proyecto con los siguientes métodos:

    • Usa el panel del proyecto de Google Cloud en la consola de Google Cloud .

    • Ejecuta el comando gcloud projects describe con Google Cloud CLI:

      gcloud projects describe PROJECT_ID –format="value(projectNumber)"
      

      Reemplaza PROJECT_ID por el nombre único de tu proyecto.

  2. Identifica los siguientes detalles de CMEK:

    • Nombre de la clave: Es el nombre de tu clave de encriptación.

    • Llavero de claves: Es el nombre del llavero de claves en el que se encuentra tu clave.

    • Ubicación: Es la ubicación Google Cloud en la que se encuentra tu CMEKBackupPlan. Por ejemplo: global o us-central1.

  3. Para otorgarle al agente de servicio de Copia de seguridad para GKE el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, usa Google Cloud CLI para ejecutar el comando gcloud kms keys add-iam-policy-binding:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Reemplaza lo siguiente:

    • KEY_NAME: Es el nombre de tu clave de encriptación.

    • KEY_RING: es el nombre del llavero de claves.

    • LOCATION: Es la Google Cloud ubicación de tu llave. Por ejemplo: global o us-central1.

    • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud .

  4. Verifica que tengas los permisos de Identity and Access Management necesarios en la clave de Cloud Key Management Service. Por ejemplo, roles/cloudkms.admin o roles/owner.

  5. Verifica que tengas los permisos otorgados. En el resultado del comando gcloud kms keys add-iam-policy-binding anterior, busca una entrada similar a la siguiente:

    -members:
    -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. Vuelve a probar la operación de copia de seguridad después de otorgar los permisos necesarios. Si la operación no se completa correctamente, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100010107: No se pudo crear una copia de seguridad de PersistentVolumeClaim. Falta la vinculación de IAM de la cuenta de servicio del agente (KCP).

El error 100010107 se produce cuando intentas realizar una operación de copia de seguridad de Copia de seguridad para GKE y el agente de servicio del clúster de Google Kubernetes Engine no tiene acceso a tu clave de encriptación administrada por el cliente (CMEK), lo que genera un mensaje que indica Failed to backup PVC - Missing IAM binding - agent service account (KCP).

El agente de servicio del clúster de Google Kubernetes Engine, que suele tener el formato service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com, es fundamental para que tu clúster de GKE interactúe con los servicios de Google Cloud. Cuando tu plan de copias de seguridad usa una clave de encriptación administrada por el cliente (CMEK) Este agente de servicio necesita permisos para encriptar y desencriptar los datos de tu copia de seguridad con tu CMEK. Si el plan de copias de seguridad no tiene el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, las operaciones de copias de seguridad iniciadas desde el clúster fallarán con un error permission denied.

Para resolver este error, sigue estas instrucciones:

  1. Verifica que tengas los permisos correctos para modificar las políticas de IAM en la clave de Cloud Key Management Service. Por ejemplo, cloudkms.admin o roles/owner.

  2. Identifica el agente de servicio del clúster de Google Kubernetes Engine. Google Cloud crea y administra automáticamente este agente de servicio para tus clústeres de GKE. Por ejemplo, service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com Necesitas el número de proyecto para crear la cuenta de servicio completa. Puedes encontrar el número de tu proyecto con uno de los siguientes métodos:

    • Usa el panel del proyecto de Google Cloud en la consola de Google Cloud .

    • Ejecuta el comando gcloud projects describe con Google Cloud CLI:

      gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
      

      Reemplaza PROJECT_ID con el ID del proyecto.

  3. Ubica la siguiente información de la CMEK:

    • Nombre de la clave: Es el nombre de tu clave de encriptación.

    • Llavero de claves: Es el nombre del llavero de claves en el que se encuentra tu clave.

    • Ubicación: Es la ubicación Google Cloud en la que se encuentra tu llave. Por ejemplo: global o us-central1.

  4. Otorga el rol roles/cloudkms.cryptoKeyEncrypterDecrypter a nivel de CMEK. El agente de servicio de Google Kubernetes Engine necesita permisos en tu clave de encriptación. Para otorgar el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, usa Google Cloud CLI para ejecutar el comando gcloud kms key add-iam-policy-binding:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Reemplaza lo siguiente:

    • KEY_NAME: Es el nombre de tu clave de encriptación.

    • KEY_RING: es el nombre del llavero de claves.

    • LOCATION: Es la Google Cloud ubicación de tu llave. Por ejemplo: global o us-central1.

    • PROJECT_NUMBER: el nombre del proyecto.

    El resultado es similar a este:

     - members:
     - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com
     role: roles/cloudkms.cryptoKeyEncrypterDecrypter
     ```
    
  5. Vuelve a intentar la operación de Copia de seguridad para GKE. Si la operación sigue fallando, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100020101: No se pudo crear una copia de seguridad de PersistentVolumeClaim. PersistentVolumeClaim vinculado a un tipo de PersistentVolume no admitido

El error 100020101 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim porque este está vinculado a un tipo de PersistentVolume no compatible.PersistentVolumeClaim El error genera el siguiente mensaje de error: PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.

Este error ocurre cuando tu operación de Copia de seguridad para GKE encuentra un PersistentVolumeClaim que está vinculado a un PersistentVolume que usa un tipo de volumen que no es compatible con la copia de seguridad de datos de Copia de seguridad para GKE. La copia de seguridad para GKE admite principalmente la creación de copias de seguridad de datos de volúmenes de Persistent Disk. Si un PersistentVolumeClaim está vinculado a un PersistentVolume que no es un Persistent Disk, la operación de copia de seguridad falla para los datos del PersistentVolumeClaim.

Para resolver este error, sigue estas instrucciones:

  1. Ejecuta el comando kubectl get pvc para enumerar todos los PersistentVolumeClaims y los PersistentVolumes que están vinculados a ellos. Revisa esta lista para identificar los PersistentVolumes respaldados por tipos de volúmenes no admitidos.

    kubectl get pvc --all-namespaces -o wide
    
  2. Para determinar el tipo de volumen del PersistentVolume respaldado por un tipo de volumen que no admite la Copia de seguridad para GKE, ejecuta el comando kubectl describe pv:

    kubectl describe pv PERSISTENT_VOLUME_NAME
    

    Reemplaza lo siguiente:

    PERSISTENT_VOLUME_NAME: Es el nombre de PersistentVolume que tiene un tipo de volumen no admitido que se muestra como la columna VOLUME en el resultado del paso anterior.

    En el resultado, usa los campos Source y Driver para obtener detalles del aprovisionador de volúmenes:

    • Para los discos persistentes compatibles: El resultado es similar a Source.Driver: pd.csi.storage.gke.io o Source.Type:GCEPersistentDisk.

    • Para los tipos no admitidos que causan el error: El resultado sería un controlador de disco no persistente, por ejemplo, Source.Driver:filestore.csi.storage.gke.io.

  3. Usa uno de los siguientes métodos para resolver el error:

    • Migra a un Persistent Disk persistente: Recomendamos este método para las copias de seguridad de datos completas. Si necesitas crear una copia de seguridad de los datos del volumen, debes usar un Persistent Disk, lo que implica migrar tus datos del tipo de volumen no compatible a un nuevo volumen de CSI de disco persistente. Para obtener ayuda con la migración de un volumen de Persistent Disk, comunícate con Atención al cliente de Cloud.

    • Habilita el modo permisivo en Copia de seguridad para GKE: Recomendamos este método si no se requiere una copia de seguridad de los datos para los volúmenes no admitidos. Si migrar datos no es factible ni necesario (por ejemplo, si el volumen está respaldado por un servicio externo y planeas volver a adjuntarlo durante la operación de restablecimiento), puedes configurar tu plan de copia de seguridad de Copia de seguridad para GKE para permitir que la copia de seguridad continúe en modo permisivo. Para obtener más información sobre cómo habilitar el modo permisivo, consulta Habilita el modo permisivo en un plan de copia de seguridad.

  4. Vuelve a intentar la operación de Copia de seguridad para GKE. Según el método que elijas para resolver el error, la operación de Copia de seguridad para GKE se comporta de las siguientes maneras:

    • Si migraste a un volumen de Persistent Disk, la copia de seguridad debería realizarse correctamente para el volumen, incluidos sus datos.

    • Si habilitaste el modo permisivo, la operación de copia de seguridad debería completarse correctamente, pero no se realizará una copia de seguridad de los datos de los volúmenes no admitidos.

Si la operación sigue fallando, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100020104: No se pudo crear una copia de seguridad de PersistentVolumeClaim. PersistentVolumeClaim no está vinculado a un PersistentVolume

El error 100020104 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim porque el PersistentVolumeClaim no está vinculado a un PersistentVolume. El error genera el siguiente mensaje de error: Failed to backup PVC - PVC Not Bound to a Persistent Volume.

Este error se produce cuando tu operación de Copia de seguridad para GKE intenta crear una copia de seguridad de un PersistentVolumeClaim que no se vinculó correctamente a un PersistentVolume. Un objeto PersistentVolumeClaim debe estar vinculado a un objeto PersistentVolume antes de que una carga de trabajo de consumo, como un Pod, pueda usarlo y, luego, Copia de seguridad para GKE pueda crear una copia de seguridad de él. Si el PersistentVolumeClaim permanece en estado Pending, significa que no hay un PersistentVolume adecuado disponible o que no se puede aprovisionar ni vincular, lo que provoca que falle la operación de copia de seguridad. Un motivo común por el que un PersistentVolumeClaim permanece sin vincular es cuando su StorageClass asociado usa un modo de vinculación WaitForFirstConsumer, pero ningún Pod ni otra carga de trabajo intenta consumir el PersistentVolumeClaim.

Para resolver este error, sigue estas instrucciones:

  1. Para verificar el estado de todos los PersistentVolumeClaims del clúster y, luego, identificar el PersistentVolumeClaim no vinculado, ejecuta el comando kubectl get pvc:

    kubectl get pvc --all-namespaces | grep `Pending`
    
  2. Después de identificar el PersistentVolumeClaim que no está vinculado a un PersistentVolume, recupera información sobre el PersistentVolumeClaim no vinculado ejecutando el comando kubectl describe pvc:

    kubectl describe pvc PVC_NAME -n NAMESPACE_NAME
    

    Reemplaza lo siguiente:

    • PVC_NAME: Es el nombre del PersistentVolumeClaim del que no se pudo crear una copia de seguridad.

    • NAMESPACE_NAME: Es el nombre de tu espacio de nombres en el que reside PersistentVolumeClaim.

    Después de que aparezca la descripción, usa los campos Status y Events para determinar si el PersistentVolumeClaim está vinculado a un PersistentVolume. Si aún no puedes determinar por qué el PersistentVolumeClaim no está vinculado a un PersistentVolume o no puedes resolver el problema identificado, puedes habilitar el modo permisivo en tu plan de respaldo. Para obtener más información sobre cómo habilitar el modo permisivo, consulta Habilita el modo permisivo en un plan de copia de seguridad.

¿Qué sigue?