Рейтинг:0

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

флаг cn

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

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

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

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

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

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

Также странно, даже с изображением быстрого запуска я не вижу фактического экземпляра контейнера. Предположительно, это связано с тем, что он работает непосредственно в плане службы приложений, хотя ничего из этого не совсем ясно. Из веб-приложения я могу перейти к плану службы приложений (план контейнеров Windows), где в разделе «Приложения» отображается одно приложение с типом «приложение, контейнер, окна», но я нигде не могу найти доступ для просмотра журналов консоли или запустить оболочку, как я могу, с ресурсами типа Container Image. На некоторых скриншотах, с которыми я сталкивался, я вижу ссылку «Настройки контейнера» в разделе «Настройки», которой у меня нет, но, возможно, по какой-то причине это только для контейнеров Linux.

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

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

Рейтинг:1
флаг gb

Диагностика

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

Куду

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

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

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

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

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

флаг cn
Спасибо за ответ. Инициализация контейнера не вариант. Я вижу «Доступность и производительность», «Конфигурация и управление», «SSL и домены», «Оценка рисков» и «Инструменты диагностики». В окне поиска нам ничего не приходит по слову «контейнер». Я не могу использовать консоль удаленного выполнения Kudu, так как контейнер не запускается: «Контейнер в данный момент не запущен. Повторите попытку через несколько минут. Процесс [9888] завершен! Нажмите ENTER, чтобы запустить новый процесс cmd». Должен ли я иметь возможность просматривать сообщения stdout, созданные при запуске dockerfile?
флаг cn
Я столкнулся с несколькими местами в потоке журнала, где он предоставляет немного больше информации: «Невозможно запустить контейнер. Сообщение об ошибке: Невозможно создать файл, когда этот файл уже существует», но он появляется после последовательности создания, запуска , остановка и т. д., поэтому я не уверен, где это на самом деле происходит.
флаг kh
Примечание. При развертывании в среде ASE URI Kudu будет выглядеть следующим образом: https://{YourAppName}.scm.{YourASEName}.appserviceenvironment.net/.

Ответить или комментировать

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