Nesta página, descrevemos os códigos de erro do Config Sync e as ações recomendadas para lidar com eles.
As mensagens de erro do Config Sync consistem em um ID de erro no formato KNV1234, em que 1234 é um número único, seguido por uma descrição do problema e uma sugestão de como corrigi-lo. K é herdada das convenções do Kubernetes,
as regras com prefixo N são específicas para nomos, V é específico para
erros detectáveis no estado inicial do repositório e do cluster. Os códigos
para erros detectáveis no estado inicial do repositório e do cluster são
do formato KNV1XXX. Os códigos de erros que só podem ser detectados no tempo de execução são da forma KNV2XXX.
Tabela de erros do KNV
| Código do erro | Descrição | Ação recomendada |
|---|---|---|
|
O ID de InternalError foi alterado para |
N/A |
|
Obsoleto no Config Sync 1.3. |
N/A |
|
Obsoleto no Config Sync 1.3. |
N/A |
|
Ao usar uma estrutura hierárquica de repositório, um diretório que contém uma configuração de namespace não pode conter nenhum subdiretório. Um diretório sem uma configuração de namespace é um diretório de namespace abstrato e tem diretórios herdados dele. Consequentemente, os diretórios de namespace abstratos precisam ter subdiretórios. Um diretório com uma configuração de namespace é um diretório de namespace e não pode ser herdado. Por isso, não pode ter nenhum subdiretório. |
Remova a configuração de namespace do diretório pai ou mova o subdiretório para outro local. |
|
Um objeto com escopo de cluster não pode declarar a anotação
|
Remova |
|
A única configuração válida para a anotação de gerenciamento é
|
Verifique se a anotação de gerenciamento é
Para mais informações, consulte Como gerenciar objetos. |
|
Não foi possível analisar um objeto declarado no repositório. |
Valide o formato YAML. Por exemplo, use o comando
Se |
|
Ao usar um repositório não estruturado, as configurações não podem ser declaradas em um diretório de namespace abstrato. |
Mova a configuração listada na mensagem de erro para um diretório de namespace. Para mais informações, consulte Como usar um repositório não estruturado. |
|
Ao usar uma estrutura hierárquica de repositório, as configurações precisam declarar namespaces que correspondem ao diretório do namespace que os contém ou omitir o campo. |
Atualize o campo de namespace identificado na mensagem de erro. Para mais informações, consulte Estrutura do repositório hierárquico. |
|
As configurações não podem declarar anotações incompatíveis de |
Verifique se você está usando uma das seguintes anotações compatíveis:
|
|
As configurações não podem ter rótulos com chaves que começam com |
Atualize os rótulos identificados na mensagem de erro. Por exemplo, se você tentou declarar um rótulo chamado |
|
Obsoleto no Config Sync 1.3. |
N/A |
|
A configuração se refere a um ClusterSelector ou NamespaceSelector que não existe. Antes de usar um seletor em uma anotação para uma configuração, o seletor precisa existir. |
Crie os seletores ausentes ou, se o seletor foi removido, remova as configurações que se referem a ele. |
|
As configurações de ClusterSelector e NamespaceSelector usam a sintaxe correta, mas foi encontrado um erro de sintaxe. |
Especifique a configuração usando o esquema de dados adequado: |
|
Obsoleto no Config Sync 1.3.2 | N/A |
|
Ao usar a estrutura hierárquica do repositório, uma configuração para o ConfigManagement Operator
precisa estar no diretório |
Defina pelo menos uma configuração mínima para o Config Management Operator. Para mais informações, consulte Estrutura do repositório hierárquico. |
|
Obsoleto no Config Sync 1.3. | N/A |
|
Ao usar a estrutura hierárquica do repositório, os namespaces não podem ser declarados diretamente
no diretório |
Crie um subdiretório para as configurações de namespace listadas na mensagem de erro. Para mais informações, consulte Estrutura do repositório hierárquico. |
|
Ao usar uma estrutura hierárquica de repositório, uma configuração de namespace declara
metadata.name, e o valor dela precisa corresponder ao nome do diretório do namespace.
|
Corrija o metadata.name do namespace ou o diretório dele. |
|
Nenhuma CustomResourceDefinition está definida para o recurso no cluster. |
Crie um CustomResourceDefinition para o recurso referenciado na mensagem de erro. Os tipos de recursos que não são objetos integrados do Kubernetes precisam ter uma CustomResourceDefinition. |
|
Ao usar um repositório hierárquico, as configurações desse tipo não podem ser declaradas no
diretório |
Mova o recurso referenciado na mensagem de erro para fora do diretório |
|
O campo |
Se o formato do repositório for compatível com a versão suportada, atualize o campo
|
|
Os nomes de diretórios precisam ter menos de 64 caracteres, conter caracteres alfanuméricos minúsculos ou "-" e começar e terminar com um caractere alfanumérico. |
Renomeie ou remova o diretório com nome incorreto. |
|
As configurações do mesmo tipo precisam ter nomes exclusivos no mesmo namespace e nos namespaces abstratos principais. |
Renomeie ou remova todas as configurações mencionadas na mensagem de erro para que todas tenham nomes exclusivos. |
|
Não é possível ter vários recursos de namespace no mesmo diretório. |
Remova as configurações duplicadas para que não haja mais de um recurso de namespace. |
|
Todas as configurações precisam declarar |
Adicione o campo |
|
O tipo |
Remova a configuração problemática ou converta seu repositório para usar
|
|
Se você estiver usando um repositório hierárquico, só poderá declarar
os tipos |
Verifique se todas as configurações declaradas no diretório |
|
É proibido declarar |
Se você declarou o namespace
Se você declarou os namespaces
Se você estava sincronizando com um repositório hierárquico e precisou declarar o namespace do controlador junto com os recursos, considere mudar para um repositório não estruturado para ter mais flexibilidade na estrutura de origem. |
|
O |
Mude o
Se |
|
Obsoleto no Config Sync 1.3. | N/A |
|
É proibido declarar um objeto com escopo de namespace fora do diretório |
Mova os configs problemáticos para que eles estejam em um diretório válido. Para mais informações sobre objetos com escopo de namespace, consulte Objetos com escopo de namespace. |
|
É proibido declarar um objeto com escopo de cluster fora do diretório |
Mova os configs problemáticos para que eles estejam em um diretório válido. Para mais informações sobre objetos com escopo de cluster, consulte Objetos com escopo de cluster. |
|
Obsoleto no Config Sync 1.3. | N/A |
|
Esse tipo de recurso não pode ser declarado em um |
Remova o recurso problemático. Para ler mais sobre |
|
Um valor ilegal para |
Mude |
|
O Config Sync não pode configurar esse objeto. |
Remova a configuração problemática do repositório. |
|
Um diretório de namespace abstrato com configurações precisa ter pelo menos um subdiretório de namespace. |
Adicione um diretório de namespace ao diretório de namespace abstrato, adicione uma configuração de namespace ao diretório de namespace abstrato ou remova as configurações do diretório de namespace abstrato. |
|
Configurações com |
Remova o campo |
|
Esse |
Atualize o |
|
Não é permitido remover uma definição de recurso personalizado (CRD) e deixar os recursos personalizados correspondentes no repositório. |
Remova a CRD e os recursos personalizados. |
|
O CustomResourceDefinition tem um nome inválido. |
Mude o nome para a recomendação na mensagem de erro. |
|
A configuração está usando um grupo e um tipo obsoletos. |
Mude o grupo ou o tipo para a recomendação na mensagem de erro. |
|
Recursos com escopo de cluster não podem declarar |
Remova o campo metadata.namespace do recurso com escopo de cluster. |
|
Os recursos com escopo de namespace precisam declarar |
Adicione o campo ausente ao recurso com escopo de namespace. |
|
Os configs contêm um valor inválido para uma anotação. |
Siga as instruções na mensagem de erro para resolver o problema. |
|
O valor de |
Atualize o valor de
|
|
Um recurso é declarado em um namespace não gerenciado. |
Remova a anotação |
|
Um recurso tem um rótulo ilegal. |
Remova os rótulos ilegais listados na mensagem de erro. |
|
Um repositório de namespace só pode declarar recursos com escopo de namespace no namespace a que o repositório se aplica. |
Verifique se todos os repositórios de namespace estão declarando corretamente os recursos no escopo do namespace.
Por exemplo, o repositório do namespace
Por exemplo, se um config no repositório de namespaces Além de verificar se os recursos com escopo de namespace estão declarados corretamente, confira se os namespaces estão declarados no repositório raiz. Isso é necessário porque os namespaces têm escopo de cluster. |
|
Um repositório de namespaces pode declarar no máximo um recurso Kptfile. |
Remova todos os recursos Kptfile, exceto um. |
|
Ao gerenciar objetos em várias fontes de verdade, podem ocorrer conflitos quando o mesmo objeto (grupo, tipo, nome e namespace correspondentes) é declarado em mais de uma fonte. Por exemplo, quando o mesmo objeto é gerenciado por um RootSync e um RepoSync, o RootSync vence. Se o RootSync for aplicado primeiro, o RepoSync vai informar um erro de status KNV1060. Se o RepoSync for aplicado primeiro, o RootSync vai substituir o objeto do RepoSync e o RepoSync vai informar um erro de status KNV1060 ao ver a atualização. |
Resolva o conflito atualizando a configuração para corresponder à outra fonte de verdade ou excluindo o objeto conflitante de uma das fontes.
O comando |
|
Um |
Siga as instruções na mensagem de erro para corrigir os problemas de configuração. |
|
O Kptfile não tem um campo de inventário válido. Um Kptfile precisa ter um campo de inventário não vazio com o identificador e o namespace especificados. |
Especifique os valores de |
|
Os Kptfiles foram encontrados no repositório raiz. Os arquivos Kptfiles são compatíveis apenas com repositórios com escopo de namespace. |
Remova os Kptfiles do repositório raiz. |
|
Não foi possível analisar o arquivo |
Siga as instruções na mensagem de erro. Por exemplo, talvez seja necessário executar |
|
O CustomResourceDefinition está incorreto. |
Verifique o campo especificado pela mensagem de erro e confira se o valor está formatado corretamente. |
|
Um objeto de configuração precisa declarar apenas uma anotação de seletor de cluster. Esse erro ocorre quando a anotação legada ( |
Remova uma das anotações do campo |
|
O reconciliador não codifica os campos declarados em um formato compatível com aplicação do lado do servidor. Pode ser causado por um esquema desatualizado. |
Verifique o campo especificado pela mensagem de erro e confira se ele corresponde ao esquema do tipo de recurso. |
|
O processo de renderização encontrou um problema que pode ser resolvido pelo usuário. |
Se o repositório Git tiver configurações do Kustomize, mas não houver um arquivo
Se o erro for causado por falhas de
Se ocorrer um erro |
|
Um reconciliador reconciliou o próprio objeto RootSync ou RepoSync. Um objeto RootSync pode gerenciar outros objetos RootSync e RepoSync. Um objeto RepoSync pode gerenciar outros objetos RepoSync, mas não pode ser autogerenciado. |
Remova o objeto RootSync ou RepoSync da fonte de verdade da qual o objeto se sincroniza. |
|
Uma chamada de sistema no nível do SO que acessa um recurso do sistema de arquivos falha. |
Esse erro provavelmente é causado por uma configuração YAML inválida ou pelo uso de caracteres especiais. Se você
tiver uma configuração YAML inválida, vai aparecer uma mensagem de erro semelhante a esta:
Se o nome do arquivo ou caminho tiver caracteres especiais, você poderá receber uma mensagem de erro
semelhante a |
|
Uma solicitação de acesso ao servidor da API Kubernetes falha. |
As solicitações da API Kubernetes podem falhar por vários motivos. Estas são as causas mais comuns:
O Config Sync tenta novamente após a maioria dos erros do servidor da API. Alguns podem ser problemas temporários que se resolvem sozinhos, mas a maioria exige intervenção do usuário para ser resolvida. Os erros do servidor da API raramente são causados pelo Config Sync em si, mas se você suspeitar que podem ser, envie um relatório de bug. |
|
Uma chamada de sistema genérica no nível do sistema operacional falha. | |
|
O Config Sync não pode ler a fonte da verdade. |
Vários problemas podem causar esse erro. Para resolver problemas de conexão com a
fonte de verdade, consulte
Resolver problemas de conexão com a fonte de verdade.
Para saber mais sobre problemas conhecidos que causam erros |
|
O Config Sync está competindo com outro controlador por um recurso. Esses conflitos consomem uma grande quantidade de recursos e podem prejudicar seu desempenho. | Para dicas sobre como diagnosticar e resolver conflitos entre controladores, consulte Resolver conflitos entre controladores. |
|
Para evitar a exclusão acidental, o Config Sync não permite remover todos os namespaces ou recursos com escopo de cluster em uma única confirmação. |
Se o webhook de admissão do Config Sync estiver desativado, reverta a confirmação que exclui todos os recursos.
Se você quiser excluir o conjunto completo de recursos em gerenciamento, siga estas etapas:
|
|
Um recurso no servidor de API é modificado ou excluído enquanto o Config Sync também está tentando modificá-lo. |
Se esse tipo de erro só aparecer na inicialização ou com pouca frequência, ignore-os.
Se esses erros não forem temporários (persistirem por vários minutos), isso pode indicar um
problema sério, o que |
|
Esse é um erro genérico indicando que o Config Sync falhou ao sincronizar algumas configurações com o cluster. |
Há vários problemas que podem causar esse erro. Para dicas sobre como resolver problemas comuns de sincronização, consulte Solução de problemas de sincronização. |
|
Esse é um erro genérico que indica um problema com um recurso ou conjunto de recursos. |
A mensagem de erro inclui os recursos específicos que causaram o erro. Investigue esses recursos. |
|
Um recurso específico é necessário para continuar, mas ele não foi encontrado. Por exemplo, o operador ConfigManagement tentou atualizar um recurso, mas ele foi excluído durante o cálculo da atualização. |
Crie ou restaure o recurso ausente. |
|
Esse erro informa que mais de uma instância de um APIResource foi encontrada em um contexto
em que somente um APIResource é permitido. Por exemplo, apenas um recurso |
Remova o APIResource adicional. |
|
Um reconciliador de namespace não tem permissões suficientes para gerenciar recursos. |
Verifique se o reconciliador tem permissões suficientes. |
|
Esse aviso ocorre quando a configuração do webhook do Config Sync é modificada ilegalmente. As configurações de webhook ilegais são ignoradas. |
Remova o webhook modificado ilegalmente. |
|
O processo de renderização encontrou um problema interno. Por exemplo, o Config Sync não consegue acessar o sistema de arquivos. |
Esse erro pode indicar que o pod não está íntegro. Reinicie os pods do reconciliador executando os seguintes comandos: # restart a root reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=root-reconciler # restart a namespace reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=ns-reconciler-NAMESPACE |
|
Esse erro representa um problema temporário que será resolvido automaticamente depois. Por exemplo, se o estado de renderização não corresponder à configuração de origem, esse erro poderá aparecer. |
O erro será resolvido automaticamente. |
|
Há um problema com o próprio Config Sync. |
Envie um relatório de bug. |
|
Você encontrou um erro sem uma mensagem de erro documentada. |
Ainda não escrevemos documentação específica para o erro encontrado. |
Mensagens de erro sem um código KNV
Os erros informados pelos reconciliadores do Config Sync têm o código de erro KNV, mas os erros informados por outros componentes não têm esse código. Por exemplo, o erro de permissão negada vem do controlador da frota, que é uma camada acima do Config Sync.
A tabela a seguir lista alguns erros comuns sem o prefixo KNV.
| Mensagem de erro | Ação recomendada |
|---|---|
|
|
Não é possível criar exportadores
Quando um componente no Open Telemetry Collector não pode acessar a
conta de serviço padrão no mesmo namespace, você pode notar
que o pod Esse problema geralmente acontece quando a federação de identidade da carga de trabalho do GKE está ativada em um cluster. Para resolver esse problema, siga as instruções em Como monitorar o Config Sync para conceder permissão de gravação de métrica à conta de serviço padrão.
Se o erro persistir, configure o pod |
server certificate verification failed. CAfile:/etc/ca-cert/cert CRLfile: none
|
Falha na verificação do certificado do servidor
Se o contêiner Essa mensagem indica que o servidor está configurado com certificados de uma autoridade de certificação (CA) personalizada. No entanto, a CA personalizada não está configurada corretamente, resultando na falha do contêiner ao buscar do servidor.
Para resolver esse problema, primeiro verifique se o campo
Em seguida, se o campo tiver sido configurado e o objeto Secret existir,
verifique se o objeto Secret contém os certificados completos. Veja um exemplo de como listar os certificados do servidor: echo -n | openssl s_client -showcerts -connect HOST:PORT -servername SERVER_NAME 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' Você pode pedir à equipe de administração de rede para obter os certificados de CA. |
Error message: "MESSAGE": "Unable to retrieve pull secret, the image pull may not succeed."
|
Não foi possível recuperar o secret de pull, a imagem pode não ser bem-sucedidaSe você estiver usando um registro particular com o Google Distributed Cloud, a instalação ou o upgrade do Config Sync podem ficar travados. Você vai encontrar um erro semelhante a esta mensagem. Para resolver esse problema, siga as etapas em Atualizar o Config Sync usando um registro particular antes de instalar ou fazer upgrade do Config Sync. |
Permission 'gkehub.features.create' denied on 'projects/PROJECT_ID/locations/global/features/configmanagement'
|
Permissão negadaSe você receber um erro semelhante a este exemplo ao tentar configurar o Config Sync, talvez não tenha o papel de Administrador do GKE Hub. Para garantir que você tenha as permissões necessárias, verifique se concedeu os papéis do IAM necessários. |
A seguir
- Consulte os problemas conhecidos.
- Leia a introdução à solução de problemas do Config Sync.
- Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.