Risoluzione dei problemi di un'app contenitore
La revisione dei log e delle impostazioni di configurazione di App contenitore di Azure può rivelare problemi sottostanti se l'app contenitore non funziona correttamente. Usare la guida seguente per individuare e visualizzare i dettagli sull'app contenitore.
Scenari
Nella tabella seguente sono elencati i problemi che potrebbero verificarsi durante l'utilizzo di App contenitore di Azure e le azioni che è possibile eseguire per risolverli.
Scenario | Descrizione | Azioni |
---|---|---|
Tutti gli scenari | Visualizzare i log Usare Diagnostica e risolvi i problemi |
|
Errore durante la distribuzione di una nuova revisione | Quando si tenta di distribuire una nuova revisione viene visualizzato un messaggio di errore. | Verificare che App contenitore possa eseguire il pull dell'immagine del contenitore |
Il provisioning richiede troppo tempo | Dopo aver distribuito una nuova revisione, la nuova revisione ha uno Stato di provisioning del Provisioning e uno Stato in esecuzione di Elaborazione a tempo indefinito. | Verificare che i probe di integrità siano configurati correttamente |
La revisione è danneggiata | Il provisioning di una nuova revisione richiede più di 10 minuti. Infine ha uno Stato di provisioning di Con provisioning, ma uno Stato in esecuzione di Danneggiato. La descrizione comando Stato in esecuzione legge Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Verificare che i probe di integrità siano configurati correttamente |
Le richieste agli endpoint hanno esito negativo | L'endpoint dell'app contenitore non risponde alle richieste. | Rivedere la configurazione in ingresso |
Le richieste restituiscono lo stato 403 | L'endpoint dell'app contenitore risponde alle richieste con l'errore HTTP 403 (accesso negato). | Verificare che la configurazione della rete sia corretta |
Le risposte non corrispondono alle previsioni | L'endpoint dell'app contenitore risponde alle richieste, ma le risposte non sono quelle previste. | Verificare che il traffico venga indirizzato alla revisione corretta Verificare di usare tag univoci durante la distribuzione di immagini nel registro contenitori |
Errore di parametri mancanti | Quando si eseguono comandi az containerapp nell'interfaccia della riga di comando di Azure vengono visualizzati messaggi di errore relativi ai parametri mancanti oppure si eseguono cmdlet dal modulo Az.App in Azure PowerShell. |
Verificare che sia installata la versione più recente dell'estensione App contenitore di Azure |
Funzionalità di anteprima non disponibili | Le funzionalità di anteprima non sono disponibili quando si eseguono comandi az containerapp nell'interfaccia della riga di comando di Azure. |
Verificare se l'estensione App contenitore di Azure consente le funzionalità di anteprima |
L'eliminazione dell'app o dell'ambiente non funziona | Questo problema è spesso accompagnato da un messaggio come provisioningState: ScheduledForDelete. | Eliminare manualmente la rete virtuale associata |
Visualizzare i log
Uno dei primi passaggi da eseguire durante la ricerca di problemi con l'app contenitore consiste nel visualizzare i messaggi di log. È possibile visualizzare l'output di entrambi i log della console e di sistema. Il log della console dell'app contenitore acquisisce i flussi stdout
e stderr
dell'app. App contenitore genera i log di sistema per gli eventi a livello di servizio.
- Accedere al portale di Azure.
- Nella barra di Ricerca immettere il nome dell'app contenitore.
- Nella sezione Risorse selezionare il nome dell'app contenitore.
- Nella barra di spostamento espandere Monitoraggio e selezionare Flusso di log (non Log).
- Se la pagina Flusso di log indica che Questa revisione è stata ridimensionata a zero., selezionare il pulsante Vai a Gestione revisioni. Distribuire una nuova revisione ridimensionata in un numero minimo di repliche pari a 1. Per altre informazioni, vedere Ridimensionamento in App contenitore di Azure.
- Nella pagina Flusso di log impostare i Log su Console oSistema.
Usare lo strumento Diagnostica e risolvi i problemi
È possibile usare lo strumento Diagnostica e risolvi i problemi per individuare i problemi relativi all'integrità, alla configurazione e alle prestazioni dell'app contenitore.
- Accedere al portale di Azure.
- Nella barra di Ricerca immettere il nome dell'app contenitore.
- Nella sezione Risorse selezionare il nome dell'app contenitore.
- Nella barra di spostamento selezionare Diagnostica e risolvi i problemi.
- Nella pagina Diagnostica e risolvi i problemi selezionare una delle categorie di risoluzione dei problemi.
- Selezionare una delle categorie nella barra di spostamento per trovare i modi per risolvere i problemi relativi all'app contenitore.
Verificare l'accessibilità dell'immagine del contenitore
Se viene visualizzato un messaggio di errore quando si tenta di distribuire una nuova revisione, verificare che App contenitore sia in grado di eseguire il pull dell'immagine del contenitore.
- Assicurarsi che il firewall dell'ambiente contenitore non blocchi l'accesso al registro contenitori. Per altre informazioni, vedere Controllare il traffico in uscita con route definite dall'utente.
- Se la rete virtuale esistente usa un server DNS personalizzato anziché il server DNS predefinito fornito da Azure, verificare che il server DNS sia configurato correttamente e che la ricerca DNS del registro contenitori non abbia esito negativo. Per altre informazioni, vedere DNS.
- Se è stata usata la funzionalità di compilazione cloud di App contenitore per generare automaticamente un'immagine del contenitore (vedere Percorso da codice a cloud per App Contenitore di Azure, l'immagine non è accessibile pubblicamente, quindi questa sezione non è applicabile.
Per un contenitore Docker che può essere eseguito come applicazione console, verificare che l'immagine sia accessibile pubblicamente eseguendo il comando seguente in un prompt dei comandi con privilegi elevati. Prima di eseguire questo comando, sostituire i segnaposto racchiusi da <>
con i valori.
docker run --rm <YOUR_CONTAINER_IMAGE>
Verificare che Docker esegua l'immagine senza segnalare errori. Se si esegue Docker in Windows, assicurarsi di avere il motore Docker in esecuzione.
Se l'immagine non è accessibile pubblicamente, è possibile che venga visualizzato l'errore seguente.
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'.
Per altre informazioni, vedere Reti nell'ambiente App contenitore di Azure.
Rivedere la configurazione in ingresso
Le impostazioni di ingresso dell'app contenitore vengono applicate tramite un set di regole che controllano il routing del traffico esterno e interno all'app contenitore. Se non è possibile connettersi all'app contenitore, rivedere queste impostazioni di ingresso per assicurarsi che non blocchino le richieste.
- Accedere al portale di Azure.
- Nella barra di Ricerca immettere il nome dell'app contenitore.
- In Risorse selezionare il nome dell'app contenitore.
- Nella barra di spostamento espandere Impostazioni e selezionare Ingresso.
Problema | Azione |
---|---|
L'ingresso è abilitato? | Verificare che la casella di controllo Abilitato sia selezionata. |
Consentire l'ingresso esterno? | Verificare che Traffico in ingresso sia impostato su Accetta il traffico da qualsiasi posizione. Se l'app contenitore non è in ascolto del traffico HTTP, impostare Traffico in ingresso su Limitato all'ambiente App contenitore. |
Il client usa HTTP o TCP per accedere all'app contenitore? | Verificare che il Tipo di ingresso sia impostato sul protocollo corretto (HTTP o TCP). |
Il client supporta mTLS? | Verificare che la Modalità del certificato client sia impostata su Richiedi solo se il client supporta mTLS. Per altre informazioni, vedere Configurare l'autenticazione del certificato client. |
Il client usa HTTP/1 o HTTP/2? | Verificare che Trasporto sia impostato sulla versione HTTP corretta (HTTP/1 o HTTP/2). |
La porta di destinazione è impostata correttamente? | Verificare che la Porta di destinazione sia impostata sulla stessa porta su cui è in ascolto l'app contenitore o la stessa porta esposta dal Dockerfile dell'app contenitore. |
L'indirizzo IP del client viene rifiutato? | Se la Modalità restrizioni di sicurezza IP non è impostata su Consenti tutto il traffico, verificare che il client non abbia un indirizzo IP rifiutato. |
Per altre informazioni, vedere Ingresso in App contenitore di Azure.
Verificare la configurazione di rete
Resolver ricorsivi di Azure usa l'indirizzo IP 168.63.129.16
per risolvere le richieste.
- Se la rete virtuale usa un server DNS personalizzato anziché il server DNS predefinito fornito da Azure, configurare il server DNS per inoltrare le query DNS non risolte a
168.63.129.16
. - Quando si configura il gruppo di sicurezza di rete (NSG) o il firewall, non bloccare l'indirizzo
168.63.129.16
.
Per altre informazioni, vedere Reti nell'ambiente App contenitore di Azure.
Verificare la configurazione dei probe di integrità
Per tutti i tipi di probe di integrità (idoneità, attività e startup) che usano TCP come trasporto, verificare che i numeri di porta corrispondano alla porta di destinazione in ingresso configurata per l'app contenitore.
- Accedere al portale di Azure.
- Nella barra di Ricerca immettere il nome dell'app contenitore.
- In Risorse selezionare il nome dell'app contenitore.
- Nella barra di spostamento espandere Applicazione e selezionare Contenitori.
- Nella pagina Contenitori selezionare Probe di integrità.
- Espandere Probe di attività, Probe di idoneità e Probe di avvio.
- Per ogni probe, verificare che il valore Porta sia corretto.
Aggiornare i valori Porta come indicato di seguito:
- Selezionare Modifica e distribuire per creare una nuova revisione.
- Nella pagina Crea e distribuisci nuova revisione selezionare la casella di controllo accanto all'immagine del contenitore e selezionare Modifica.
- Nella finestra Modifica un contenitore selezionare Probe di integrità.
- Espandere Probe di attività, Probe di idoneità e Probe di avvio.
- Per ogni probe, modificare il valore Porta.
- Selezionare il pulsante Salva.
- Nella pagina Crea e distribuisci nuova revisione selezionare il pulsante Crea.
Configurare i probe di integrità per il tempo di avvio esteso
Se l'ingresso è abilitato, i probe predefiniti seguenti vengono aggiunti automaticamente al contenitore principale dell'app se non è definito alcun tipo per ogni tipo.
Ecco i valori predefiniti per ogni tipo di probe.
Proprietà | Startup | Preparazione | Attività |
---|---|---|---|
Protocollo | TCP | TCP | TCP |
Porta | Porta di destinazione in ingresso | Porta di destinazione in ingresso | Porta di destinazione in ingresso |
Timeout | 3 secondi | 5 secondi | n/d |
Periodo | 1 secondo | 5 secondi | n/d |
Ritardo iniziale | 1 secondo | 3 secondi | n/d |
Soglia di successo | 1 | 1 | n/d |
Soglia di errore | 240 | 48 | n/d |
Se l'app contenitore richiede un periodo di tempo prolungato per l'avvio (che è comune in Java), potrebbe essere necessario personalizzare di conseguenza la proprietà Ritardo in secondi iniziale del probe di idoneità e attività. È possibile visualizzare i log per visualizzare il tempo di avvio tipico per l'app contenitore.
- Accedere al portale di Azure.
- Nella barra di Ricerca immettere il nome dell'app contenitore.
- In Risorse selezionare il nome dell'app contenitore.
- Nella barra di spostamento espandere Applicazione e selezionare Contenitori.
- Nella pagina Contenitori selezionare Probe di integrità.
- Selezionare Modifica e distribuire per creare una nuova revisione.
- Nella pagina Crea e distribuisci nuova revisione selezionare la casella di controllo accanto all'immagine del contenitore e selezionare Modifica.
- Nella finestra Modifica un contenitore selezionare Probe di integrità.
- Espandere Probe di attività.
- Se è selezionata l'opzione Abilita probe di attività, aumentare il valore per Ritardo in secondi inziale.
- Espandere il Probe di idoneità.
- Se è selezionata l'opzione Abilita probe di idoneità, aumentare il valore per il Ritardo in secondi iniziale.
- Seleziona Salva.
- Nella pagina Crea e distribuisci nuova revisione selezionare il pulsante Crea.
È quindi possibile visualizzare i log per verificare se l'app contenitore viene avviata correttamente.
Per altre informazioni, vedere Usare probe di integrità.
Verificare che il traffico venga indirizzato alla revisione corretta
Se l'app contenitore non si comporta come previsto, il problema potrebbe essere che le richieste vengono instradate a una revisione obsoleta.
- Accedere al portale di Azure.
- Nella barra di Ricerca immettere il nome dell'app contenitore.
- In Risorse selezionare il nome dell'app contenitore.
- Nella barra di spostamento espandere Applicazione e selezionare Revisioni.
Se la Modalità di revisione è impostata su Single
, per impostazione predefinita tutto il traffico viene instradato alla revisione più recente. La scheda Revisioni attive deve elencare una sola revisione, con un valore di Traffico di 100%
.
Se la Modalità di revisione è impostata su Multiple
Verifica di non instradare il traffico a revisioni obsolete.
Per altre informazioni sulla configurazione della suddivisione del traffico, vedere Suddivisione del traffico in App contenitore di Azure.
Verificare che sia installata l'ultima versione dell'estensione App contenitore di Azure
Se si ricevono errori relativi ai parametri mancanti quando si eseguono comandi az containerapp
nell'interfaccia della riga di comando di Azure o nei cmdlet del modulo Az.App
in Azure PowerShell, assicurarsi di avere installato la versione più recente dell'estensione App contenitore di Azure.
az extension add --name containerapp --upgrade
Verificare che l'estensione App contenitore di Azure consenta le funzionalità di anteprima
Se le funzionalità di anteprima non sono disponibili quando si eseguono comandi az containerapp
nell'interfaccia della riga di comando di Azure, abilitare le funzionalità di anteprima nell'estensione App contenitore di Azure.
az extension add --name containerapp --upgrade --allow-preview true
Eliminare manualmente la rete virtuale usata dall'ambiente app azure Container
Se viene visualizzato il messaggio provisioningState: ScheduledForDelete, ma l'ambiente non riesce a eliminare effettivamente, assicurarsi di eliminare manualmente la rete virtuale associata.
Identificare la rete virtuale usata dall'ambiente che si sta tentando di eliminare. Sostituire i <SEGNAPOSTO> con i valori.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
Nell'output cercare
infrastructureSubnetId
e annotare l'ID rete virtuale. Un esempio di ID rete virtuale èvNet::myVNet.id
.Eliminare manualmente la rete virtuale:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Eliminare l'ambiente app Azure Container:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes