Este documento descreve os erros e os códigos correspondentes que podem ocorrer ao usar o Backup para GKE para realizar operações de restauração. Cada seção inclui considerações sobre como realizar ações para resolver os erros de restauração e instruções sobre como resolver os erros da operação de restauração.
Erro 200010301: falha ao concluir a operação de restauração devido a um serviço de webhook de admissão indisponível
O erro 200010301
ocorre quando uma tentativa de concluir uma operação de restauração falha
porque um serviço de webhook de admissão, também chamado de callback HTTP, está indisponível, o que resulta na seguinte mensagem de erro. A mensagem de erro
indica que o servidor da API do GKE tentou entrar em contato com um
webhook de admissão ao tentar restaurar um recurso, mas o serviço que apoiava o webhook estava indisponível ou não foi encontrado:
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.
Esse erro ocorre quando um recurso do GKE ValidatingAdmissionWebhook
ou
MutatingAdmissionWebhook
está ativo no cluster de destino, mas o servidor da API do GKE não consegue alcançar o endpoint
configurado no webhook. Os webhooks de admissão interceptam solicitações ao servidor da API do GKE, e a configuração deles especifica como o servidor da API do GKE precisa consultar as solicitações.
O clientConfig
do webhook especifica o back-end que processa as solicitações de admissão, que pode ser um serviço de cluster interno ou um URL externo. A escolha entre essas duas opções depende dos requisitos operacionais e de arquitetura específicos do seu webhook. Dependendo do tipo de opção, a operação de restauração pode ter falhado pelos seguintes motivos:
Serviços no cluster: o serviço do GKE e os pods de suporte não são restaurados nem ficam prontos quando o servidor da API do GKE tenta chamar o webhook. Isso ocorre durante operações de restauração em que as configurações de webhook com escopo de cluster são aplicadas antes que os serviços com namespace estejam totalmente em um estado
ready
.URLs externos: o endpoint externo está temporariamente indisponível devido a problemas de conectividade de rede entre o cluster do GKE e o endpoint externo ou devido a problemas de resolução de DNS ou regras de firewall.
Para resolver esse erro, siga estas instruções:
Identifique o webhook com falha mencionado na mensagem de erro. Por exemplo,
failed calling webhook "..."
.Inspecione o webhook executando o comando
kubectl get validatingwebhookconfigurations
:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yaml
Substitua
WEBHOOK_NAME
pelo nome do webhook identificado na mensagem de erro.Também é possível usar o comando
kubectl get mutatingwebhookconfigurations
para inspecionar o webhook:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yaml
Substitua
WEBHOOK_NAME
pelo nome do webhook identificado na mensagem de erro.Siga estas etapas de solução de problemas com base no tipo de configuração:
Baseado em serviço
clientConfig
Defina uma ordem de restauração personalizada modificando o recurso
RestorePlan
para incluir umRestoreOrder
com entradasGroupKindDependency
. Isso permite que os componentes que dão suporte ao webhook, comoDeployment
,StatefulSet
ouService
, sejam restaurados e fiquem prontos antes doValidatingWebhookConfiguration
ouMutatingWebhookConfiguration
.Para instruções sobre como definir uma ordem de restauração personalizada, consulte Especificar a ordem de restauração de recursos durante a restauração.
Essa abordagem pode falhar porque os pods do serviço não entram em um estado totalmente
ready
, mesmo depois que o objetoService
é criado. Outro motivo para a falha é que a configuração do webhook pode ser criada inesperadamente por outro aplicativo. Como alternativa, você pode fazer uma operação de restauração em duas etapas seguindo estas etapas:Crie um recurso
Restore
usando o backup ao configurar a operação de restauração com um filtro refinado que inclui os recursos específicos necessários para o funcionamento do webhook, por exemplo,Namespaces
,Deployments
,StatefulSets
ouServices
.Para mais informações sobre como configurar a restauração com um filtro detalhado, consulte Ativar a restauração detalhada.
Crie outro recurso
Restore
para a operação de backup e configure o restante dos recursos escolhidos.
clientConfig
com base em URLVerifique se o endpoint HTTPS externo está ativo, acessível e funcionando corretamente.
Confirme se há conectividade de rede dos nós e do plano de controle do cluster do GKE para o URL externo. Talvez seja necessário verificar as regras de firewall, por exemplo, se você estiver usando a nuvem privada virtual, no local ou um provedor de nuvem que hospede o webhook, as políticas de rede e a resolução de DNS.
Repita a operação de restauração. Se a operação continuar falhando, entre em contato com o Cloud Customer Care para receber mais ajuda.
Erro 200010302: falha ao concluir a operação de restauração devido a uma solicitação de criação de recurso negada
O erro 200010302
ocorre quando uma tentativa de concluir uma operação de restauração falha
porque um webhook de admissão nega uma solicitação de criação de recurso, o que resulta
na seguinte mensagem de erro indicando que um recurso do seu backup
não pôde ser criado no cluster de destino porque um webhook de admissão ativo
interceptou e rejeitou a solicitação com base em uma 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}
Esse erro é causado pelo conjunto de configurações no cluster de destino do GKE, que tem um ValidatingAdmissionWebhook
ou MutatingAdmissionWebhook
que impõe regras específicas à criação e modificação de recursos, bloqueando a solicitação de criação de recursos.
Por exemplo, um webhook impede a criação de um recurso porque um recurso relacionado, mas conflitante, já existe no cluster. Por exemplo, um webhook
pode negar a criação de uma implantação se ela já for gerenciada por um recurso da API HorizontalPodAutoscaler
do GKE.
Para resolver esse erro, siga estas instruções:
Identifique o webhook que está negando a solicitação usando a mensagem de erro que ocorre quando a operação de restauração falha. Por exemplo,
webhook WEBHOOK_NAME denied the request
. A mensagem de erro contém as seguintes informações:Nome do webhook: o nome do webhook que nega a solicitação.
Motivo da recusa: o motivo específico para negar a solicitação.
Inspecione o webhook usando o comando
kubectl get validatingwebhookconfigurations
:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yaml
Substitua
WEBHOOK_NAME
pelo nome do webhook identificado na mensagem de erro.Também é possível usar o comando
kubectl get mutatingwebhookconfigurations
para inspecionar o webhook:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yaml
Substitua
WEBHOOK_NAME
pelo nome do webhook identificado na mensagem de erro.Resolva o problema subjacente no cluster de destino. A ação correta depende do erro específico. Por exemplo, se houver um conflito de
HorizontalPodAutoscaler
, exclua oHorizontalPodAutoscaler
existente no cluster de destino antes de executar a restauração para permitir a criação das cargas de trabalho em backup e dos recursos associados.Repita a operação de restauração. Se a operação de restauração continuar falhando, entre em contato com o Cloud Customer Care para receber mais ajuda.
Erro 200060202: falha ao concluir a operação de restauração devido à falta de recursos do GKE durante a validação da carga de trabalho
O erro 200060202
ocorre durante a fase de validação da carga de trabalho de uma operação de restauração
quando um recurso do GKE que o Backup para GKE espera validar não é encontrado no cluster de destino, resultando na seguinte
mensagem de erro:
Workload Validation Error: [KIND] "[NAME]" not found
Por exemplo, Example: Workload Validation Error: pods "jenkins-0" not found
.
Esse erro ocorre quando o Backup para GKE cria ou atualiza o recurso do GKE como parte do processo da operação de restauração, mas quando a etapa de validação começa, um ou mais recursos do GKE não estão mais presentes no cluster de destino porque foram excluídos após a criação ou atualização inicial pelo processo de restauração, mas antes da conclusão da validação da carga de trabalho para o recurso do GKE. Esse erro pode ocorrer pelos seguintes motivos:
Exclusão manual: um usuário ou administrador excluiu manualmente o recurso usando
kubectl
ou outras ferramentas Google Cloud .Automação externa: controladores GitOps, como o Config Sync, o ArgoCD, o Flux, scripts personalizados ou outras ferramentas de gerenciamento de cluster, reverteram ou excluíram o recurso para corresponder a um estado desejado em um repositório.
Controladores do GKE: um controlador do GKE excluiu um recurso porque ele entra em conflito com outros recursos ou políticas, ou uma cadeia
OwnerReference
leva à coleta de lixo, ou o processo de limpeza automatizada pelo GKE que exclui recursos dependentes quando o recursoowner
é excluído.
Para resolver esse erro, siga estas instruções:
Identifique o recurso ausente usando a mensagem de erro que aparece quando a operação de restauração não é concluída.
Localize o namespace a que o recurso pertence usando um dos seguintes métodos:
Registros de auditoria do GKE: examine os registros de auditoria do GKE gerados quando você tentou fazer a operação de restauração. É possível filtrar registros de operações de exclusão nos recursos
Kind
eName
. A entrada de registro de auditoria contém o namespace original.Detalhes do backup: revise o escopo da operação de restauração e o conteúdo do backup. O índice de backup mostra o namespace original do recurso. Também é possível verificar se o
RestorePlan
contém umTransformationRule
que especifica regras para restaurar o recurso no namespace escolhido.Pesquisar em namespaces: use o comando
kubectl get
para pesquisar o recurso em todos os namespaces:kubectl get KIND --all-namespaces | grep NAME
Substitua
KIND
eNAME
pelos valores da mensagem de erro. Se o recurso ainda existir, esse comando vai mostrar o namespace dele.
Verifique a exclusão usando o comando
kubectl get
:kubectl get KIND NAME -n [NAMESPACE]
Substitua
KIND
eNAME
pelos valores da mensagem de erro. Você vai receber uma mensagem de erronot found
.Investigue a causa da exclusão usando um dos seguintes métodos:
Registros de auditoria do GKE: identificam qual entidade emitiu a solicitação de exclusão. Por exemplo, o usuário, a conta de serviço ou o controlador.
Analise as automações configuradas: se você usa o GitOps ou outras ferramentas de automação, verifique os registros e o status delas para saber se houve interferência nos recursos restaurados.
Examinar eventos relacionados: verifique os eventos do GKE no namespace determinado usando o comando
kubectl get events
:kubectl get events -n NAMESPACE --sort-by='.lastTimestamp'
Substitua
NAMESPACE
pelo nome do namespace.
Resolva a causa da exclusão do recurso com base nos resultados da etapa anterior. Por exemplo, pausar automações conflitantes, corrigir configurações incorretas ou ajustar as permissões de usuário.
Recupere o recurso ausente usando um dos seguintes métodos:
Reaplicar arquivos de manifesto: se você tiver o manifesto do recurso ausente, poderá reaplicá-lo ao namespace correto.
Faça uma restauração detalhada: execute uma operação de restauração detalhada para restaurar seletivamente apenas o recurso ausente do mesmo backup, o que garante que você especifique o namespace correto. Para mais informações sobre como realizar uma operação de restauração refinada, consulte Ativar a restauração refinada.
Repita a operação de restauração. Se a operação de restauração continuar falhando, entre em contato com o Cloud Customer Care para receber mais ajuda.