Устранение неполадок с приложением-контейнером
Просмотр журналов и параметров конфигурации контейнерных приложений Azure может выявить базовые проблемы, если ваше приложение-контейнер не работает правильно. Используйте следующее руководство, чтобы найти и просмотреть сведения о приложении-контейнере.
Сценарии
В следующей таблице перечислены проблемы, которые могут возникнуть при использовании приложений контейнеров Azure, а также действия, которые можно предпринять для их устранения.
Сценарий | Description | Действия |
---|---|---|
Все сценарии | Просмотр журналов Использование диагностики и решения проблем |
|
Ошибка при развертывании новой редакции | При попытке развернуть новую редакцию появится сообщение об ошибке. | Проверка того, что приложения-контейнеры могут извлечь образ контейнера |
Подготовка занимает слишком много времени | После развертывания новой редакции новая редакция имеет состояние подготовки и состояние "Выполнение обработки" на неопределенный срок. | Проверка правильной настройки проб работоспособности |
Редакция снижается | Для подготовки новой редакции требуется более 10 минут. Наконец, он имеет состояние "Подготовка", но состояние "Состояние "Состояние "Состояние "Понижено". Подсказка "Выполнение состояния " считывает Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Проверка правильной настройки проб работоспособности |
Сбой запросов к конечным точкам | Конечная точка приложения контейнера не отвечает на запросы. | Проверка конфигурации входящего трафика |
Запросы возвращают состояние 403 | Конечная точка приложения-контейнера отвечает на запросы с ошибкой HTTP 403 (доступ запрещен). | Проверка правильной конфигурации сети |
Ответы не так, как ожидалось | Конечная точка приложения-контейнера отвечает на запросы, но ответы не так, как ожидалось. | Проверка маршрутизации трафика в правильную редакцию Проверка использования уникальных тегов при развертывании образов в реестре контейнеров |
Ошибка отсутствующих параметров | При выполнении команд в Azure CLI вы получаете сообщения об ошибках о отсутствующих параметрах или командлетах az containerapp из Az.App модуля в Azure PowerShell. |
Проверка установки последней версии расширения "Приложения контейнеров Azure" |
Предварительные версии функций недоступны | Предварительные версии функций недоступны при выполнении az containerapp команд в Azure CLI. |
Проверка расширения "Приложения контейнеров Azure" позволяет просматривать функции предварительной версии |
Удаление приложения или среды не работает | Эта проблема часто сопровождается сообщением, например provisioningState: ScheduledForDelete. | Удаление связанной виртуальной сети вручную |
Просмотреть журналы
Одним из первых действий по поиску проблем с приложением-контейнером является просмотр сообщений журнала. Выходные данные журналов консоли и системы можно просмотреть. В журнале консоли приложения-контейнера записываются потоки и stderr
потоки приложенияstdout
. Контейнерные приложения создают системные журналы для событий уровня обслуживания.
- Войдите на портал Azure.
- В строке поиска введите имя приложения контейнера.
- В разделе "Ресурсы" выберите имя приложения контейнера.
- На панели навигации разверните узел "Мониторинг " и выберите поток журналов (а не журналы).
- Если страница потока журнала говорит, что эта редакция масштабируется до нуля. Нажмите кнопку "Перейти к управлению редакцией". Разверните новую редакцию, масштабируемую до минимального количества реплик 1. Дополнительные сведения см. в статье Масштабирование в приложениях контейнеров Azure.
- На странице потока журнала задайте для журналов значение "Консоль" или "Система".
Использование средства диагностики и решения проблем
Вы можете использовать средство диагностики и решения проблем , чтобы найти проблемы со работоспособностью, конфигурацией и производительностью приложения контейнера.
- Войдите на портал Azure.
- В строке поиска введите имя приложения контейнера.
- В разделе "Ресурсы" выберите имя приложения контейнера.
- На панели навигации выберите " Диагностика и решение проблем".
- На странице "Диагностика и устранение проблем" выберите одну из категорий "Устранение неполадок".
- Выберите одну из категорий на панели навигации, чтобы найти способы устранения проблем с приложением-контейнером.
Проверка специальных возможностей образа контейнера
Если при попытке развернуть новую редакцию появится сообщение об ошибке, убедитесь, что приложения-контейнеры могут извлечь образ контейнера.
- Убедитесь, что брандмауэр среды контейнера не блокирует доступ к реестру контейнеров. Дополнительные сведения см. в разделе "Управление исходящим трафиком с помощью определяемых пользователем маршрутов".
- Если существующая виртуальная сеть использует пользовательский DNS-сервер, а не DNS-сервер, предоставленный Azure, убедитесь, что DNS-сервер настроен правильно, и поиск DNS реестра контейнеров не завершается ошибкой. Дополнительные сведения см. в статье DNS.
- Если вы использовали функцию облачной сборки контейнерных приложений для создания образа контейнера (см . путь к коду в облако для приложений контейнеров Azure, образ недоступен, поэтому этот раздел не применяется.
Для контейнера Docker, который может работать в качестве консольного приложения, убедитесь, что образ доступен в общедоступной среде, выполнив следующую команду в командной строке с повышенными привилегиями. Перед выполнением этой команды замените заполнители, окруженные значениями <>
.
docker run --rm <YOUR_CONTAINER_IMAGE>
Убедитесь, что Docker запускает образ, не сообщая об ошибках. Если вы используете Docker в Windows, убедитесь, что у вас запущен модуль Docker.
Если образ недоступен для общедоступного доступа, может появиться следующая ошибка.
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'.
Дополнительные сведения см. в разделе "Сеть" в среде "Приложения контейнеров Azure".
Проверка конфигурации входящего трафика
Параметры входящего трафика приложения контейнера применяются с помощью набора правил, которые управляют маршрутизацией внешнего и внутреннего трафика в приложение контейнера. Если вы не можете подключиться к приложению-контейнеру, просмотрите эти параметры входящего трафика, чтобы убедиться, что параметры входящего трафика не блокируют запросы.
- Войдите на портал Azure.
- В строке поиска введите имя приложения контейнера.
- В разделе "Ресурсы" выберите имя приложения контейнера.
- На панели навигации разверните узел "Параметры" и выберите "Входящий трафик".
Проблема | Действие |
---|---|
Включена ли входящий трафик? | Убедитесь, что установлен флажок "Включен ". |
Вы хотите разрешить внешний входящий трафик? | Убедитесь, что трафик входящего трафика установлен как принимающее трафик из любого места. Если приложение-контейнер не прослушивает HTTP-трафик, задайте для трафика входящего трафика значение "Ограничено средой контейнерных приложений". |
Использует ли клиент HTTP или TCP для доступа к приложению-контейнеру? | Убедитесь, что для типа входящего трафика задан правильный протокол (HTTP или TCP). |
Поддерживает ли клиент MTLS? | Убедитесь, что для режима сертификата клиента задано значение "Требовать" , только если клиент поддерживает MTLS. Дополнительные сведения см. в статье о настройке проверки подлинности сертификата клиента. |
Использует ли клиент HTTP/1 или HTTP/2? | Убедитесь, что для транспорта задана правильная версия HTTP (HTTP/1 или HTTP/2). |
Правильно ли задан целевой порт? | Убедитесь , что целевой порт установлен на тот же порт, в который прослушивается приложение контейнера, или тот же порт, предоставляемый приложением-контейнером Dockerfile. |
Отклонен ли IP-адрес клиента? | Если для режима ограничений безопасности IP-адресов не задано значение "Разрешить весь трафик", убедитесь, что у клиента нет IP-адреса, который запрещен. |
Дополнительные сведения см. в разделе "Входящий трафик" в приложениях контейнеров Azure.
Проверка конфигурации сети
Рекурсивные сопоставители Azure используют IP-адрес 168.63.129.16
для разрешения запросов.
- Если виртуальная сеть использует пользовательский DNS-сервер вместо DNS-сервера, предоставленного Azure по умолчанию, настройте DNS-сервер для перенаправления неразрешенных ЗАПРОСОВ DNS в
168.63.129.16
. - При настройке группы безопасности сети или брандмауэра не блокируйте
168.63.129.16
адрес.
Дополнительные сведения см. в разделе "Сеть" в среде "Приложения контейнеров Azure".
Проверка конфигурации проб работоспособности
Для всех типов проб работоспособности (активности, готовности и запуска), которые используют TCP в качестве транспорта, убедитесь, что их номера портов соответствуют целевому порту входящего трафика, настроенного для приложения контейнера.
- Войдите на портал Azure.
- В строке поиска введите имя приложения контейнера.
- В разделе "Ресурсы" выберите имя приложения контейнера.
- На панели навигации разверните приложение и выберите контейнеры.
- На странице "Контейнеры" выберите пробы работоспособности.
- Разверните пробы Liveness, пробы готовности и пробы запуска.
- Для каждой пробы убедитесь, что значение порта правильно.
Обновите значения портов следующим образом:
- Выберите "Изменить и развернуть ", чтобы создать новую редакцию.
- На странице "Создание и развертывание новой редакции" установите флажок рядом с образом контейнера и нажмите кнопку "Изменить".
- В окне "Изменение контейнера" выберите пробы работоспособности.
- Разверните пробы Liveness, пробы готовности и пробы запуска.
- Для каждой пробы измените значение порта .
- Выберите кнопку Сохранить.
- На странице "Создание и развертывание новой редакции" нажмите кнопку "Создать".
Настройка проб работоспособности для расширенного времени запуска
Если входящий трафик включен, следующие пробы по умолчанию автоматически добавляются в основной контейнер приложений, если ни один из них не определен для каждого типа.
Ниже приведены значения по умолчанию для каждого типа пробы.
Свойство | Запуск | Готовность | Живость |
---|---|---|---|
Протокол | TCP | TCP | TCP |
Порт | Целевой порт входящего трафика | Целевой порт входящего трафика | Целевой порт входящего трафика |
Время ожидания | 3 секунды | 5 секунд | Н/Д |
Период | 1 с | 5 секунд | Н/Д |
Начальная задержка | 1 с | 3 секунды | Н/Д |
Порог успешности | 1 | 1 | Недоступно |
Порог сбоя | 240 | 48 | Н/Д |
Если ваше приложение-контейнер занимает длительное время начала (обычно в Java), возможно, вам потребуется настроить свойство начальной задержки начальной задержки и активности пробы. Вы можете просмотреть журналы , чтобы увидеть типичное время запуска приложения-контейнера.
- Войдите на портал Azure.
- В строке поиска введите имя приложения контейнера.
- В разделе "Ресурсы" выберите имя приложения контейнера.
- На панели навигации разверните приложение и выберите контейнеры.
- На странице "Контейнеры" выберите пробы работоспособности.
- Выберите "Изменить и развернуть ", чтобы создать новую редакцию.
- На странице "Создание и развертывание новой редакции" установите флажок рядом с образом контейнера и нажмите кнопку "Изменить".
- В окне "Изменение контейнера" выберите пробы работоспособности.
- Разверните пробы Liveness.
- Если выбраны пробы активности, увеличьте значение начальной задержки секунд.
- Разверните пробы готовности.
- Если выбрано включение проб готовности, увеличьте значение начальной задержки секунд.
- Выберите Сохранить.
- На странице "Создание и развертывание новой редакции" нажмите кнопку "Создать".
Затем вы можете просмотреть журналы , чтобы узнать, успешно ли запускается приложение контейнера.
Дополнительные сведения см. в разделе "Использование проб работоспособности".
Проверка маршрутизации трафика в правильную редакцию
Если приложение-контейнер не ведет себя должным образом, проблема может быть в том, что запросы направляются в устаревшую редакцию.
- Войдите на портал Azure.
- В строке поиска введите имя приложения контейнера.
- В разделе "Ресурсы" выберите имя приложения контейнера.
- На панели навигации разверните приложение и выберите "Редакции".
Если задан Single
режим редакции, весь трафик направляется в последнюю версию по умолчанию. Вкладка "Активные редакции" должна содержать только одну редакцию с значением 100%
трафика.
Если для режима редакции задано Multiple
значение , убедитесь, что трафик маршрутизации не выполняется в устаревшие редакции.
Дополнительные сведения о настройке разделения трафика см. в разделе "Разделение трафика" в приложениях контейнеров Azure.
Проверка установки последней версии расширения "Приложения контейнеров Azure"
Если при выполнении az containerapp
команд в Azure CLI или командлетах из модуля Azure PowerShell возникают ошибки о отсутствующих параметрах Az.App
, убедитесь, что установлена последняя версия расширения "Приложения контейнеров Azure".
az extension add --name containerapp --upgrade
Проверка расширения "Приложения контейнеров Azure" позволяет просматривать функции предварительной версии
Если предварительные версии функций недоступны при выполнении az containerapp
команд в Azure CLI, включите предварительные версии функций в расширении "Приложения контейнеров Azure".
az extension add --name containerapp --upgrade --allow-preview true
Вручную удалите виртуальную сеть, используемую средой приложений контейнеров Azure
Если вы получаете сообщение provisioningState: ScheduledForDelete, но ваша среда не удается удалить, обязательно удалите связанную виртуальную сеть вручную.
Определите виртуальную сеть, используемую средой, которую вы пытаетесь удалить. Замените <заполнители вашими значениями> .
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
В выходных данных найдите
infrastructureSubnetId
и запишите идентификатор виртуальной сети. Пример идентификатораvNet::myVNet.id
виртуальной сети.Удалите виртуальную сеть вручную:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Удалите среду приложений контейнеров Azure:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes