Solución de problemas de una aplicación de contenedor
La revisión de los registros y las opciones de configuración de Azure Container Apps puede revelar problemas subyacentes si la aplicación contenedora no se comporta correctamente. Use la siguiente guía para ayudarle a buscar y ver detalles sobre la aplicación de contenedor.
Escenarios
En la tabla siguiente se enumeran los problemas que pueden surgir al usar Azure Container Apps, y las acciones que puede realizar para resolverlos.
Escenario | Descripción | Acciones |
---|---|---|
Todas las situaciones | Ver registros Usar diagnóstico y solución de problemas |
|
Error al implementar una nueva revisión | Recibirá un mensaje de error al intentar implementar una nueva revisión. | Comprobación de que Container Apps puede extraer la imagen de contenedor |
El aprovisionamiento tarda demasiado tiempo | Después de implementar una nueva revisión, la nueva revisión tiene un estado de Aprovisionamiento y un estado en ejecución de Procesamiento indefinidamente. | Comprobación de que los sondeos de estado están configurados correctamente |
La revisión está degradada | Una nueva revisión tarda más de 10 minutos en aprovisionarse. Por último, tiene un estado de aprovisionamiento de Aprovisionado, pero un Estado en ejecución de Degradado. La información sobre las Herramientas de ejecución de los estados diceDetails: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Comprobación de que los sondeos de estado están configurados correctamente |
Se produce un error en las solicitudes a los puntos de conexión | El punto de conexión de la aplicación contenedora no responde a las solicitudes. | Revisar la configuración de entrada |
Estado de devolución de solicitudes 403 | El punto de conexión de la aplicación de contenedor responde a las solicitudes con el error HTTP 403 (acceso denegado). | Comprobación de que la configuración de red es correcta |
Las respuestas no son las esperadas | El punto de conexión de la aplicación contenedora responde a las solicitudes, pero las respuestas no son las esperadas. | Comprobación de que el tráfico se enruta a la revisión correcta Compruebe que usa etiquetas únicas al implementar imágenes en el registro de contenedor |
Error de parámetros que faltan | Recibirá mensajes de error sobre los parámetros que faltan al ejecutar comandos az containerapp en la CLI de Azure o ejecutar cmdlets desde el módulo Az.App en Azure PowerShell. |
Compruebe que la última versión de la extensión Azure Container Apps esté instalada |
Característica en vista previa no disponible | Las características en versión preliminar no están disponibles al ejecutar los comandos az containerapp en la CLI de Azure. |
Comprobación de que la extensión de Azure Container Apps permite características en versión preliminar |
La eliminación de la aplicación o el entorno no funciona | Este problema suele ir acompañado de un mensaje como provisioningState: ScheduledForDelete. | Eliminación manual de la red virtual asociada |
Ver registros
Uno de los primeros pasos que hay que dar cuando se buscan problemas con la aplicación de contenedor es ver los mensajes de registro. Puede ver la salida de los registros de consola y del sistema. El registro de consola de la aplicación contenedora captura los flujos stdout
y stderr
de la aplicación. Container Apps genera registros del sistema para eventos de nivel de servicio.
- Inicie sesión en Azure Portal.
- En la barra de Búsqueda, escriba el nombre de la aplicación contenedora.
- En la sección Recursos, seleccione el nombre de la aplicación contenedora.
- En la barra de navegación, expanda Supervisión y seleccione Flujo de registro (no Registros).
- Si la página Flujo de registro indica Que esta revisión se escala a cero, seleccione el botón Ir a administración de revisiones. Implemente una nueva revisión escalada a un recuento mínimo de réplicas de 1. Para más información, consulte Escalado en Azure Container Apps.
- En la página Flujo de registro, establezca Registros en Consola o Sistema.
Uso de la herramienta de diagnóstico y solución de problemas
Puede usar la herramienta diagnosticar y resolver problemas para encontrar problemas con el estado, la configuración y el rendimiento de la aplicación contenedora.
- Inicie sesión en Azure Portal.
- En la barra de Búsqueda, escriba el nombre de la aplicación contenedora.
- En la sección Recursos, seleccione el nombre de la aplicación contenedora.
- En la barra de navegación, seleccione Diagnosticar y solucionar problemas.
- En la página Diagnosticar y resolver problemas, seleccione una de las categorías solución de problemas.
- Seleccione una de las categorías de la barra de navegación para encontrar formas de solucionar problemas con la aplicación contenedora.
Comprobación de la accesibilidad de la imagen de contenedor
Si recibe un mensaje de error al intentar implementar una nueva revisión, compruebe que Container Apps puede extraer la imagen del contenedor.
- Asegúrese de que el firewall del entorno de contenedor no bloquea el acceso al registro de contenedor. Para obtener más información, consulte Control del tráfico saliente con rutas definidas por el usuario.
- Si la red virtual existente usa un servidor DNS personalizado en lugar del servidor DNS proporcionado por Azure predeterminado, compruebe que el servidor DNS está configurado correctamente y que no se produce un error en la búsqueda DNS del registro de contenedor. Para más información, consulte DNS.
- Si ha usado la característica de compilación en la nube de Container Apps para generar una imagen de contenedor (consulte Ruta de acceso de código a nube para Azure Container Apps, la imagen no es accesible públicamente, por lo que esta sección no se aplica.
Para un contenedor de Docker que se puede ejecutar como una aplicación de consola, compruebe que la imagen es accesible públicamente mediante la ejecución del siguiente comando en un símbolo del sistema con privilegios elevados. Antes de ejecutar el comando siguiente, reemplace los marcadores de posición rodeados por <>
con sus valores.
docker run --rm <YOUR_CONTAINER_IMAGE>
Compruebe que Docker ejecuta la imagen sin notificar ningún error. Si ejecuta Docker en Windows, asegúrese de que tiene el motor de Docker en ejecución.
Si la imagen no es accesible públicamente, es posible que reciba el siguiente error.
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 más información, consulte Redes en el entorno de Azure Container Apps.
Revisión de la configuración de entrada
La configuración de entrada de la aplicación de contenedor se aplica a través de un conjunto de reglas que controlan el enrutamiento del tráfico externo e interno a la aplicación contenedora. Si no puede conectarse a la aplicación de contenedor, revise esta configuración de entrada para asegurarse de que la configuración de entrada no bloquee las solicitudes.
- Inicie sesión en Azure Portal.
- En la barra de Búsqueda, escriba el nombre de la aplicación contenedora.
- En Recursos, seleccione el nombre de la aplicación contenedora.
- En la barra de navegación, expanda Configuración y seleccione Entrada.
Problema | Action |
---|---|
¿Está habilitada la entrada? | Compruebe que la casilla Habilitado está activada. |
¿Desea permitir la entrada externa? | Compruebe que tráfico de entrada está establecido en Aceptar tráfico desde cualquier lugar. Si la aplicación contenedora no escucha el tráfico HTTP, establezca Tráfico de entrada en Limitado a Entorno de aplicaciones de contenedor. |
¿El cliente usa HTTP o TCP para acceder a la aplicación de contenedor? | Compruebe que el tipo de entrada está establecido en el protocolo correcto (HTTP o TCP). |
¿El cliente admite mTLS? | Compruebe que el modo de certificado de cliente está establecido en Requerir solo si el cliente admite mTLS. Para obtener más información, consulte Configurar autenticación certificados de cliente. |
¿El cliente usa HTTP/1 o HTTP/2? | Compruebe que Transporte está establecido en la versión HTTP correcta (HTTP/1 o HTTP/2). |
¿El puerto de destino está configurado correctamente? | Compruebe que el puerto de destino está establecido en el mismo puerto en el que escucha la aplicación contenedora o en el mismo puerto expuesto por el Dockerfile de la aplicación contenedora. |
¿Se deniega la dirección IP del cliente? | Si El modo de restricciones de seguridad IP no está establecido en Permitir todo el tráfico, compruebe que el cliente no tiene una dirección IP denegada. |
Para más información, consulte Entrada en Azure Container Apps.
Comprobación de la configuración de red
Solucionadores recursivos de Azure usa la dirección IP 168.63.129.16
para resolver las solicitudes.
- Si la red virtual usa un servidor DNS personalizado en lugar del servidor DNS predeterminado que proporciona Azure, configure el servidor DNS para reenviar consultas de DNS sin resolver a
168.63.129.16
. - Al configurar el grupo de seguridad de red o el firewall, no bloquee la
168.63.129.16
dirección.
Para más información, consulte Redes en el entorno de Azure Container Apps.
Comprobación de la configuración de sondeos de estado
Para todos los tipos de sondeo de estado (ejecución, preparación y inicio) que usan TCP como transporte, compruebe que sus números de puerto coinciden con el puerto de destino de entrada que configuró para la aplicación contenedora.
- Inicie sesión en Azure Portal.
- En la barra de Búsqueda, escriba el nombre de la aplicación contenedora.
- En Recursos, seleccione el nombre de la aplicación contenedora.
- En la barra de navegación, expanda Aplicación y seleccione Contenedores.
- En la página Contenedores, seleccione Sondeos de estado.
- Expanda Sondeos de ejecución,Sondeos de preparación ySondeos de inicio.
- Para cada sondeo, compruebe que el valor de Puerto es correcto.
Actualice los valores de Puerto de la manera siguiente:
- Seleccione Editar e implementar para crear una nueva revisión.
- En la página Crear e implementar nueva revisión, active la casilla situada junto a la imagen de contenedor y seleccione Editar.
- En la ventana Editar un contenedor, seleccione Sondeos de estado.
- Expanda Sondeos de ejecución,Sondeos de preparación y Sondeos de inicio.
- Para cada sondeo, edite el valor Puerto.
- Seleccione el botón Guardar.
- En la página Crear e implementar una nueva revisión, seleccione el botón Crear.
Configuración de sondeos de estado para el tiempo de inicio extendido
Si la entrada está habilitada, los siguientes sondeos predeterminados se añaden automáticamente al contenedor de aplicaciones principal si no se define ninguno para cada tipo.
Estos son los valores predeterminados para cada tipo de sondeo.
Propiedad | Startup | Preparación | Ejecución |
---|---|---|---|
Protocolo | TCP | TCP | TCP |
Puerto | Puerto de destino de entrada | Puerto de destino de entrada | Puerto de destino de entrada |
Tiempo de espera | 3 segundos | 5 segundos | N/D |
Período | 1 segundo | 5 segundos | N/D |
Retraso inicial | 1 segundo | 3 segundos | N/D |
Umbral de éxito | 1 | 1 | N/D |
Umbral de error | 240 | 48 | N/D |
Si la aplicación contenedora tarda un período de tiempo prolongado en iniciarse (que es común en Java), es posible que tenga que personalizar la propiedad inicial de segundos de retraso inicial del sondeo de ejecución y preparación en consecuencia. Puede ver los registros para ver el tiempo de inicio típico de la aplicación contenedora.
- Inicie sesión en Azure Portal.
- En la barra de Búsqueda, escriba el nombre de la aplicación contenedora.
- En Recursos, seleccione el nombre de la aplicación contenedora.
- En la barra de navegación, expanda Aplicación y seleccione Contenedores.
- En la página Contenedores, seleccione Sondeos de estado.
- Seleccione Editar e implementar para crear una nueva revisión.
- En la página Crear e implementar nueva revisión, active la casilla situada junto a la imagen de contenedor y seleccione Editar.
- En la ventana Editar un contenedor, seleccione Sondeos de estado.
- Expanda Sondeos de ejecución.
- Si se selecciona Habilitar sondeos de ejecución, aumente el valor de Los segundos de retraso inicial.
- Expanda Sondeos de preparación.
- Si se selecciona Habilitar sondeos de preparación, aumente el valor de Los segundos de retraso inicial.
- Seleccione Guardar.
- En la página Crear e implementar una nueva revisión, seleccione el botón Crear.
A continuación, puede ver los registros para ver si la aplicación de contenedor se inicia correctamente.
Para más información, consulte Use sondeos de estado.
Comprobación de que el tráfico se enruta a la revisión correcta
Si la aplicación contenedora no se comporta según lo previsto, es posible que el problema sea que las solicitudes se enrutan a una revisión obsoleta.
- Inicie sesión en Azure Portal.
- En la barra de Búsqueda, escriba el nombre de la aplicación contenedora.
- En Recursos, seleccione el nombre de la aplicación contenedora.
- En la barra de navegación, expanda Aplicación y seleccione Revisiones.
Si el Modo de revisión está establecido en Single
, todo el tráfico se enruta a la revisión más reciente de manera predeterminada. La pestaña Revisiones activas debe enumerar solo una revisión, con un valor de Tráfico de 100%
.
Si el Modo de revisión está establecido en Multiple
, compruebe que no está enrutando el tráfico a revisiones obsoletas.
Para más información sobre cómo configurar la división de tráfico, consulte División de tráfico en Azure Container Apps.
Compruebe que está instalada la última versión de la extensión de Azure Container Apps
Si recibe errores sobre los parámetros que faltan al ejecutar los comandos az containerapp
en la CLI de Azure o cmdlets del módulo Az.App
en Azure PowerShell, asegúrese de que tiene instalada la versión más reciente de la extensión Azure Container Apps.
az extension add --name containerapp --upgrade
Comprobación de que la extensión de Azure Container Apps permite la característica en vista previa
Si lacaracterística en versión preliminar no están disponibles al ejecutar los comandos az containerapp
en la CLI de Azure, habilite la característica en vista previa en la extensión Azure Container Apps.
az extension add --name containerapp --upgrade --allow-preview true
Elimine manualmente la red virtual que usa el entorno de Azure Container Apps
Si recibe el mensaje provisioningState: ScheduledForDelete, pero su entorno no llega a eliminarse realmente, asegúrese de eliminar su red virtual asociada manualmente.
Identifique la red virtual que usa el entorno que está intentando eliminar. Reemplace los <PLACEHOLDERS> por sus valores.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
En la salida, busque
infrastructureSubnetId
y anote el identificador de red virtual. Un identificador de red virtual de ejemplo esvNet::myVNet.id
.Elimine la red virtual manualmente:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Elimine el entorno de Azure Container Apps:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes