En este documento, se describen los errores y los códigos correspondientes que puedes encontrar cuando usas la Copia de seguridad para GKE para realizar operaciones de restablecimiento. En cada sección, se incluyen aspectos que debes tener en cuenta cuando realices acciones para resolver los errores de restablecimiento, así como instrucciones para resolver los errores de la operación de restablecimiento.
Error 200010301: No se pudo completar la operación de restablecimiento debido a que el servicio de webhook de admisión no está disponible
El error 200010301
se produce cuando falla un intento de completar una operación de restablecimiento porque no está disponible un servicio de webhook de admisión, también conocido como devolución de llamada HTTP, lo que genera el siguiente mensaje de error. El mensaje de error indica que el servidor de la API de GKE intentó comunicarse con un webhook de admisión mientras intentaba restablecer un recurso, pero el servicio que respaldaba el webhook no estaba disponible o no se encontró:
resource [/example-group/ClusterSecretStore/example-store] restore failed:
Internal error occurred: failed calling webhook "example-webhook.io":
failed to call webhook: Post "https://example-webhook.example-namespace.svc:443/validate-example": service "example-webhook" not found.
Este error ocurre cuando un recurso de GKE ValidatingAdmissionWebhook
o MutatingAdmissionWebhook
está activo en el clúster de destino, pero el servidor de la API de GKE no puede acceder al extremo configurado en el webhook. Los webhooks de admisión interceptan las solicitudes al servidor de la API de GKE, y su configuración especifica cómo el servidor de la API de GKE debe consultar las solicitudes.
El clientConfig
del webhook especifica el backend que controla las solicitudes de admisión, que puede ser un servicio de clúster interno o una URL externa. La elección entre estas dos opciones depende de los requisitos operativos y de arquitectura específicos de tu webhook. Según el tipo de opción, es posible que la operación de restablecimiento haya fallado por los siguientes motivos:
Servicios en el clúster: El servicio de GKE y sus Pods de respaldo no se restablecieron ni están listos cuando el servidor de la API de GKE intentó llamar al webhook. Esto ocurre durante las operaciones de restablecimiento en las que se aplican configuraciones de webhook con alcance de clúster antes de que los servicios con espacio de nombres estén completamente en un estado
ready
.URLs externas: El extremo externo no está disponible temporalmente debido a problemas de conectividad de red entre el clúster de GKE y el extremo externo, o bien debido a problemas de resolución de DNS o reglas de firewall.
Para resolver este error, sigue estas instrucciones:
Identifica el webhook con errores que se menciona en el mensaje de error. Por ejemplo,
failed calling webhook "..."
.Ejecuta el comando
kubectl get validatingwebhookconfigurations
para inspeccionar el webhook:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yaml
Reemplaza
WEBHOOK_NAME
por el nombre del webhook que se identificó en el mensaje de error.También puedes usar el comando
kubectl get mutatingwebhookconfigurations
para inspeccionar el webhook:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yaml
Reemplaza
WEBHOOK_NAME
por el nombre del webhook que se identificó en el mensaje de error.Realiza los siguientes pasos para solucionar problemas según el tipo de configuración:
Basado en servicio
clientConfig
Para definir un orden de restauración personalizado, modifica el recurso
RestorePlan
para incluir unRestoreOrder
con entradasGroupKindDependency
. Esto permite que los componentes que respaldan el webhook, comoDeployment
,StatefulSet
oService
, se restablezcan y estén listos antes deValidatingWebhookConfiguration
oMutatingWebhookConfiguration
.Para obtener instrucciones sobre cómo definir un orden de restablecimiento personalizado, consulta Cómo especificar el orden de restablecimiento de los recursos durante el restablecimiento.
Este enfoque puede fallar porque los Pods del servicio no entran en un estado
ready
completo incluso después de que se crea el objetoService
. Otro motivo de falla podría ser que otra aplicación haya creado inesperadamente la configuración del webhook. Como alternativa, puedes realizar una operación de restablecimiento en dos etapas siguiendo estos pasos:Crea un recurso
Restore
con la copia de seguridad. Para ello, configura la operación de restauración con un filtro de restauración detallado que incluya los recursos específicos que se requieren para que funcione el webhook, por ejemplo,Namespaces
,Deployments
,StatefulSets
oServices
.Para obtener más información sobre cómo configurar el restablecimiento con un filtro de restablecimiento detallado, consulta Cómo habilitar el restablecimiento detallado.
Crea otro recurso
Restore
para la operación de copia de seguridad y configura el resto de los recursos que elijas.
clientConfig
basado en URLVerifica el extremo HTTPS externo y asegúrate de que esté activo, sea accesible y funcione correctamente.
Confirma que haya conectividad de red desde los nodos y el plano de control de tu clúster de GKE a la URL externa. También es posible que debas verificar las reglas de firewall, por ejemplo, si usas una nube privada virtual, una solución local o un proveedor de servicios en la nube que aloja el webhook, las políticas de red y la resolución de DNS.
Vuelve a intentar la operación de restablecimiento. Si la operación sigue fallando, comunícate con Atención al cliente de Cloud para obtener más ayuda.
Error 200010302: No se pudo completar la operación de restablecimiento debido a que se rechazó la solicitud de creación de recursos
El error 200010302
se produce cuando falla un intento de completar una operación de restablecimiento porque un webhook de admisión rechaza una solicitud de creación de recursos, lo que genera el siguiente mensaje de error que indica que no se pudo crear un recurso de tu copia de seguridad en el clúster de destino porque un webhook de admisión activo interceptó la solicitud y la rechazó según una política personalizada:
[KubeError]; e.g. resource
[/example-namespace/example-api/ExampleResource/example-name]
restore failed: admission webhook "example-webhook.example.com" denied the request: {reason for denial}
Este error se debe a la configuración establecida en el clúster de GKE de destino, que tiene un ValidatingAdmissionWebhook
o un MutatingAdmissionWebhook
que aplica reglas específicas sobre la creación y modificación de recursos, lo que bloquea la solicitud de creación de recursos.
Por ejemplo, un webhook impide la creación de un recurso porque ya existe un recurso relacionado, pero en conflicto, en el clúster. Por ejemplo, un webhook podría rechazar la creación de una implementación si ya la administra un recurso de la API de HorizontalPodAutoscaler
de GKE.
Para resolver este error, sigue estas instrucciones:
Identifica el webhook que rechaza la solicitud con el mensaje de error que se produce cuando falla la operación de restablecimiento. Por ejemplo,
webhook WEBHOOK_NAME denied the request
. El mensaje de error contiene la siguiente información:Nombre del webhook: Es el nombre del webhook que rechaza la solicitud.
Reason for denial: Es el motivo específico por el que se rechazó la solicitud.
Inspecciona el webhook con el comando
kubectl get validatingwebhookconfigurations
:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yaml
Reemplaza
WEBHOOK_NAME
por el nombre del webhook que identificaste en el mensaje de error.También puedes usar el comando
kubectl get mutatingwebhookconfigurations
para inspeccionar el webhook:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yaml
Reemplaza
WEBHOOK_NAME
por el nombre del webhook que identificaste en el mensaje de error.Resuelve el problema subyacente en el clúster de destino. La acción correcta depende del error específico. En el ejemplo, si hay un conflicto de
HorizontalPodAutoscaler
, debes borrar elHorizontalPodAutoscaler
existente en el clúster de destino antes de ejecutar la restauración para permitir que se creen las cargas de trabajo de la copia de seguridad y sus recursos asociados.Vuelve a intentar la operación de restablecimiento. Si la operación de restablecimiento sigue fallando, comunícate con Atención al cliente de Cloud para obtener más ayuda.
Error 200060202: No se pudo completar la operación de restablecimiento debido a la falta de recursos de GKE durante la validación de la carga de trabajo
El error 200060202
ocurre durante la fase de validación de la carga de trabajo de una operación de restauración cuando no se puede encontrar en el clúster de destino un recurso de GKE que Copia de seguridad para GKE espera validar, lo que genera el siguiente mensaje de error:
Workload Validation Error: [KIND] "[NAME]" not found
Por ejemplo, Example: Workload Validation Error: pods "jenkins-0" not found
Este error se produce cuando Copia de seguridad para GKE crea o actualiza correctamente el recurso de GKE como parte del proceso de la operación de restablecimiento, pero, cuando comienza la etapa de validación, uno o más de los recursos de GKE ya no están presentes en el clúster de destino porque se borraron después de que el proceso de restablecimiento los creó o actualizó inicialmente, pero antes de que se pudiera completar la validación de la carga de trabajo para el recurso de GKE. Este error puede ocurrir por los siguientes motivos:
Borrado manual: Un usuario o administrador borró manualmente el recurso con
kubectl
o con otras herramientas de Google Cloud .Automatización externa: Los controladores de GitOps, como Sincronizador de configuración, ArgoCD, Flux, secuencias de comandos personalizadas o cualquier otra herramienta de administración de clústeres, revirtieron o borraron el recurso para que coincidiera con el estado deseado en un repositorio.
Controladores de GKE: Un controlador de GKE borró un recurso porque entra en conflicto con otros recursos o políticas, o bien una cadena de
OwnerReference
conduce a la recolección de elementos no utilizados, o el proceso de limpieza automatizado de GKE que borra los recursos dependientes cuando se borra su recursoowner
.
Para resolver este error, sigue estas instrucciones:
Identifica el recurso faltante con el mensaje de error que aparece cuando no se completa la operación de restablecimiento.
Ubica el espacio de nombres al que pertenece el recurso con uno de los siguientes métodos:
Registros de auditoría de GKE: Examina los registros de auditoría de GKE que se generaron cuando intentaste realizar la operación de restauración. Puedes filtrar los registros de las operaciones de borrado en los recursos
Kind
yName
. La entrada de registro de auditoría contiene el espacio de nombres original.Detalles de la copia de seguridad: Revisa el alcance de la operación de restablecimiento y el contenido de la copia de seguridad. El índice de la copia de seguridad muestra el espacio de nombres original del recurso. También puedes verificar si
RestorePlan
contiene unTransformationRule
que especifica reglas para restablecer el recurso en el espacio de nombres que elijas.Buscar en todos los espacios de nombres: Usa el comando
kubectl get
para buscar el recurso en todos los espacios de nombres:kubectl get KIND --all-namespaces | grep NAME
Reemplaza
KIND
yNAME
por los valores del mensaje de error. Si el recurso aún existe, este comando mostrará su espacio de nombres.
Verifica la eliminación con el comando
kubectl get
:kubectl get KIND NAME -n [NAMESPACE]
Reemplaza
KIND
yNAME
por los valores del mensaje de error. Deberías recibir un mensaje de errornot found
.Investiga la causa de la eliminación con uno de los siguientes métodos:
Registros de auditoría de GKE: Identifican qué entidad emitió la solicitud de eliminación. Por ejemplo, el usuario, la cuenta de servicio o el controlador.
Revisa las automatizaciones configuradas: Si usas GitOps o cualquier otra herramienta de automatización, verifica sus registros y estado para ver si interfirieron en los recursos restablecidos.
Examina los eventos relacionados: Verifica los eventos de GKE en el espacio de nombres determinado con el comando
kubectl get events
:kubectl get events -n NAMESPACE --sort-by='.lastTimestamp'
Reemplaza
NAMESPACE
por el nombre del espacio de nombres.
Aborda la causa de la eliminación del recurso según los resultados del paso anterior. Por ejemplo, pausar automatizaciones en conflicto, corregir errores de configuración o ajustar los permisos de los usuarios.
Recupera el recurso faltante con uno de los siguientes métodos:
Vuelve a aplicar los archivos de manifiesto: Si tienes el manifiesto del recurso faltante, puedes volver a aplicarlo al espacio de nombres correcto.
Realiza un restablecimiento detallado: Realiza una operación de restablecimiento detallado para restablecer de forma selectiva solo el recurso faltante de la misma copia de seguridad, lo que garantiza que especifiques el espacio de nombres correcto. Para obtener más información sobre cómo realizar una operación de restablecimiento detallado, consulta Habilita el restablecimiento detallado.
Vuelve a intentar la operación de restablecimiento. Si la operación de restablecimiento sigue fallando, comunícate con Atención al cliente de Cloud para obtener más ayuda.