Поделиться через


Устранение неполадок с приложением-контейнером

Просмотр журналов и параметров конфигурации контейнерных приложений 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. Контейнерные приложения создают системные журналы для событий уровня обслуживания.

  1. Войдите на портал Azure.
  2. В строке поиска введите имя приложения контейнера.
  3. В разделе "Ресурсы" выберите имя приложения контейнера.
  4. На панели навигации разверните узел "Мониторинг " и выберите поток журналов (а не журналы).
  5. Если страница потока журнала говорит, что эта редакция масштабируется до нуля. Нажмите кнопку "Перейти к управлению редакцией". Разверните новую редакцию, масштабируемую до минимального количества реплик 1. Дополнительные сведения см. в статье Масштабирование в приложениях контейнеров Azure.
  6. На странице потока журнала задайте для журналов значение "Консоль" или "Система".

Использование средства диагностики и решения проблем

Вы можете использовать средство диагностики и решения проблем , чтобы найти проблемы со работоспособностью, конфигурацией и производительностью приложения контейнера.

  1. Войдите на портал Azure.
  2. В строке поиска введите имя приложения контейнера.
  3. В разделе "Ресурсы" выберите имя приложения контейнера.
  4. На панели навигации выберите " Диагностика и решение проблем".
  5. На странице "Диагностика и устранение проблем" выберите одну из категорий "Устранение неполадок".
  6. Выберите одну из категорий на панели навигации, чтобы найти способы устранения проблем с приложением-контейнером.

Проверка специальных возможностей образа контейнера

Если при попытке развернуть новую редакцию появится сообщение об ошибке, убедитесь, что приложения-контейнеры могут извлечь образ контейнера.

  • Убедитесь, что брандмауэр среды контейнера не блокирует доступ к реестру контейнеров. Дополнительные сведения см. в разделе "Управление исходящим трафиком с помощью определяемых пользователем маршрутов".
  • Если существующая виртуальная сеть использует пользовательский 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".

Проверка конфигурации входящего трафика

Параметры входящего трафика приложения контейнера применяются с помощью набора правил, которые управляют маршрутизацией внешнего и внутреннего трафика в приложение контейнера. Если вы не можете подключиться к приложению-контейнеру, просмотрите эти параметры входящего трафика, чтобы убедиться, что параметры входящего трафика не блокируют запросы.

  1. Войдите на портал Azure.
  2. В строке поиска введите имя приложения контейнера.
  3. В разделе "Ресурсы" выберите имя приложения контейнера.
  4. На панели навигации разверните узел "Параметры" и выберите "Входящий трафик".
Проблема Действие
Включена ли входящий трафик? Убедитесь, что установлен флажок "Включен ".
Вы хотите разрешить внешний входящий трафик? Убедитесь, что трафик входящего трафика установлен как принимающее трафик из любого места. Если приложение-контейнер не прослушивает 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 для разрешения запросов.

  1. Если виртуальная сеть использует пользовательский DNS-сервер вместо DNS-сервера, предоставленного Azure по умолчанию, настройте DNS-сервер для перенаправления неразрешенных ЗАПРОСОВ DNS в 168.63.129.16.
  2. При настройке группы безопасности сети или брандмауэра не блокируйте 168.63.129.16 адрес.

Дополнительные сведения см. в разделе "Сеть" в среде "Приложения контейнеров Azure".

Проверка конфигурации проб работоспособности

Для всех типов проб работоспособности (активности, готовности и запуска), которые используют TCP в качестве транспорта, убедитесь, что их номера портов соответствуют целевому порту входящего трафика, настроенного для приложения контейнера.

  1. Войдите на портал Azure.
  2. В строке поиска введите имя приложения контейнера.
  3. В разделе "Ресурсы" выберите имя приложения контейнера.
  4. На панели навигации разверните приложение и выберите контейнеры.
  5. На странице "Контейнеры" выберите пробы работоспособности.
  6. Разверните пробы Liveness, пробы готовности и пробы запуска.
  7. Для каждой пробы убедитесь, что значение порта правильно.

Обновите значения портов следующим образом:

  1. Выберите "Изменить и развернуть ", чтобы создать новую редакцию.
  2. На странице "Создание и развертывание новой редакции" установите флажок рядом с образом контейнера и нажмите кнопку "Изменить".
  3. В окне "Изменение контейнера" выберите пробы работоспособности.
  4. Разверните пробы Liveness, пробы готовности и пробы запуска.
  5. Для каждой пробы измените значение порта .
  6. Выберите кнопку Сохранить.
  7. На странице "Создание и развертывание новой редакции" нажмите кнопку "Создать".

Настройка проб работоспособности для расширенного времени запуска

Если входящий трафик включен, следующие пробы по умолчанию автоматически добавляются в основной контейнер приложений, если ни один из них не определен для каждого типа.

Ниже приведены значения по умолчанию для каждого типа пробы.

Свойство Запуск Готовность Живость
Протокол TCP TCP TCP
Порт Целевой порт входящего трафика Целевой порт входящего трафика Целевой порт входящего трафика
Время ожидания 3 секунды 5 секунд Н/Д
Период 1 с 5 секунд Н/Д
Начальная задержка 1 с 3 секунды Н/Д
Порог успешности 1 1 Недоступно
Порог сбоя 240 48 Н/Д

Если ваше приложение-контейнер занимает длительное время начала (обычно в Java), возможно, вам потребуется настроить свойство начальной задержки начальной задержки и активности пробы. Вы можете просмотреть журналы , чтобы увидеть типичное время запуска приложения-контейнера.

  1. Войдите на портал Azure.
  2. В строке поиска введите имя приложения контейнера.
  3. В разделе "Ресурсы" выберите имя приложения контейнера.
  4. На панели навигации разверните приложение и выберите контейнеры.
  5. На странице "Контейнеры" выберите пробы работоспособности.
  6. Выберите "Изменить и развернуть ", чтобы создать новую редакцию.
  7. На странице "Создание и развертывание новой редакции" установите флажок рядом с образом контейнера и нажмите кнопку "Изменить".
  8. В окне "Изменение контейнера" выберите пробы работоспособности.
  9. Разверните пробы Liveness.
  10. Если выбраны пробы активности, увеличьте значение начальной задержки секунд.
  11. Разверните пробы готовности.
  12. Если выбрано включение проб готовности, увеличьте значение начальной задержки секунд.
  13. Выберите Сохранить.
  14. На странице "Создание и развертывание новой редакции" нажмите кнопку "Создать".

Затем вы можете просмотреть журналы , чтобы узнать, успешно ли запускается приложение контейнера.

Дополнительные сведения см. в разделе "Использование проб работоспособности".

Проверка маршрутизации трафика в правильную редакцию

Если приложение-контейнер не ведет себя должным образом, проблема может быть в том, что запросы направляются в устаревшую редакцию.

  1. Войдите на портал Azure.
  2. В строке поиска введите имя приложения контейнера.
  3. В разделе "Ресурсы" выберите имя приложения контейнера.
  4. На панели навигации разверните приложение и выберите "Редакции".

Если задан 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, но ваша среда не удается удалить, обязательно удалите связанную виртуальную сеть вручную.

  1. Определите виртуальную сеть, используемую средой, которую вы пытаетесь удалить. Замените <заполнители вашими значениями> .

    az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
    

    В выходных данных найдите infrastructureSubnetId и запишите идентификатор виртуальной сети. Пример идентификатора vNet::myVNet.idвиртуальной сети.

  2. Удалите виртуальную сеть вручную:

    az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
    
  3. Удалите среду приложений контейнеров Azure:

    az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes
    

Следующие шаги