Solucionar problemas de um aplicativo de contêiner
A revisão dos logs e definições de configuração dos Aplicativos de Contêiner do Azure pode revelar problemas subjacentes se seu aplicativo de contêiner não estiver se comportando corretamente. Use o guia a seguir para ajudá-lo a localizar e exibir detalhes sobre seu aplicativo de contêiner.
Cenários
A tabela a seguir lista os problemas que você pode encontrar ao usar os Aplicativos de Contêiner do Azure e as ações que você pode tomar para resolvê-los.
Cenário | Description | Ações |
---|---|---|
Todos os cenários | Ver registos Use Diagnosticar e resolver problemas |
|
Erro ao implantar nova revisão | Você recebe uma mensagem de erro quando tenta implantar uma nova revisão. | Verifique se os aplicativos de contêiner podem extrair sua imagem de contêiner |
O provisionamento leva muito tempo | Depois de implantar uma nova revisão, a nova revisão tem um status de Provisionamento e um status de Execução de Processamento indefinidamente. | Verificar se as sondas de integridade estão configuradas corretamente |
A revisão está degradada | Uma nova revisão leva mais de 10 minutos para ser provisionada. Ele finalmente tem um status de Provisão de Provisionado, mas um status de Execução de Degradado. A dica de ferramenta Status em execução lê Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Verificar se as sondas de integridade estão configuradas corretamente |
Solicitações para pontos de extremidade falham | O ponto de extremidade do aplicativo contêiner não responde às solicitações. | Revisar a configuração de ingresso |
Solicitações status de retorno 403 | O ponto de extremidade do aplicativo contêiner responde a solicitações com erro HTTP 403 (acesso negado). | Verifique se a configuração de rede está correta |
Respostas não esperadas | O ponto de extremidade do aplicativo contêiner responde às solicitações, mas as respostas não são as esperadas. | Verifique se o tráfego está encaminhado para a revisão correta Verifique se você está usando tags exclusivas ao implantar imagens no registro de contêiner |
Erro de parâmetros ausentes | Você recebe mensagens de erro sobre parâmetros ausentes quando executa az containerapp comandos na CLI do Azure ou executa cmdlets do Az.App módulo no Azure PowerShell. |
Verifique se a versão mais recente da extensão Azure Container Apps está instalada |
Funcionalidades de pré-visualização não disponíveis | Os recursos de visualização não estão disponíveis quando você executa az containerapp comandos na CLI do Azure. |
Verificar se a extensão de Aplicativos de Contêiner do Azure permite recursos de visualização |
Excluir seu aplicativo ou ambiente não funciona | Esse problema geralmente é acompanhado por uma mensagem como provisioningState: ScheduledForDelete. | Excluir manualmente a VNet associada |
Ver registos
Uma das primeiras etapas a serem seguidas ao procurar problemas com seu aplicativo de contêiner é exibir mensagens de log. Você pode visualizar a saída dos logs do console e do sistema. O log do console do aplicativo de contêiner captura os fluxos e stderr
os fluxos do stdout
aplicativo. Container Apps gera logs do sistema para eventos de nível de serviço.
- Inicie sessão no portal do Azure.
- Na barra de pesquisa, insira o nome do aplicativo de contêiner.
- Na seção Recursos , selecione o nome do aplicativo contêiner.
- Na barra de navegação, expanda Monitoramento e selecione Fluxo de log (não Logs).
- Se a página Fluxo de log disser Esta revisão foi dimensionada para zero., selecione o botão Ir para Gerenciamento de Revisão. Implante uma nova revisão dimensionada para uma contagem mínima de réplicas de 1. Para obter mais informações, consulte Dimensionamento em aplicativos de contêiner do Azure.
- Na página Fluxo de logs, defina Logs como Console ou Sistema.
Utilize a ferramenta diagnosticar e resolver problemas
Você pode usar a ferramenta diagnosticar e resolver problemas para encontrar problemas com a integridade, a configuração e o desempenho do seu aplicativo de contêiner.
- Inicie sessão no portal do Azure.
- Na barra de pesquisa, insira o nome do aplicativo de contêiner.
- Na seção Recursos , selecione o nome do aplicativo contêiner.
- Na barra de navegação, selecione Diagnosticar e resolver problemas.
- Na página Diagnosticar e resolver problemas, selecione uma das categorias Solução de problemas.
- Selecione uma das categorias na barra de navegação para encontrar maneiras de corrigir problemas com seu aplicativo de contêiner.
Verificar a acessibilidade da imagem do contêiner
Se você receber uma mensagem de erro ao tentar implantar uma nova revisão, verifique se o Container Apps é capaz de extrair sua imagem de contêiner.
- Verifique se o firewall do ambiente de contêiner não está bloqueando o acesso ao registro do contêiner. Para obter mais informações, consulte Controlar o tráfego de saída com rotas definidas pelo usuário.
- Se sua rede virtual existente usar um servidor DNS personalizado em vez do servidor DNS padrão fornecido pelo Azure, verifique se o servidor DNS está configurado corretamente e se a pesquisa DNS do registro de contêiner não falha. Para obter mais informações, consulte DNS.
- Se você usou o recurso de compilação de nuvem de Aplicativos de Contêiner para gerar uma imagem de contêiner para você (consulte Caminho de código para nuvem para Aplicativos de Contêiner do Azure, sua imagem não está acessível publicamente, portanto, esta seção não se aplica.
Para um contêiner do Docker que pode ser executado como um aplicativo de console, verifique se sua imagem está acessível publicamente executando o seguinte comando em um prompt de comando elevado. Antes de executar esse comando, substitua os espaços reservados cercados por <>
seus valores.
docker run --rm <YOUR_CONTAINER_IMAGE>
Verifique se o Docker executa sua imagem sem relatar erros. Se você estiver executando o Docker no Windows, verifique se o Docker Engine está em execução.
Se a sua imagem não estiver acessível publicamente, poderá receber o seguinte erro.
docker: Error response from daemon: pull access denied for <YOUR_CONTAINER_IMAGE>, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.
Para obter mais informações, consulte Rede no ambiente de Aplicativos de Contêiner do Azure.
Revisar a configuração de ingresso
As configurações de entrada do aplicativo de contêiner são impostas por meio de um conjunto de regras que controlam o roteamento do tráfego externo e interno para o aplicativo de contêiner. Se você não conseguir se conectar ao seu aplicativo de contêiner, revise essas configurações de entrada para garantir que suas configurações de entrada não estejam bloqueando solicitações.
- Inicie sessão no portal do Azure.
- Na barra de pesquisa, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo contêiner.
- Na barra de navegação, expanda Configurações e selecione Ingresso.
Problema | Ação |
---|---|
A entrada está habilitada? | Verifique se a caixa de seleção Ativado está marcada. |
Deseja permitir a entrada externa? | Verifique se Ingress Traffic está definido como Aceitando tráfego de qualquer lugar. Se o seu aplicativo de contêiner não escutar o tráfego HTTP, defina Tráfego de Entrada como Limitado ao Ambiente de Aplicativos de Contêiner. |
Seu cliente usa HTTP ou TCP para acessar seu aplicativo de contêiner? | Verifique se o tipo de entrada está definido para o protocolo correto (HTTP ou TCP). |
O seu cliente suporta mTLS? | Verifique se o modo de certificado de cliente está definido como Exigir somente se o cliente suportar mTLS. Para obter mais informações, consulte Configurar autenticação de certificado de cliente. |
Seu cliente usa HTTP/1 ou HTTP/2? | Verifique se o Transporte está definido para a versão HTTP correta (HTTP/1 ou HTTP/2). |
A porta de destino está definida corretamente? | Verifique se a porta de destino está definida para a mesma porta em que seu aplicativo de contêiner está escutando ou a mesma porta exposta pelo Dockerfile do seu aplicativo de contêiner. |
O endereço IP do seu cliente foi negado? | Se o Modo de Restrições de Segurança IP não estiver definido como Permitir todo o tráfego, verifique se o cliente não tem um endereço IP negado. |
Para obter mais informações, consulte Ingress in Azure Container Apps.
Verificar a configuração da rede
Os resolvedores recursivos do Azure usam o endereço 168.63.129.16
IP para resolver solicitações.
- Se sua rede virtual usar um servidor DNS personalizado em vez do servidor DNS padrão fornecido pelo Azure, configure seu servidor DNS para encaminhar consultas DNS não resolvidas para
168.63.129.16
. - Ao configurar seu NSG ou firewall, não bloqueie o
168.63.129.16
endereço.
Para obter mais informações, consulte Rede no ambiente de Aplicativos de Contêiner do Azure.
Verificar a configuração das sondas de integridade
Para todos os tipos de sonda de integridade (vivacidade, prontidão e inicialização) que usam TCP como transporte, verifique se os números de porta correspondem à porta de destino de entrada que você configurou para seu aplicativo de contêiner.
- Inicie sessão no portal do Azure.
- Na barra de pesquisa, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo contêiner.
- Na barra de navegação, expanda Aplicativo e selecione Contêineres.
- Na página Contêineres, selecione Sondas de integridade.
- Expanda Sondas Liveness, Readiness e Startup.
- Para cada sonda, verifique se o valor da porta está correto.
Atualize os valores da porta da seguinte maneira:
- Selecione Editar e implantar para criar uma nova revisão.
- Na página Criar e implantar nova revisão, marque a caixa de seleção ao lado da imagem do contêiner e selecione Editar.
- Na janela Editar um contêiner, selecione Sondas de integridade.
- Expanda Sondas Liveness, Readiness e Startup.
- Para cada sonda, edite o valor da Porta .
- Selecione o botão Save.
- Na página Criar e implantar nova revisão, selecione o botão Criar.
Configurar testes de integridade para tempo de inicialização estendido
Se a entrada estiver habilitada, os seguintes testes padrão serão adicionados automaticamente ao contêiner principal do aplicativo se nenhum for definido para cada tipo.
Aqui estão os valores padrão para cada tipo de sonda.
Property | Arranque | Prontidão | Vivacidade |
---|---|---|---|
Protocolo | TCP | TCP | TCP |
Porta | Porta de destino de entrada | Porta de destino de entrada | Porta de destino de entrada |
Limite de tempo excedido | 3 segundos | 5 segundos | n/d |
Período | 1 segundo | 5 segundos | n/d |
Atraso inicial | 1 segundo | 3 segundos | n/d |
Limiar de sucesso | 1 | 1 | n/d |
Limiar de falha | 240 | 48 | n/d |
Se seu aplicativo contêiner demorar muito tempo para iniciar (o que é comum em Java), talvez seja necessário personalizar a propriedade Initial delay seconds da sonda Liveness and readiness de acordo. Você pode visualizar os logs para ver o tempo de inicialização típico para seu aplicativo de contêiner.
- Inicie sessão no portal do Azure.
- Na barra de pesquisa, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo contêiner.
- Na barra de navegação, expanda Aplicativo e selecione Contêineres.
- Na página Contêineres, selecione Sondas de integridade.
- Selecione Editar e implantar para criar uma nova revisão.
- Na página Criar e implantar nova revisão, marque a caixa de seleção ao lado da imagem do contêiner e selecione Editar.
- Na janela Editar um contêiner, selecione Sondas de integridade.
- Expanda Sondas Liveness.
- Se a opção Ativar sondas de vivacidade estiver selecionada, aumente o valor de Segundos de atraso iniciais.
- Expanda Testes de prontidão.
- Se a opção Ativar testes de preparação estiver selecionada, aumente o valor de Segundos de atraso iniciais.
- Selecione Guardar.
- Na página Criar e implantar nova revisão, selecione o botão Criar.
Em seguida, você pode exibir os logs para ver se seu aplicativo de contêiner é iniciado com êxito.
Para obter mais informações, consulte Usar sondas de integridade.
Verifique se o tráfego está encaminhado para a revisão correta
Se seu aplicativo contêiner não se comportar como esperado, o problema pode ser que as solicitações estejam sendo roteadas para uma revisão desatualizada.
- Inicie sessão no portal do Azure.
- Na barra de pesquisa, insira o nome do aplicativo de contêiner.
- Em Recursos, selecione o nome do aplicativo contêiner.
- Na barra de navegação, expanda Aplicativo e selecione Revisão.
Se o Modo de Revisão estiver definido como Single
, todo o tráfego será roteado para a última revisão por padrão. A guia Revisões ativas deve listar apenas uma revisão, com um valor de Tráfego de 100%
.
Se o Modo de Revisão estiver definido como Multiple
, verifique se você não está roteando o tráfego para revisões desatualizadas.
Para obter mais informações sobre como configurar a divisão de tráfego, consulte Divisão de tráfego em Aplicativos de Contêiner do Azure.
Verifique se a versão mais recente da extensão Azure Container Apps está instalada
Se você receber erros sobre parâmetros ausentes ao executar az containerapp
comandos na CLI do Azure ou cmdlets do Az.App
módulo no Azure PowerShell, certifique-se de ter a versão mais recente da extensão Aplicativos de Contêiner do Azure instalada.
az extension add --name containerapp --upgrade
Verificar se a extensão de Aplicativos de Contêiner do Azure permite recursos de visualização
Se os recursos de visualização não estiverem disponíveis quando você executar az containerapp
comandos na CLI do Azure, habilite os recursos de visualização na extensão Aplicativos de Contêiner do Azure.
az extension add --name containerapp --upgrade --allow-preview true
Excluir manualmente a VNet que está sendo usada pelo ambiente de Aplicativos de Contêiner do Azure
Se você receber a mensagem provisioningState: ScheduledForDelete, mas seu ambiente não conseguir realmente excluir, certifique-se de excluir sua VNet associada manualmente.
Identifique a VNet que está sendo usada pelo ambiente que você está tentando excluir. Substitua os <ESPAÇOS RESERVADOS> pelos seus valores.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
Na saída, procure
infrastructureSubnetId
e anote o ID da VNet. Um exemplo de ID de rede virtual évNet::myVNet.id
.Exclua a VNet manualmente:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Exclua o ambiente de Aplicativos de Contêiner do Azure:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes