Résoudre les problèmes liés à une application conteneur
L’examen des journaux et des paramètres de configuration Azure Container Apps peut révéler des problèmes sous-jacents si votre application conteneur ne se comporte pas correctement. Utilisez le guide suivant pour vous aider à localiser et à afficher des détails sur votre application conteneur.
Scénarios
Le tableau suivant répertorie les problèmes que vous pouvez rencontrer lors de l’utilisation d’Azure Container Apps et les actions que vous pouvez effectuer pour les résoudre.
Scénario | Description | Actions |
---|---|---|
Tous les scénarios | Afficher les journaux Utiliser Diagnostiquer et résoudre les problèmes |
|
Erreur lors du déploiement d’une nouvelle révision | Vous recevez un message d’erreur lorsque vous essayez de déployer une nouvelle révision. | Vérifier que Container Apps peut extraire votre image conteneur |
L’approvisionnement prend trop de temps | Après le déploiement d’une nouvelle révision, celle-ci a un État de l’approvisionnement défini sur Provisionnement et un État d’exécution défini sur Traitement en cours, et ceci indéfiniment. | Vérifier que les sondes d’intégrité sont correctement configurées |
La révision est détériorée | L’approvisionnement d’une nouvelle révision prend plus de dix minutes. Pour finir, son État de l’approvisionnement est Approvisionnée, mais son État d’exécution est Détériorée. L’info-bulle État d’exécution indique Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Vérifier que les sondes d’intégrité sont correctement configurées |
Les requêtes adressées aux points de terminaison échouent | Le point de terminaison de l’application conteneur ne répond pas aux requêtes. | Examiner la configuration de l’entrée |
Les requêtes retournent l’état 403 | Le point de terminaison de l’application conteneur répond aux requêtes avec l’erreur HTTP 403 (accès refusé). | Vérifier que la configuration réseau est correcte |
Les réponses sont différentes de celles prévues | Le point de terminaison de l’application conteneur répond aux requêtes, mais les réponses ne sont pas celles prévues. | Vérifier que le trafic est routé vers la révision correcte Vérifier que vous utilisez des balises uniques lors du déploiement d’images dans le registre de conteneurs |
Erreur de paramètres manquants | Vous recevez des messages d’erreur concernant les paramètres manquants lorsque vous exécutez des commandes az containerapp dans Azure CLI ou exécutez des applets de commande à partir du module Az.App dans Azure PowerShell. |
Vérifier que la dernière version de l’extension Azure Container Apps est installée |
Fonctionnalités en préversion qui ne sont pas disponibles | Les fonctionnalités en préversion ne sont pas disponibles lorsque vous exécutez des commandes az containerapp dans Azure CLI. |
Vérifier que l’extension Azure Container Apps autorise les fonctionnalités en préversion |
La suppression de votre application ou de votre environnement ne fonctionne pas | Ce problème est souvent accompagné d’un message tel que provisioningState: ScheduledForDelete. | Supprimer manuellement le réseau virtuel associé |
Afficher les journaux d’activité
L’une des premières étapes à suivre lors de l’investigation de problèmes liés à votre application conteneur consiste à afficher les messages des journaux. Vous pouvez afficher la sortie des journaux de console et système. Le journal de console de votre application conteneur capture les flux stdout
et stderr
de l’application. Container Apps génère des journaux système pour les événements de niveau de service.
- Connectez-vous au portail Azure.
- Dans la barre Recherche, entrez le nom de votre application conteneur.
- Dans la section Ressources, sélectionnez le nom de votre application conteneur.
- Dans la barre de navigation, développez Surveillance et sélectionnez Flux de journal (et non Journaux).
- Si la page Flux de journal indiqueCette révision est mise à l’échelle à zéro., sélectionnez le bouton Accéder à Gestion des révisions. Déployez une nouvelle révision mise à l’échelle à un nombre minimal de réplicas de 1. Pour plus d’informations, consultez Mise à l’échelle dans Azure Container Apps.
- Dans la page Flux de journaux, définissez Journaux sur Console ou Système.
Utiliser l’outil Diagnostiquer et résoudre les problèmes
Vous pouvez utiliser l’outil Diagnostiquer et résoudre les problèmes pour rechercher des problèmes liés à l’intégrité, à la configuration et aux performances de votre application conteneur.
- Connectez-vous au portail Azure.
- Dans la barre Recherche, entrez le nom de votre application conteneur.
- Dans la section Ressources, sélectionnez le nom de votre application conteneur.
- Dans la barre de navigation, sélectionnez Diagnostiquer et résoudre les problèmes.
- Dans la page Diagnostiquer et résoudre les problèmes, sélectionnez l’une des catégories de résolution des problèmes.
- Sélectionnez l’une des catégories dans la barre de navigation pour trouver des moyens de résoudre les problèmes liés à votre application conteneur.
Vérifier l’accessibilité de l’image conteneur
Si vous recevez un message d’erreur lorsque vous essayez de déployer une nouvelle révision, vérifiez que Container Apps est en mesure d’extraire votre image conteneur.
- Vérifiez que votre pare-feu d’environnement de conteneur ne bloque pas l’accès au registre de conteneurs. Pour plus d’informations, consultez Contrôler le trafic sortant avec des routes définies par l’utilisateur.
- Si votre réseau virtuel existant utilise un serveur DNS personnalisé plutôt que le serveur DNS fourni par Azure par défaut, vérifiez que votre serveur DNS est configuré correctement et que la recherche DNS du registre de conteneurs n’échoue pas. Pour plus d’informations, consultez DNS.
- Si vous avez utilisé la fonctionnalité de génération cloud Container Apps pour générer une image conteneur pour vous-même (voir Chemin de code à cloud pour Azure Container Apps, votre image n’est pas accessible publiquement ; cette section n’est donc pas applicable.
Pour un conteneur Docker qui peut s’exécuter en tant qu’application console, vérifiez que votre image est accessible publiquement en exécutant la commande suivante à une invite de commandes avec élévation de privilèges. Avant d’exécuter cette commande, remplacez les espaces réservés entourés par <>
par vos valeurs.
docker run --rm <YOUR_CONTAINER_IMAGE>
Vérifiez que Docker exécute votre image sans signaler d’erreurs. Si vous exécutez Docker sur Windows, vérifiez que le moteur Docker est en cours d’exécution.
Si votre image n’est pas accessible publiquement, vous pouvez recevoir l’erreur suivante.
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'.
Pour plus d’informations, consultez Réseaux dans un environnement Azure Container Apps.
Examiner la configuration de l’entrée
Les paramètres d’entrée de votre application conteneur sont appliqués via un ensemble de règles qui contrôlent le routage du trafic externe et interne vers votre application conteneur. Si vous ne parvenez pas à vous connecter à votre application conteneur, passez en revue ces paramètres d’entrée afin de vérifier que vos paramètres d’entrée ne bloquent pas les requêtes.
- Connectez-vous au portail Azure.
- Dans la barre Recherche, entrez le nom de votre application conteneur.
- Sous Ressources, sélectionnez le nom de votre application conteneur.
- Dans la barre de navigation, développez Paramètres et sélectionnez Entrée.
Problème | Action |
---|---|
L’entrée est-elle activée ? | Vérifiez que la case Activé est cochée. |
Voulez-vous autoriser l’entrée externe ? | Vérifiez que Trafic d’entrée a la valeur Acceptation du trafic depuis n’importe où. Si votre application conteneur n’écoute pas le trafic HTTP, définissez Trafic d’entrée sur Limité à l’environnement Container Apps. |
Votre client utilise-t-il HTTP ou TCP pour accéder à votre application conteneur ? | Vérifiez que Type d’entrée est défini sur le protocole correct (HTTP ou TCP). |
Votre client prend-il en charge mTLS ? | Vérifiez que Mode certificat client est défini sur Exiger uniquement si votre client prend en charge mTLS. Pour plus d’informations, consultez Configurer l’authentification des certificats clients. |
Votre client utilise-t-il HTTP/1 ou HTTP/2 ? | Vérifiez que Transport est défini sur la version HTTP correcte (HTTP/1 ou HTTP/2). |
Le port cible est-il correctement défini ? | Vérifiez que Port cible est défini sur le même port que celui sur lequel votre application conteneur écoute, ou sur le port exposé par le fichier Dockerfile de votre application conteneur. |
Votre adresse IP cliente est-elle refusée ? | Si Mode des restrictions de sécurité d’adresses IP n’est pas défini sur Autoriser tout le trafic, vérifiez que l’adresse IP de votre client n’est refusée. |
Pour plus d’informations, consultez Entrée dans Azure Container Apps.
Vérifier la configuration réseau
Les résolveurs récursifs Azure utilisent l’adresse IP 168.63.129.16
pour résoudre les requêtes.
- Si votre réseau virtuel utilise un serveur DNS personnalisé plutôt que le serveur DNS fourni par Azure par défaut, configurez votre serveur DNS de façon à transférer les requêtes DNS non résolues vers
168.63.129.16
. - Lors de la configuration de votre groupe de sécurité réseau ou de votre pare-feu, ne bloquez pas l’adresse
168.63.129.16
.
Pour plus d’informations, consultez Réseaux dans un environnement Azure Container Apps.
Vérifier la configuration des sondes d’intégrité
Pour tous les types de sonde d’intégrité (liveness, readiness et startup) qui utilisent TCP comme transport, vérifiez que leurs numéros de port correspondent au port cible d’entrée que vous avez configuré pour votre application conteneur.
- Connectez-vous au portail Azure.
- Dans la barre Recherche, entrez le nom de votre application conteneur.
- Sous Ressources, sélectionnez le nom de votre application conteneur.
- Dans la barre de navigation, développez Application et sélectionnez Conteneurs.
- Dans la page Conteneurs, sélectionnez Sondes d’intégrité.
- Développez Sondes d’activité, Sondes de préparation et Sondes de démarrage.
- Pour chaque sonde, vérifiez que la valeur de Port est correcte.
Mettez à jour les valeurs de Port comme suit :
- Sélectionnez Modifier et déployer pour créer une nouvelle révision.
- Dans la page Créer et déployer une nouvelle révision, cochez la case en regard de votre image conteneur, puis sélectionnez Modifier.
- Dans la fenêtre Modifier un conteneur, sélectionnez Sondes d’intégrité.
- Développez Sondes d’activité, Sondes de préparation et Sondes de démarrage.
- Pour chaque sonde, modifiez la valeur de Port.
- Sélectionnez le bouton Enregistrer.
- Dans la page Créer et déployer une nouvelle révision, sélectionnez le bouton Créer.
Configurer des sondes d’intégrité pour une durée de démarrage étendue
Si l’entrée est activée, les probes par défaut suivantes sont automatiquement ajoutées au conteneur d’application principal si aucune n’est définie pour chaque type.
Voici les valeurs par défaut pour chaque type de sonde.
Propriété | Startup | Préparation | Activité |
---|---|---|---|
Protocole | TCP | TCP | TCP |
Port | Port cible d’entrée | Port cible d’entrée | Port cible d’entrée |
Délai d'expiration | 3 secondes | 5 secondes | n/a |
Période | 1 seconde | 5 secondes | n/a |
Délai initial | 1 seconde | 3 secondes | n/a |
Seuil de réussite | 1 | 1 | n/a |
Seuil d’échec | 240 | 48 | n/a |
Si votre application conteneur prend beaucoup de temps à démarrer (ce qui est courant en Java), vous devrez peut-être personnaliser la propriété Délai initial en secondes de vos probes liveness et readiness en conséquence. Vous pouvez afficher les journaux pour voir le temps de démarrage ordinaire de votre application conteneur.
- Connectez-vous au portail Azure.
- Dans la barre Recherche, entrez le nom de votre application conteneur.
- Sous Ressources, sélectionnez le nom de votre application conteneur.
- Dans la barre de navigation, développez Application et sélectionnez Conteneurs.
- Dans la page Conteneurs, sélectionnez Sondes d’intégrité.
- Sélectionnez Modifier et déployer pour créer une nouvelle révision.
- Dans la page Créer et déployer une nouvelle révision, cochez la case en regard de votre image conteneur, puis sélectionnez Modifier.
- Dans la fenêtre Modifier un conteneur, sélectionnez Sondes d’intégrité.
- Développez Sondes d’activité.
- Si l’option Activer les sondes d’activité est sélectionnée, augmentez la valeur de Délai initial en secondes.
- Développez Sondes de préparation.
- Si l’option Activer les sondes de préparation est sélectionnée, augmentez la valeur de Délai initial en secondes.
- Sélectionnez Enregistrer.
- Dans la page Créer et déployer une nouvelle révision, sélectionnez le bouton Créer.
Vous pouvez alors afficher les journaux pour voir si votre application conteneur démarre correctement.
Pour plus d’informations, consultez Utiliser des sondes d’intégrité.
Vérifier que le trafic est routé vers la révision correcte
Si votre application conteneur ne se comporte pas comme prévu, le problème peut être dû au fait que les requêtes sont routées vers une révision obsolète.
- Connectez-vous au portail Azure.
- Dans la barre Recherche, entrez le nom de votre application conteneur.
- Sous Ressources, sélectionnez le nom de votre application conteneur.
- Dans la barre de navigation, développez Application et sélectionnez Révisions.
Si Mode de révision a la valeur Single
, tout le trafic est routé vers votre dernière révision par défaut. L’onglet Révisions actives ne doit répertorier qu’une seule révision, avec une valeur Traffic égale à 100%
.
Si Mode de révision a la valeur Multiple
, vérifiez que vous ne routez pas le trafic vers des révisions obsolètes.
Pour plus d’informations sur la configuration du fractionnement du trafic, consultez Fractionnement du trafic dans Azure Container Apps.
Vérifiez que la dernière version de l’extension Azure Container Apps est installée
Si vous recevez des erreurs concernant les paramètres manquants lorsque vous exécutez des commandes az containerapp
dans Azure CLI ou des applets de commande à partir du module Az.App
dans Azure PowerShell, a assurez-vous que vous avez installé la dernière version de l’extension Azure Container Apps.
az extension add --name containerapp --upgrade
Vérifiez que l’extension d’Azure Container Apps autorise les fonctionnalités en préversion
Si les fonctionnalités en préversion ne sont pas disponibles lorsque vous exécutez des commandes az containerapp
dans Azure CLI, activez les fonctionnalités en préversion sur l’extension Azure Container Apps.
az extension add --name containerapp --upgrade --allow-preview true
Supprimer manuellement le réseau virtuel utilisé par l’environnement Azure Container Apps
Si vous recevez le message provisioningState: ScheduledForDelete, mais que votre environnement ne parvient pas à effectuer la suppression, veillez à supprimer manuellement votre réseau virtuel associé.
Identifiez le réseau virtuel utilisé par l’environnement que vous essayez de supprimer. Remplacez les <ESPACES RÉSERVÉS> par vos valeurs.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
Dans la sortie, recherchez
infrastructureSubnetId
et notez l’ID de réseau virtuel. Un exemple d’ID de réseau virtuel estvNet::myVNet.id
.Supprimer manuellement le réseau virtuel :
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Supprimer l’environnement Azure Container Apps :
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes