Solucionar problemas de extensão do registro conectado

Este artigo discute algumas mensagens de erro comuns que você pode receber ao instalar ou atualizar a extensão de registro conectada para clusters do Kubernetes habilitados para Arc.

Como a extensão do registro conectado é instalada

A extensão do registro conectado é liberada como um gráfico do Helm e instalada pelo Helm V3. Todos os componentes da extensão do registro conectado são instalados no namespace connected-registry. Você pode usar os comandos a seguir para verificar o status da extensão.

# get the extension status 
az k8s-extension show --name <extension-name>  
# check status of all pods of connected registry extension 
kubectl get pod -n connected-registry    
# get events of the extension 
kubectl get events -n connected-registry   --sort-by='.lastTimestamp'

Erros comuns

Erro: não é possível reutilizar um nome que ainda esteja em uso

Esse erro significa que o nome da extensão que você especificou já existe. Se o nome já estiver em uso, você precisará usar outro nome.

Erro: não é possível criar novo conteúdo no namespace connected-registry porque ele está sendo encerrado

Esse erro acontece quando uma operação de desinstalação não é concluída e outra operação de instalação é disparada. Você pode executar o comando az k8s-extension show para verificar o status de provisionamento da extensão e verificar se a extensão foi desinstalada antes de executar outras ações.

Erro: falha ao baixar o gráfico – caminho não encontrado

Esse erro ocorre quando você especifica a versão incorreta da extensão. Você precisa verificar se a versão especificada existe. Se você quiser usar a versão mais recente, não precisará especificar --version.

Cenários comuns

Cenário 1: a instalação falha, mas não mostra uma mensagem de erro

Se a extensão gerar uma mensagem de erro ao ser criada ou atualizada, você poderá inspecionar onde a criação falhou executando o comando az k8s-extension list:

az k8s-extension list \ 
--resource-group <my-resource-group-name> \ 
--cluster-name <my-cluster-name> \ 
--cluster-type connectedClusters

Solução: reiniciar o cluster, registrar o provedor de serviços ou excluir e reinstalar o registro conectado

Para corrigir esse problema, tente os seguintes métodos:

  • Reinicie o cluster do Kubernetes do Arc.

  • Registre o provedor de serviços KubernetesConfiguration.

  • Force a exclusão e reinstale a extensão do registro conectado.

Cenário 2: a versão do registro conectado de destino não existe

Ao tentar instalar a extensão do registro conectado para direcionar uma versão específica, você receberá uma mensagem de erro informando que a versão do registro conectado não existe.

Solução: instalar novamente para uma versão do registro conectado com suporte

Tente novamente instalar a extensão. Certifique-se de usar uma versão com suporte do registro conectado.

Problemas comuns

Problema: criação de extensão paralisada no estado de execução

Possibilidade 1: problema com a declaração de volume persistente (PVC)

  • Verificar o status do PVC do registro conectado
kubectl get pvc -n connected-registry -o yaml connected-registry-pvc

O valor da fase em status deve ser limitado. Se ela não mudar de pendente, exclua a extensão.

  • Verifique se a classe de armazenamento desejada está em sua lista de classes de armazenamento:
kubectl get storageclass --all-namespaces
  • Caso contrário, recrie a extensão e adicione-a
--config pvc.storageClassName=”standard”` 
  • Como alternativa, pode ser um problema de não ter espaço suficiente para o PVC. Recriar a extensão com o parâmetro
--config pvc.storageRequest=”250Gi”` 

Possibilidade 2: a cadeia de conexão está incorreta

  • Verifique os logs do pod do registro conectado:
kubectl get pod -n connected-registry
  • Copie o nome do pod do registro conectado (por exemplo: "connected-registry-8d886cf7f-w4prp") e cole-o no seguinte comando:
kubectl logs -n connected-registry connected-registry-8d886cf7f-w4prp
  • Se você vir a seguinte mensagem de erro, a cadeia de conexão do registro conectado está incorreta:
Response: '{"errors":[{"code":"UNAUTHORIZED","message":"Incorrect Password","detail":"Please visit https://aka.ms/acr#UNAUTHORIZED for more information."}]}' 
  • Certifique-se de que um arquivo protected-settings-extension.json tenha sido criado
cat protected-settings-extension.json
  • Se necessário, gere novamente o arquivo protected-settings-extension.json
cat << EOF > protected-settings-extension.json  
{ 
"connectionString": "$(az acr connected-registry get-settings \ 
--name myconnectedregistry \ 
--registry myacrregistry \ 
--parent-protocol https \ 
--generate-password 1 \ 
--query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)" 
} 
EOF
  • Atualizar a extensão para incluir a nova cadeia de conexão
az k8s-extension update \ 
--cluster-name <myarck8scluster> \ 
--cluster-type connectedClusters \ 
--name <myconnectedregistry> \ 
-g <myresourcegroup> \ 
--config-protected-file protected-settings-extension.json

Problema: a extensão foi criada, mas o registro conectado não está no estado "Online"

Possibilidade 1: o registro conectado anterior não foi desativado

Esse cenário geralmente ocorre quando uma extensão do registro conectado anterior foi excluído e uma nova foi criada para o mesmo registro conectado.

  • Verifique os logs do pod do registro conectado:
kubectl get pod -n connected-registry
  • Copie o nome do pod do registro conectado (por exemplo: "connected-registry-xxxxxxxxx-xxxxxx") e cole-o no seguinte comando:
kubectl logs -n connected-registry connected-registry-xxxxxxxxx-xxxxx
  • Se você vir a seguinte mensagem de erro, o registro conectado precisará ser desativado:

Response: '{"errors":[{"code":"ALREADY_ACTIVATED","message":"Failed to activate the connected registry as it is already activated by another instance. Only one instance is supported at any time.","detail":"Please visit https://aka.ms/acr#ALREADY_ACTIVATED for more information."}]}'

  • Execute o seguinte comando para desativar:
az acr connected-registry deactivate -n <myconnectedregistry> -r <mycontainerregistry>

Após alguns minutos, o pod do registro conectado deverá ser recriado e o erro deverá desaparecer.

Habilitar o registro em log

  • Execute o comando [az acr connected-registry update] para atualizar a extensão do registro conectado com o nível de log de depuração:
az acr connected-registry update --registry mycloudregistry --name myacrregistry --log-level debug
  • Os seguintes níveis de log podem ser aplicados para ajudar na solução de problemas:

    • Depurar fornece informações detalhadas para fins de depuração.

    • Informações fornecem informações gerais para fins de depuração.

    • Aviso indica possíveis problemas que ainda não são erros, mas que podem se tornar um se nenhuma ação for tomada.

    • Erro registra os erros que impedem a conclusão de uma operação.

    • Nenhum desativa o log de eventos, portanto, nenhuma mensagem de log é gravada.

  • Ajuste o nível de log conforme necessário para solucionar o problema.

A seleção ativa fornece mais opções para ajustar a verbosidade dos logs ao depurar problemas com um registro conectado. As opções a seguir estão disponíveis:

O nível de log do registro conectado é específico para as operações do registro conectado e determina a gravidade das mensagens tratadas pelo registro conectado. Essa configuração é usada para gerenciar o comportamento do log de eventos do próprio registro conectado.

--log-level define o nível de log na instância. O nível de log determina a gravidade das mensagens que o agente manipula. Ao definir o nível de log, você pode filtrar mensagens abaixo de uma determinada gravidade. Por exemplo, se você definir o nível de log como "aviso", o agente manipulará avisos, erros e mensagens críticas, mas ignorará as informações e as mensagens de depuração.

O nível de log do az cli controla a verbosidade das mensagens de saída durante a operação da CLI do Azure. A CLI do Azure (az) fornece várias opções de verbosidade para níveis de log, que podem ser ajustadas para controlar a quantidade de informações de saída durante sua operação:

--verbose aumenta a verbosidade dos logs. Ele fornece informações mais detalhadas do que a configuração padrão, que pode ser útil para identificar problemas.

--debug habilita logs de depuração completos. Os logs de depuração fornecem as informações mais detalhadas, incluindo todas as informações fornecidas no nível "detalhado", além de mais detalhes destinados ao diagnóstico de problemas.

Próximas etapas