Problemas conhecidos do Config Sync

Esta página apresenta uma lista de problemas conhecidos para as versões suportadas do Config Sync.

Muitos dos problemas indicados aqui foram corrigidos. A coluna Versão corrigida indica a versão em que a correção foi introduzida. Para receber esta correção, atualize para a versão indicada ou posterior.

Se fizer parte do Google Developer Program, guarde esta página para receber notificações quando for publicada uma nota de lançamento relacionada com esta página. Para saber mais, consulte Páginas guardadas.

Para filtrar os problemas conhecidos por uma versão do produto ou uma categoria de problemas, selecione os seus filtros nos seguintes menus pendentes.

Selecione a versão da sincronização de configuração:

Selecione a categoria do problema:

Em alternativa, filtre os problemas conhecidos:

Categoria Versão identificada Versão corrigida Problema e solução alternativa
Métrica 1.5.0 1.21.0

Corrigido: métricas comunicadas para pacotes eliminados

Se eliminar um objeto RootSync ou RepoSync, mas não eliminar o objeto ResourceGroup com o mesmo nome, a sincronização de configuração continua a comunicar as seguintes métricas para esse objeto ResourceGroup:

  • rg_reconcile_duration_seconds
  • resource_group_total
  • resource_count
  • ready_resource_count
  • resource_ns_count
  • cluster_scoped_resource_count
  • crd_count
  • kcc_resource_count
  • pipeline_error_observed
O objeto ResourceGroup só é eliminado automaticamente se a propagação da eliminação tiver sido ativada antes da eliminação do objeto RootSync ou RepoSync.

Solução alternativa:

Elimine o objeto ResourceGroup:

kubectl delete resourcegroup RESOURCE_GROUP_NAME -n config-management-system

Substitua RESOURCE_GROUP_NAME pelo nome do objeto ResourceGroup que tem de ser eliminado. Para saber mais acerca da ResourceGroup nomenclatura, consulte Controlador ResourceGroup e objetos ResourceGroup.

Condição dos componentes 1.15.0

Reconciler unschedulable

Os reconciliadores do Config Sync requerem quantidades variáveis de recursos, consoante a configuração do RootSync ou do RepoSync. Determinadas configurações requerem mais recursos do que outras.

Se um reconciliador não for agendável, pode dever-se ao facto de estar a pedir mais recursos do que os disponíveis nos seus nós.

Se estiver a usar clusters do GKE no modo padrão, os pedidos de recursos do reconciliador estão definidos como muito baixos. Esta definição foi escolhida numa tentativa de permitir o agendamento, mesmo que isso levasse à limitação e ao desempenho lento, para que o Config Sync funcione em pequenos clusters e pequenos nós. No entanto, nos clusters do GKE Autopilot, os pedidos do reconciliador são definidos como mais elevados para representar de forma mais realista a utilização durante a sincronização.

Solução alternativa:

O GKE Autopilot ou o GKE Standard com o aprovisionamento automático de nós ativado devem conseguir ver quantos recursos são pedidos e criar nós de tamanho adequado para permitir o agendamento. No entanto, se estiver a configurar manualmente os nós ou os tamanhos das instâncias dos nós, pode ter de ajustar essas definições para ter em conta os requisitos de recursos do pod reconciliador.

Métrica 1.15.0

A exportação falhou. Autorização recusada

Por predefinição, quando o reconciler-manager deteta as Credenciais padrão da aplicação, o otel-collector é configurado para exportar métricas para o Prometheus, o Cloud Monitoring e o Monarch.

Solução alternativa:

otel-collector regista erros se não tiver configurado a monitorização na nuvem ou personalizado os filtros de métricas e o Cloud Monarch.

Métrica 1.15.0

Otel-collector a falhar com configuração personalizada

Se tentar modificar ou eliminar um dos ConfigMaps predefinidos, otel-collector ou otel-collector-google-cloud, o otel-collector pode apresentar um erro ou falhar por não conseguir carregar o ConfigMap necessário.

Solução alternativa:

Para personalizar a configuração de exportação de métricas, crie um ConfigMap denominado otel-collector-custom no espaço de nomes config-management-monitoring.

Remediação

O Config Sync está em conflito consigo próprio

O Config Sync pode parecer estar num conflito de controladores. com o próprio. Este problema ocorre se definir o valor predefinido para um campo opcional de um recurso no repositório Git. Por exemplo, a definição de apiGroup: "" para o assunto de um RoleBinding aciona esta ação porque o campo apiGroup é opcional e uma string vazia é o valor predefinido. Os valores predefinidos dos campos de string, booleano e inteiro são "", false e 0 (respetivamente).

Solução alternativa:

Remova o campo da declaração de recursos.

Remediação

O Config Sync está em conflito com os recursos do Config Connector

A sincronização de configuração pode parecer estar a lutar com o Config Connector por um recurso, por exemplo, um StorageBucket. Este problema ocorre se não definir o valor de um campo opcional de um recurso spec.lifecycleRule.condition.withState na origem de dados fidedigna.

Solução alternativa:

Pode evitar este problema adicionando o campo withState=ANY à declaração de recursos. Em alternativa, pode abandonar e, em seguida, voltar a adquirir o recurso com a anotação cnrm.cloud.google.com/state-into-spec: absent.

Fonte de informações verdadeiras 1.13.0 1.20.1

Corrigido: não é possível gerar a chave de acesso para a origem da OCI

Quando o Config Sync está configurado para usar a OCI como a fonte de verdade e fazer a autenticação com a Workload Identity Federation para o GKE, o Config Sync pode ocasionalmente encontrar erros KNV2004 temporários quando tenta fazer a autenticação com o registo de contentores.

Este problema é causado pela biblioteca oauth2, que só atualiza o token de autorização depois de o token já ter expirado.

A mensagem de erro pode incluir o seguinte texto: "oauth2/google: unable to generate access token" ou "ID Token issued at (xxx) is stale to sign-in."

Solução alternativa:

O erro deve resolver-se na próxima vez que o Config Sync tentar obter dados da fonte de verdade.

Quando o Config Sync apresenta erros várias vezes, as novas tentativas tornam-se menos frequentes. Para forçar o Config Sync a tentar novamente mais cedo, elimine o pod do reconciliador. Esta ação faz com que o Config Sync recrie o pod do reconciliador e obtenha imediatamente informações da fonte de informação fidedigna:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Substitua RECONCILER_NAME pelo nome do reconciliador do objeto RootSync ou RepoSync.
Fonte de informações verdadeiras 1.20.0 1.21.3

git-sync ciclos de falhas de contentores após um ficheiro de bloqueio do Git ficar órfão

Se vir o contentor git-sync a falhar repetidamente com erros semelhantes aos seguintes no registo do contentor git-sync, uma invocação git anterior pode ter falhado e deixado um ficheiro de bloqueio órfão no contentor:

    {"logger":""..."msg":"repo contains lock file","error":null,"path":"/repo/source/.git/shallow.lock"}
    ...runtime error: invalid memory address or nil pointer dereference
    

Solução alternativa:

Para contornar este problema, reinicie o pod de reconciliação afetado para lhe dar um novo volume efémero:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Substitua RECONCILER_NAME pelo nome do reconciliador do objeto RootSync ou RepoSync.
Fonte de informações verdadeiras 1.19.0 1.20.0

Corrigido: ficheiro de bloqueio do Git persistente

Se vir um erro semelhante ao seguinte no contentor git-sync, significa que uma invocação git anterior pode ter falhado e deixado um ficheiro de bloqueio persistente no contentor:

    KNV2004: error in the git-sync container: ... fatal: Unable to create '/repo/source/.git/shallow.lock': File exists. ...
    

Solução alternativa:

Para contornar este problema, reinicie o pod de reconciliação afetado para lhe dar um novo volume efémero:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Substitua RECONCILER_NAME pelo nome do reconciliador do objeto RootSync ou RepoSync.
A sincronizar 1.7.0 1.21.0

Corrigido: anotação de mutação de ignorar não respeitada

Um erro no reconciliador de sincronização de configuração faz com que aplique alterações das configurações declaradas, mesmo quando a anotação client.lifecycle.config.k8s.io/mutation está presente. Isto pode fazer com que o estado do objeto no cluster seja substituído.

Solução alternativa:

Pode parar de gerir o objeto gerido adicionando a anotação configmanagement.gke.io/managed: disabled. No entanto, a desativação da gestão impede que o Config Sync recrie o objeto se este for eliminado do cluster. Também impede a aplicação de atualizações adicionais na fonte de dados fidedigna.

A sincronizar 1.5.0 1.20.1

Corrigido: os erros de deteção da API podem fazer com que os objetos geridos sejam marcados incorretamente como Not Found

Se um back-end do serviço de API não estiver em bom estado, pode causar um erro na deteção de APIs. Se isto acontecer enquanto o controlador ResourceGroup está a ser iniciado, após ser atualizado ou reagendado, a cache de recursos não é inicializada, o que faz com que todos os objetos geridos sejam comunicados como Not Found no estado do ResourceGroup.

Este problema ocorre frequentemente quando o metrics-server está em mau estado.

Solução alternativa:

Reinicie o resource-group-controller pod depois de o metrics-server voltar a ficar em bom estado:

    kubectl delete pod -n resource-group-system RESOURCE_GROUP_CONTROLLER_NAME
    
Substitua RESOURCE_GROUP_CONTROLLER_NAME pelo nome do controlador ResourceGroup, que é igual ao nome RootSync ou RepoSync desse pacote.
A sincronizar 1.15.0

Número elevado de pedidos PATCH ineficazes nos registos de auditoria

O remediador da sincronização de configuração usa Execução de teste para detetar a deriva. Isto pode fazer com que os pedidos PATCH sejam apresentados no registo de auditoria, mesmo quando o PATCH não é persistido, porque o registo de auditoria não distingue entre testes e pedidos normais.

Solução alternativa:

Uma vez que o registo de auditoria não consegue distinguir entre pedidos de teste e não de teste, pode ignorar os pedidos PATCH.
Registo privado 1.19.0

O Config Sync não usa o registo privado para implementações do reconciliador

O Config Sync deve substituir as imagens de todas as implementações quando um registo privado estiver configurado. No entanto, o Config Sync não substitui o registo de imagens para imagens nas implementações do reconciliador.

Solução alternativa:

Uma solução para contornar este problema é configurar o espelho do registo de imagens no containerd.

A sincronizar 1.7.0 1.21.0

Corrigido: falha ao escrever o inventário atualizado no cluster

Se a sincronização de configuração não conseguir atualizar o estado de um objeto ResourceGroup, pode encontrar um erro intermitente nos registos do reconciliador semelhante ao seguinte:

    KNV2009: task failed (action: "Inventory", name: "inventory-set-0"): failed to write updated inventory to cluster: Operation cannot be fulfilled on resourcegroups.kpt.dev "root-sync": the object has been modified; please apply your changes to the latest version and try again
    

Este erro deve-se a uma condição de concorrência entre o reconciliador e o controlador ResourceGroup. O ResourceGroup Controller pode atualizar o estado do ResourceGroup antes de o reconciler poder atualizar a especificação do ResourceGroup, o que causa o erro KNV2009.

Solução alternativa:

Este problema não tem uma solução alternativa. O erro deve resolver-se automaticamente.

Terraform Terraform, versão 5.41.0

Não é possível instalar nem atualizar o Config Sync através do Terraform

A versão 5.41.0 do Terraform introduziu um novo campo no recurso google_gke_hub_feature_membership: config_sync.enabled. Uma vez que o valor predefinido deste campo é false, se este campo não estiver explicitamente definido como true, faz com que as instalações ou as atualizações do Config Sync falhem quando usar a versão 5.41.0 ou posterior do Terraform. Também pode ver uma mensagem de erro a indicar git spec not included in configmanagement spec se este problema ocorrer.

Solução alternativa:

  • Se usar o recurso google_gke_hub_feature_membership, defina manualmente o valor config_sync.enabled como true.
  • Se usar o submódulo acm, recomendamos que mude para uma forma alternativa de instalar o Config Sync. Se não conseguir mudar, atualize para a versão v33.0.0.

Google Cloud consola

Erros de dados em falta no painel de controlo da sincronização de configurações na Google Cloud consola

Pode ver erros como "dados em falta" ou "credenciais de cluster inválidas" para clusters do Config Sync em painéis de controlo na Google Cloud consola. Este problema pode ocorrer quando não tem sessão iniciada nos seus clusters GDC (VMware) ou GDC (bare metal).

Solução alternativa:

Se vir estes tipos de erros na Google Cloud consola nos seus clusters GDC (VMware) ou GDC (bare metal), certifique-se de que tem sessão iniciada nos seus clusters com o GKE Identity Service ou o gateway de ligação.

A sincronizar 1.21.0

Corrigido: a sincronização de configuração impede atualizações de recursos abandonados

Antes da versão 1.21.0, um objeto RootSync ou RepoSync eliminado pode deixar para trás várias etiquetas e anotações que o Config Sync usa para acompanhar estes objetos de recursos.

Estas etiquetas e anotações podem causar os seguintes efeitos secundários após a eliminação de um objeto RootSync ou RepoSync:

  • Outros objetos do RepoSync não podem assumir a propriedade de objetos geridos anteriormente.
  • Se a prevenção de desvio estiver ativada, isto pode fazer com que o Config Sync rejeite alterações a recursos abandonados.

ferramenta de linha de comandos nomos 1.17.0

A CLI nomos não suporta o plug-in de autenticação oidc

Pode ver erros como no Auth Provider found for name "oidc" quando usa a ferramenta de linha de comandos nomos. Este problema pode ocorrer quando está a usar o plug-in de autenticação oidc.

Solução alternativa:

Não existe nenhuma solução alternativa. O plug-in de autenticação oidc vai ser adicionado novamente numa versão subsequente.

Voltar ao início

O que se segue?

  • Se não conseguir encontrar uma solução para o seu problema na documentação, consulte a secção Obter apoio técnico para obter mais ajuda, incluindo aconselhamento sobre os seguintes tópicos: