Problemas conhecidos do Config Sync

Esta página lista problemas conhecidos das versões compatíveis do Config Sync.

Muitos dos problemas listados aqui foram corrigidos. A coluna Versão corrigida indica a versão em que a correção foi introduzida. Para receber essa correção, faça upgrade para a versão listada ou mais recente.

Se você faz parte do Programa para desenvolvedores do Google, salve esta página para receber notificações quando uma nota da versão relacionada a ela for publicada. Para saber mais, consulte Páginas salvas.

Para filtrar os problemas conhecidos por uma versão ou categoria do produto, selecione os filtros nos menus suspensos a seguir.

Selecione sua versão do Config Sync:

Selecione a categoria do seu problema:

Ou filtre os problemas conhecidos:

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

Correção: métricas informadas para pacotes excluídos

Se você excluir um objeto RootSync ou RepoSync, mas não excluir o objeto ResourceGroup com o mesmo nome, o Config Sync vai continuar informando 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ó será excluído automaticamente se a propagação de exclusão tiver sido ativada antes da exclusão do objeto RootSync ou RepoSync.

Alternativa:

Exclua o objeto ResourceGroup:

kubectl delete resourcegroup RESOURCE_GROUP_NAME -n config-management-system

Substitua RESOURCE_GROUP_NAME pelo nome do objeto ResourceGroup que precisa ser excluído. Para saber mais sobre a nomenclatura de ResourceGroup, consulte Controlador e objetos do ResourceGroup.

Integridade dos componentes 1.15.0

Reconciliador não programável

Os reconciliadores do Config Sync exigem quantidades variadas de recursos, dependendo da configuração do RootSync ou do RepoSync. Algumas configurações exigem mais recursos do que outras.

Se um reconciliador não puder ser programado, talvez seja porque ele está solicitando mais recursos do que estão disponíveis nos nós.

Se você estiver usando clusters do GKE no modo Standard, as solicitações de recursos do reconciliador serão definidas como muito baixas. Essa configuração foi escolhida para permitir a programação, mesmo que isso levasse a um limite e a um desempenho lento, para que o Config Sync funcionasse em pequenos clusters e nós. No entanto, nos clusters do GKE Autopilot, as solicitações do reconciliador são definidas como mais altas para representar de forma mais realista o uso durante a sincronização.

Alternativa:

O GKE Autopilot ou o GKE Standard com o provisionamento automático de nós ativado podem ver quantos recursos são solicitados e criar nós dimensionados adequadamente para permitir o agendamento. No entanto, se você estiver configurando manualmente os nós ou os tamanhos das instâncias de nó, talvez seja necessário ajustar essas configurações para acomodar os requisitos de recursos do pod reconciliador.

Métricas 1.15.0

Falha na exportação. Permissão recusada

Por padrão, quando o gerente de reconciliação detecta o Application Default Credentials, o coletor de Otel é configurado para exportar métricas para o Prometheus, o Cloud Monitoring e o Monarch.

Alternativa:

O otel-collector registra erros se você não configurou o Cloud Monitoring ou personalizou filtros de métricas e o Cloud Monarch.

Métricas 1.15.0

O coletor de Otel falha com a configuração personalizada.

Se você tentar modificar ou excluir um dos ConfigMaps padrão, otel-collector ou otel-collector-google-cloud, o coletor de Otel pode apresentar um erro ou falhar ao não conseguir carregar o ConfigMap necessário.

Alternativa:

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

Ações

O Config Sync lutando contra si mesmo

O Config Sync pode parecer estar em um conflito de controladores com ele mesmo. Isso ocorre ao definir o valor padrão para um campo opcional de um recurso no repositório do Git. Por exemplo, definir apiGroup: "" como o assunto de um RoleBinding aciona isso porque o campo apiGroup é opcional e uma string vazia é o valor padrão. Os valores padrão dos campos string, booleano e inteiro são "", false e 0, respectivamente.

Alternativa:

Remova o campo da declaração de recurso.

Remediação

O Config Sync está competindo com recursos do Config Connector

O Config Sync pode parecer estar em conflito com o Config Connector em um recurso, por exemplo, um StorageBucket. Isso ocorre se você não definir o valor de um campo opcional de um recurso spec.lifecycleRule.condition.withState na fonte da verdade.

Alternativa:

Para evitar esse problema, adicione o campo withState=ANY na declaração de recurso. Se preferir, abandone e adquira novamente o recurso com a anotação cnrm.cloud.google.com/state-into-spec: absent.

Fonte de verdade 1.13.0 1.20.1

Correção: não foi possível gerar um token de acesso para a origem da OCI

Quando o Config Sync é configurado para usar o OCI como fonte de verdade e autenticar com a Federação de Identidade da Carga de Trabalho para GKE, ele pode encontrar erros temporários KNV2004 ao tentar autenticar com o registro de contêineres.

Esse problema é causado pela biblioteca oauth2, que só atualiza o token de autenticação depois que ele já expirou.

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."

Alternativa:

O erro será resolvido na próxima vez que o Config Sync tentar buscar da fonte de verdade.

Quando o Config Sync apresenta erros várias vezes, as novas tentativas se tornam menos frequentes. Para forçar o Config Sync a tentar novamente antes, exclua o pod do reconciliador. Essa ação faz com que o Config Sync recrie o pod do reconciliador e busque imediatamente da fonte de verdade:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Substitua RECONCILER_NAME pelo nome do reconciliador do objeto RootSync ou RepoSync.
Fonte de verdade 1.20.0 1.21.3

Loops de falha do contêiner git-sync após um arquivo de bloqueio do Git ficar órfão

Se você encontrar o contêiner git-sync em um loop de falhas com erros semelhantes aos seguintes no registro do contêiner git-sync, uma invocação git anterior pode ter falhado e deixado um arquivo de bloqueio órfão no contêiner:

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

Alternativa:

Para contornar esse problema, reinicie o pod de reconciliação afetado para atribuir um novo volume temporário:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Substitua RECONCILER_NAME pelo nome do reconciliador do objeto RootSync ou RepoSync.
Fonte de verdade 1.19.0 1.20.0

Correção: arquivo de bloqueio do Git persistente

Se você encontrar um erro semelhante ao seguinte no contêiner git-sync, uma invocação git anterior pode ter falhado e deixado um arquivo de bloqueio persistente no contêiner:

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

Alternativa:

Para contornar esse problema, reinicie o pod de reconciliação afetado para atribuir um novo volume temporário:

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

Correção: a anotação de mutação de ignorar não era respeitada

Um bug no reconciliador do Config Sync faz com que ele aplique mudanças das configurações declaradas mesmo quando a anotação client.lifecycle.config.k8s.io/mutation está presente. Isso pode fazer com que o estado do objeto no cluster seja substituído.

Alternativa:

É possível parar de gerenciar o objeto gerenciado adicionando a anotação configmanagement.gke.io/managed: disabled. No entanto, desativar o gerenciamento impede que o Config Sync recrie o objeto se ele for excluído do cluster. Isso também impede que outras atualizações na fonte de informações sejam aplicadas.

Sincronizando 1.5.0 1.20.1

Corrigido: erros de descoberta de API podem fazer com que objetos gerenciados sejam marcados incorretamente como Not Found

Se um back-end de serviço de API não estiver íntegro, isso pode causar um erro na descoberta de API. Se isso acontecer enquanto o controlador ResourceGroup estiver sendo iniciado, após ser atualizado ou reagendado, o cache de recursos não será inicializado, fazendo com que todos os objetos gerenciados sejam informados como Not Found no status do ResourceGroup.

Esse problema geralmente ocorre quando o metrics-server não está íntegro.

Alternativa:

Reinicie o pod resource-group-controller depois que o metrics-server ficar íntegro novamente:

    kubectl delete pod -n resource-group-system RESOURCE_GROUP_CONTROLLER_NAME
    
Substitua RESOURCE_GROUP_CONTROLLER_NAME pelo nome do controlador ResourceGroup, que é o mesmo nome do RootSync ou RepoSync para esse pacote.
Sincronizando 1.15.0

Alto número de solicitações PATCH ineficazes nos registros de auditoria

O remediador do Config Sync usa a simulação para detectar desvios. Isso pode fazer com que as solicitações PATCH apareçam no registro de auditoria, mesmo quando o PATCH não é persistido, porque o registro de auditoria não distingue entre simulações e solicitações normais.

Alternativa:

Como o registro de auditoria não consegue distinguir entre solicitações de teste e não teste, ignore as solicitações PATCH.
Registro particular 1.19.0

O Config Sync não usa o registro particular para implantações do reconciliador

O Config Sync precisa substituir as imagens de todos os Deployments quando um registro particular é configurado. No entanto, o Config Sync não substitui o registro de imagens para imagens nas implantações do reconciliador.

Alternativa:

Uma solução alternativa para esse problema é configurar o espelho do registro de imagens no containerd.

Sincronizando 1.7.0 1.21.0

Correção: falha ao gravar o inventário atualizado no cluster

Se o Config Sync não atualizar o status de um objeto ResourceGroup, você poderá encontrar um erro intermitente nos registros 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
    

Esse erro é causado por uma disputa entre o reconciliador e o controlador ResourceGroup. O controlador ResourceGroup pode atualizar o status do ResourceGroup antes que o reconciliador possa atualizar a especificação do ResourceGroup, causando o erro KNV2009.

Alternativa:

Não há uma solução alternativa para esse problema. O erro deve ser resolvido automaticamente.

Terraform Versão 5.41.0 do Terraform

O Config Sync não pode ser instalado nem atualizado usando o Terraform.

A versão 5.41.0 do Terraform introduziu um novo campo no recurso google_gke_hub_feature_membership: config_sync.enabled. Como o valor padrão desse campo é false, se ele não for definido explicitamente como true, as instalações ou upgrades do Config Sync vão falhar ao usar o Terraform versão 5.41.0 ou mais recente. Você também pode receber uma mensagem de erro informando git spec not included in configmanagement spec se esse problema ocorrer.

Alternativa:

  • Se você usar o recurso google_gke_hub_feature_membership, defina manualmente config_sync.enabled como true.
  • Se você usa o submódulo acm, recomendamos mudar para uma forma alternativa de instalar o Config Sync. Se não for possível mudar, faça upgrade para a v33.0.0.

Console doGoogle Cloud

Erros de dados ausentes no painel do Config Sync no console Google Cloud

Você pode encontrar erros como "dados ausentes" ou "credenciais de cluster inválidas" para clusters do Config Sync em painéis no console Google Cloud . Esse problema pode ocorrer quando você não faz login nos clusters do GDC (VMware) ou GDC (bare metal).

Alternativa:

Se você encontrar esses tipos de erros no console Google Cloud nos clusters do GDC (VMware) ou GDC (bare metal), verifique se você fez login nos clusters com o GKE Identity Service ou o gateway do Connect.

Sincronizando 1.21.0

Corrigido: o Config Sync impede atualizações de recursos abandonados

Antes da versão 1.21.0, um objeto RootSync ou RepoSync excluído podia deixar vários rótulos e anotações que o Config Sync usa para rastrear esses objetos de recursos.

Esses rótulos e anotações podem causar os seguintes efeitos colaterais após a exclusão de um objeto RootSync ou RepoSync:

  • Outros objetos RepoSync não podem assumir a propriedade de objetos gerenciados anteriormente.
  • Se a prevenção de desvio estiver ativada, o Config Sync poderá rejeitar mudanças em recursos abandonados.

Ferramenta de linha de comando nomos 1.17.0

A CLI nomos não é compatível com o plug-in de autenticação oidc.

Você pode encontrar erros como no Auth Provider found for name "oidc" ao usar a ferramenta de linha de comando nomos. Esse problema pode ocorrer quando você usa o plug-in de autenticação oidc.

Alternativa:

Não há solução alternativa. O plug-in de autenticação oidc será adicionado novamente em uma versão futura.

Voltar ao início

A seguir

  • Se você não encontrar uma solução para seu problema na documentação, consulte Receber suporte para mais ajuda, incluindo conselhos sobre os seguintes tópicos: