Устранение неполадок контейнера Windows в службе приложений Azure

Устранение неполадок контейнера Windows в службе приложений Azure

Я уже больше недели пытаюсь запустить контейнер Windows с помощью Azure App Service. Сначала я предпочел просто использовать стандартный экземпляр контейнера, но, похоже, у вас есть только возможность публичной или частной сети, а не пользовательской (в отличие от контейнеров Linux). Похоже, если вы запускаете свой контейнер Windows в службе приложений, вы получаете те же сетевые возможности, что и на других веб-сайтах. Поддержка Azure для контейнеров Windows в App Servicesпочти год, но относительно немного ресурсов посвящено этому вопросу, за исключением самых простых сценариев.

Моя цель использования контейнера — запустить сторонний фоновый сервис Windows по требованию без накладных расходов виртуальной машины. Поскольку он использует службу приложений, я решил добавить конечную точку asp.net core rest для некоторой информации о состоянии. Мой контейнер основан на mcr.microsoft.com/windows/servercore:ltsc2019. Я загружаю и устанавливаю .net и asp.net core (базовый образ имеет только .net framework), устанавливаю свои службы, собираю и запускаю веб-сайт, затем моей точкой входа является скрипт Powershell, который обновляет некоторые значения конфигурации и запускает конечную точку asp.net core, которая управляет службами.

Если я использую портал, я могу выбрать варианты контейнера или кода, Windows или Linux и начать работу сбазовое изображение быстрого старта, но мой собственный образ в Azure Container Registry не запускается должным образом. Я использую один изподдерживаемые базовые образы, и он отлично работает на моей локальной машине. В Azure он создает все, но никогда не запускается. Небольшое количество записей в журнале указывает на то, что он запускается, монтирует тома файловых ресурсов, а затем просто умирает:

  • Создать контейнер для изображения
  • Попытка запустить контейнер
  • Запуск контейнера прошел успешно
  • Контейнер запущен
  • Вызовите утилиту настройки контейнера
  • Настройка утилиты контейнера завершена
  • Контейнер запущен
  • Попытка остановить контейнер
  • Попытка завершить контейнер
  • Попытка удалить контейнер
  • Контейнер успешно удален

введите описание изображения здесь

введите описание изображения здесь

Также странно, даже с изображением быстрого старта я не вижу фактического экземпляра контейнера. Предположительно, это потому, что он работает в App Service Plan напрямую, хотя ничего из этого не очень понятно. Из веб-приложения я могу перейти в App Service Plan (план контейнеров Windows), где в разделе Apps отображается одно приложение с типом "app,container,windows", но нигде я не могу найти доступ к просмотру журналов консоли или запуску оболочки, как я могу сделать с ресурсами типа Container Image. На некоторых снимках экрана, которые я видел, я вижу ссылку "Container Settings" под "Settings", которой у меня нет, но, возможно, она по какой-то причине предназначена только для контейнеров Linux.

введите описание изображения здесь

Итак, как мне устранять неполадки контейнера при запуске в службе приложения? Я что-то где-то упускаю?

решение1

Диагностика

Ценную информацию по отладке можно найти, нажав на ссылку Diagnose & Solve Problems -> Container Initializationв Azure Web App for Containers.

Куду

App Service поставляется с консолью отладки, которую вы можете использовать для отладки, исследования, загрузки файлов, а также конечных точек JSON для получения информации о вашей среде. Эта консоль называется Kudu Console или SCM Dashboard для вашего приложения.

Вы можете получить доступ к этой панели, перейдя по ссылке https://[Название вашего приложения].scm.azurewebsites.net/.

Вот некоторые из вещей, которые предоставляет Kudu:

  • Параметры среды для консоли отладки диагностического дампа потока журнала приложения, в которой можно запускать командлеты PowerShell и основные команды DOS.

https://docs.microsoft.com/en-us/azure/app-service/troubleshoot-performance-degradation

Связанный контент