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


Поддержка контейнеров Linux в Функции Azure

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

Функции также поддерживают развертывания приложений-функций в контейнере. В контейнерном развертывании создается собственный экземпляр приложения-функции в локальном контейнере Docker на основе поддерживаемого образа. Затем вы можете развернуть это контейнерное приложение-функцию в среде размещения в Azure. Создание собственного контейнера приложения-функции позволяет настраивать или управлять средой непосредственной среды выполнения кода функции.

Внимание

При создании собственных контейнеров необходимо сохранить базовый образ контейнера обновленным до последнего поддерживаемого базового образа. Поддерживаемые базовые образы для Функции Azure относятся к языку и находятся в репозитории базовых образов Функции Azure.

Команда функций привержена публикации ежемесячных обновлений для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера.

Параметры размещения контейнеров

Существует несколько вариантов размещения контейнерных приложений-функций в Azure:

Вариант размещения Льготы
Приложения контейнеров Azure Функции Azure обеспечивает интегрированную поддержку для разработки, развертывания и управления контейнерными приложениями-функциями Приложения контейнеров Azure. Это позволяет управлять приложениями, используя те же инструменты и страницы функций в портал Azure. Используйте службы "Приложения контейнеров Azure" для размещения контейнеров приложений-функций, если необходимо запустить функции на основе событий в Azure в той же среде, что и другие микрослужбы, API, веб-сайты, рабочие процессы или любые размещенные в контейнере программы. Размещение контейнерных приложений позволяет выполнять функции в управляемой среде На основе Kubernetes с встроенной поддержкой мониторинга с открытым кодом, mTLS, Dapr и KEDA. Поддерживает масштабирование до нуля и предоставляет беспределируемую модель размещения с оплатой за то, что вы используете. Вы также можете запросить выделенное оборудование, даже GPU, используя профили рабочей нагрузки. Рекомендуемый вариант размещения для запуска контейнерных приложений-функций в Azure.
Кластеры Kubernetes с поддержкой Azure Arc (предварительная версия) Приложения-функции можно размещать в кластерах Kubernetes с поддержкой Azure Arc как развертывание только для кода или в пользовательском контейнере Linux. Azure Arc позволяет подключать кластеры Kubernetes, чтобы управлять и настраивать их в Azure. Размещение Функции Azure контейнеров в кластерах Kubernetes с поддержкой Azure Arc в настоящее время находится в предварительной версии.
Функции Azure Вы можете разместить контейнерные приложения-функции в Функции Azure, выполнив контейнер в плане Elastic Premium или выделенном плане. Размещение плана "Премиум" обеспечивает преимущества динамического масштабирования. Вы можете использовать выделенный план размещения, чтобы воспользоваться преимуществами существующих неиспользуемых ресурсов Служба приложений плана.
Kubernetes Так как среда выполнения Функции Azure обеспечивает гибкость размещения, где и как хотите, можно размещать контейнеры приложений-функций и управлять ими непосредственно в кластерах Kubernetes. KEDA (управляемое событиями автоматическое масштабирование на основе Kubernetes) легко интегрируется со средой выполнения Функций Azure и инструментами для обеспечения масштабирования на основе событий в Kubernetes. Имейте в виду, что запуск контейнерных приложений-функций в Kubernetes с помощью KEDA или прямого развертывания — это работа с открытым исходным кодом, которую можно использовать бесплатно, с лучшей поддержкой, предоставляемой участниками и сообществом. Вы несете ответственность за обслуживание собственных контейнеров приложений-функций в кластере, даже при развертывании в Служба Azure Kubernetes (AKS).

Сравнение поддержки функций

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

Функция/поведение Приложения-контейнеры (интегрированные) Приложения-контейнеры (прямой) План категории "Премиум" План ценовой категории "Выделенный" Kubernetes
Поддержка продуктов Да No Да Да No
Интеграция портала функций Да Без Да Да Без
Масштабирование на основе событий Да5 Да (правила масштабирования) Да No No
Максимальный масштаб (экземпляры) 10001  10001  1002  10-303  Зависит от кластера
Масштабируемые до нуля экземпляры Да Да No No KEDA
Ограничение времени выполнения Несоотвязанное6 Несоотвязанное6 Несоотвязанное7 Несоотвязанное8 Никакой
Развертывание основных средств func azurecontainerapps No No No func kubernetes 
Редакции Без Да Без Без Без
Слоты развертывания  Без Без Да Да Без
Журналы потоковой передачи  Да Да  Да Да Без
Доступ к консоли  В настоящее времянедоступно 4  Да Да (с помощью Kudu) Да (с помощью Kudu) Да (в модулях pod с помощью kubctl)
Устранение проблем с холодным запуском Минимальные реплики Правила масштабирования  Всегда готовые и предварительно теплые экземпляры  Н/Д n/a
Проверка подлинности службы приложений  В настоящее времянедоступно 4  Да Да Да Без
Личные доменные имена  В настоящее времянедоступно 4  Да Да Да Без
Сертификаты закрытого ключа  В настоящее времянедоступно 4  Да Да Да Без
Виртуальные сети Да Да Да Да Да
Зоны доступности Да Да Да Да Да
Диагностика В настоящее времянедоступно 4  Да Да  Да  Без
Выделенное оборудование Да (профили рабочей нагрузки) Да (профили рабочей нагрузки) Без Да Да
Выделенные графические процессоры Да (профили рабочей нагрузки) Да (профили рабочей нагрузки) Без No Да
Настраиваемое количество памяти и ЦП Да Да No Без Да
Параметр "Бесплатный грант" Да Да No No No
Сведения о тарифах Выставление счетов за приложения-контейнеры Выставление счетов за приложения-контейнеры Выставление счетов за план "Премиум" Выставление счетов за выделенный план Цены на AKS
Требования к имени службы 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Не удается начать или завершить дефис. Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Не удается начать или завершить дефис. Менее 253 символов: ограничено буквенно-цифровыми символами и дефисами. Должен начинаться и заканчиваться буквенно-цифровым символом.
  1. В контейнерных приложениях по умолчанию используется 10 экземпляров, но можно задать максимальное количество реплик, которое имеет общее максимальное значение 1000. Этот параметр учитывается до тех пор, пока доступно достаточно квоты ядер. При создании приложения-функции из портал Azure можно ограничиться 300 экземплярами.
  2. В некоторых регионах приложения Linux в плане "Премиум" могут масштабироваться до 100 экземпляров. Дополнительную информацию см. в статье "План Премиум".
  3. Конкретные ограничения для различных вариантов плана Служба приложений см. в Служба приложений ограничениях плана.
  4. Четность функций — это цель интегрированного размещения в приложениях контейнеров Azure.
  5. Требуется KEDA; поддерживается большинством триггеров. Сведения о том, какие триггеры поддерживают масштабирование на основе событий, см. в разделе "Рекомендации по размещению контейнерных приложений".
  6. Если минимальное количество реплик равно нулю, время ожидания по умолчанию зависит от конкретных триггеров, используемых в приложении.
  7. Не применяется максимальное время ожидания выполнения. Однако льготный период, предоставленный выполнению функции, составляет 60 минут во время масштабирования, а льготный период 10 минут предоставляется во время обновлений платформы.
  8. Требует, чтобы для плана Служба приложений было задано значение AlwaysOn. Льготный период 10 минут предоставляется во время обновлений платформы.

Начало работы

Используйте следующие ссылки, чтобы приступить к работе с Функции Azure в контейнерах Linux:

Я хочу... См. статью:
Создание первых контейнерных функций Создание приложения-функции в локальном контейнере Linux
Создание и развертывание функций в приложениях контейнеров Azure Создание первых контейнерных функций в приложениях контейнеров Azure
Создание и развертывание контейнерных функций для Функции Azure Создание первого контейнеризованного Функции Azure
Создание и развертывание функций в Kubernetes с поддержкой Azure Arc Создание первого контейнерного Функции Azure в Azure Arc (предварительная версия)