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


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

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

Сценарии

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

Сценарий Описание Действия
Все сценарии Просмотр журналов

Использование диагностики и решения проблем
Ошибка при развертывании новой редакции При попытке развернуть новую редакцию появится сообщение об ошибке. Убедитесь, что приложения-контейнеры могут извлечь ваш образ контейнера
Подготовка занимает слишком много времени После развертывания новой ревизии новая ревизия имеет состояние подготовки как Provisioning и состояние выполнения как Processing на неопределенный срок. Проверка правильной настройки проб работоспособности
Ревизия ухудшена Для подготовки новой редакции требуется более 10 минут. Наконец, он имеет статусПодготовлено, но рабочий статусПонижено. Подсказка «Статус выполнения» отображает Details: Deployment Progress Deadline Exceeded. 0/1 replicas ready. Убедитесь, что датчики работоспособности настроены правильно
Сбой запросов к конечным точкам Конечная точка приложения контейнера не отвечает на запросы. Проверка конфигурации входа
Запросы возвращают код состояния 403 Конечная точка приложения-контейнера отвечает на запросы с ошибкой HTTP 403 (доступ запрещен). Проверка правильной конфигурации сети
Ответы не соответствуют ожиданиям Конечная точка приложения-контейнера отвечает на запросы, но ответы не соответствуют ожиданиям. Убедитесь, что трафик направляется на правильную ревизию

Убедитесь, что вы используете уникальные теги при развертывании образов в реестре контейнеров
Ошибка: отсутствуют параметры При выполнении команд в Azure CLI или командлетов из модуля Az.App в Azure PowerShell, вы получаете сообщения об ошибках, связанных с отсутствующими параметрами. Проверка установки последней версии расширения "Приложения контейнеров Azure"
Предварительные версии функций недоступны Предварительные версии функций недоступны при выполнении az containerapp команд в Azure CLI. Убедитесь, что расширение для приложений контейнеров Azure поддерживает функции предварительного просмотра
Ошибка синхронизации секретов Key Vault Не удается получить или синхронизировать секреты из Azure Key Vault. Устранение неполадок с ссылками Key Vault
Удаление приложения или среды не работает Эта проблема часто сопровождается сообщением вроде provisioningState: ScheduledForDelete. Удаление связанной виртуальной сети вручную

Просмотреть журналы

Одним из первых действий по поиску проблем с приложением-контейнером является просмотр сообщений журнала. Выходные данные журналов консоли и системы можно просмотреть. В журнале консоли контейнерного приложения записываются журналы потоков stdout и stderr приложения. Контейнерные приложения создают системные журналы для событий уровня обслуживания.

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

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

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

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

Проверка доступности образа контейнера

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

  • Убедитесь, что брандмауэр среды контейнера не блокирует доступ к реестру контейнеров. Дополнительные сведения см. в разделе "Управление исходящим трафиком с помощью определяемых пользователем маршрутов".
  • Если существующая виртуальная сеть использует пользовательский DNS-сервер, а не DNS-сервер, предоставленный Azure, убедитесь, что DNS-сервер настроен правильно, и поиск DNS реестра контейнеров не завершается ошибкой. Дополнительные сведения см. в статье DNS.
  • Если вы использовали функцию облачной сборки для контейнерных приложений, чтобы создать образ контейнера (см. Путь от кода до облака для приложений Azure Container Apps), ваш образ не является общедоступным, поэтому этот раздел не применяется.

Для контейнера 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-адреса, который запрещен.

Дополнительные сведения см. в разделе "Ingress" в Azure Container Apps.

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

Рекурсивные сопоставители 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. Разверните проверки жизнеспособности, готовности и запуска.
  7. Для каждой пробы убедитесь, что значение порта верное.

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

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

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

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

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

Свойство Запуск Готовность Живость
Протокол TCP TCP TCP
Порт Целевой порт входящего трафика Целевой порт для входящего трафика Целевой порт Ingress
Время ожидания 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 или командлетов из модуля Az.App Azure PowerShell возникают ошибки об отсутствии параметров, убедитесь, что у вас установлена последняя версия расширения Azure Container Apps.

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
    

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