Esta página explica como ativar o modo permissivo num plano de backup.
Durante a execução da cópia de segurança, se a Cópia de segurança para o GKE detetar condições que provavelmente vão causar a falha do restauro, a própria cópia de segurança falha. O motivo da falha é fornecido no campo state_reason da cópia de segurança. Na Google Cloud consola, este campo é denominado Motivo do estado.
Acerca do modo permissivo
Quando as falhas de cópia de segurança não são aceitáveis e não é possível resolver os problemas subjacentes, pode ativar o modo permissivo. O modo permissivo garante que as cópias de segurança são concluídas com êxito, mesmo que sejam detetados recursos do GKE que possam causar falhas de restauro durante o processo de cópia de segurança. Os detalhes sobre os problemas são fornecidos no campo Motivo do estado da cópia de segurança.
Recomendamos que use esta opção apenas se compreender os problemas e puder implementar soluções alternativas durante o processo de restauro. Para ver uma lista de potenciais mensagens de erro no campo Motivo do estado da cópia de segurança com ações recomendadas, consulte o artigo Resolva falhas de cópia de segurança.
Ative o modo permissivo
Siga as instruções que se seguem para ativar o modo permissivo:
gcloud
Para ativar o modo permissivo, execute o comando
gcloud beta container backup-restore backup-plans update
:
gcloud beta container backup-restore backup-plans update BACKUP_PLAN \
--project=PROJECT_ID \
--location=LOCATION
--permissive-mode
Substitua o seguinte:
BACKUP_PLAN
: o nome do plano alternativo que quer atualizar.PROJECT_ID
: o ID do seu projeto Google Cloud.LOCATION
: a região de computação para o recurso, por exemplo,us-central1
. Consulte o artigo Acerca das localizações de recursos.Para ver uma lista completa de opções, consulte a documentação de gcloud beta container backup-restore backup-plans update.
Consola
Siga as instruções abaixo para ativar o modo permissivo na Google Cloud consola:
Na Google Cloud consola, aceda à página Google Kubernetes Engine.
No menu de navegação, clique em Backup for GKE.
Clique no separador Planos de contingência.
Expanda o cluster e clique no nome do plano.
Clique no separador Detalhes para editar os detalhes do plano.
Clique em Editar para editar a secção com o Modo de backup.
Clique na caixa de verificação Modo permissivo e clique em Guardar alterações.
Terraform
Atualize o recurso google_gke_backup_backup_plan
existente.
resource "google_gke_backup_backup_plan" "NAME" {
...
backup_config {
permissive_mode = true
...
}
}
Substitua o seguinte:
NAME
: o nome dogoogle_gke_backup_backup_plan
que quer atualizar.
Para mais informações, consulte gke_backup_backup_plan.
Resolva problemas de falhas de cópias de segurança
A tabela seguinte fornece explicações e ações recomendadas para várias mensagens de falha de cópia de segurança apresentadas no campo Motivo do estado da cópia de segurança.
Mensagem de falha da cópia de segurança | Descrição da mensagem e motivo da falha | Ação recomendada |
---|---|---|
|
Descrição: uma definição de recurso personalizado (CRD) no cluster foi originalmente aplicada como apiextensions.k8s.io/v1beta1 e não tem um esquema estrutural necessário em apiextensions.k8s.io/v1 .Motivo: a Cópia de segurança do GKE não consegue definir automaticamente o esquema estrutural. A restauração do CRD em clusters do Kubernetes v1.22 ou superior, onde apiextensions.k8s.io/v1beta1 não está disponível, faz com que a restauração falhe. Esta falha ocorre quando restaura recursos personalizados definidos pela CRD.
|
Recomendamos que use as seguintes opções:
Quando o modo permissivo está ativado, o CRD sem um esquema estrutural não é feito uma cópia de segurança num cluster do Kubernetes v1.22 ou superior. Para restaurar com êxito uma cópia de segurança deste tipo, tem de excluir os recursos publicados pelo CRD do restauro ou criar o CRD no cluster de destino antes de iniciar o restauro. |
|
Descrição: um serviço de API no cluster está
mal configurado. Isto faz com que os pedidos ao caminho da API devolvam "Failed to
query API resources." (Falha ao consultar recursos da API). O serviço subjacente pode não existir ou ainda não estar
pronto. Motivo: a Cópia de segurança do GKE não consegue fazer uma cópia de segurança de recursos publicados pela API indisponível. |
Verifique o serviço subjacente no
spec.service do serviço de API para se certificar de que está pronto.Quando o modo permissivo está ativado, não é feito uma cópia de segurança dos recursos dos grupos de APIs que não foram carregados. |
|
Descrição: no Kubernetes v1.23 e anterior, as contas de serviço geram automaticamente um token suportado por um segredo. No entanto, nas versões posteriores, o Kubernetes removeu esta funcionalidade de token gerado automaticamente. A
Um pod no cluster pode ter montado o volume secreto no sistema de ficheiros dos
respetivos contentores. Motivo: se a cópia de segurança para o GKE tentar restaurar uma conta de serviço juntamente com o respetivo segredo gerado automaticamente e um pod que monte o volume secreto, o restauro parece ser bem-sucedido. No entanto, o Kubernetes remove o segredo, o que faz com que o pod fique bloqueado na criação do contentor e não seja iniciado. |
Defina o campo spec.serviceAccountName no Pod. Esta ação garante que o token é montado automaticamente em /var/run/secrets/kubernetes.io/serviceaccount nos contentores. Para mais informações, consulte a documentação
Configure contas de serviço para pods.Quando o modo permissivo está ativado, o segredo é copiado de segurança, mas não pode ser montado em pods em clusters do Kubernetes v1.24 ou superior. |
Definições de recursos personalizados (CRDs) comuns com problemas e ações recomendadas
Seguem-se alguns CRDs comuns que têm problemas de cópia de segurança e as ações que recomendamos para resolver os problemas:
capacityrequests.internal.autoscaling.k8s.io
: Este CRD foi usado temporariamente em clusters v1.21. Executekubectl delete crd capacityrequests.internal.autoscaling.k8s.io
para remover o CRD.scalingpolicies.scalingpolicy.kope.io
: Este CRD foi usado para controlar recursos do fluentd, mas o GKE migrou para a utilização do fluentbit. Executekubectl delete crd scalingpolicies.scalingpolicy.kope.io
para remover o CRD.memberships.hub.gke.io
: Executekubectl delete crd memberships.hub.gke.io
para remover o CRD se não existirem recursos de apoio. Ative o modo permissivo se existirem recursos de apoio.applications.app.k8s.io
: Ative o modo permissivo com uma compreensão do comportamento de restauro.