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


Группы контейнеров в Azure Container Instances

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

Что такое группа контейнеров?

Группа контейнеров — это набор контейнеров, которые можно планировать на одном хост-компьютере. Контейнеры в группе контейнеров совместно используют жизненный цикл, ресурсы, локальную сеть и тома хранилища. Он концептуально аналогичен pod в Kubernetes.

На схеме ниже показан пример группы контейнеров, включающей несколько контейнеров:

Схема групп контейнеров

Группа контейнеров в этом примере:

  • Планируется на одном хост-компьютере.
  • Назначается метка DNS-имени.
  • Обеспечивает один общедоступный IP-адрес с одним открытым портом.
  • Состоит из двух контейнеров. Один контейнер прослушивает порт 80, а другой — порт 5000.
  • Включает два файловых хранилища Azure в качестве подключенных томов, при этом каждый контейнер локально подключает одно из хранилищ.

Примечание.

Многоконтейнерные группы в настоящее время поддерживают только контейнеры Linux. Для контейнеров Windows служба Azure Container Instances поддерживает только развертывание одного экземпляра контейнера. Хотя мы работаем над переносом всех функций в контейнеры Windows, вы можете найти текущие различия платформы в обзоре службы.

Развертывание

Ниже приведены два распространенных способа развертывания группы с несколькими контейнерами: использование шаблона Resource Manager или YAML-файла. При развертывании экземпляров контейнеров рекомендуется использовать шаблон Resource Manager для развертывания других ресурсов службы Azure (например, общий ресурс Azure Files). Если вы развертываете только экземпляры контейнеров, рекомендуется использовать YAML-файл, поскольку его формат более краткий. Дополнительные сведения о свойствах, которые можно задать, см. в справочнике по шаблону Resource Manager или справочной документации по YAML .

Чтобы сохранить конфигурацию группы контейнеров, можно экспортировать конфигурацию в YAML-файл с помощью команды Azure CLI az container export. Экспорт позволяет хранить конфигурации групп контейнеров в элементе управления версиями для "конфигурации в виде кода". Кроме того, при разработке новой конфигурации в YAML используйте экспортируемый файл в качестве отправной точки.

Распределение ресурсов

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

Использование ресурсов экземплярами контейнеров

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

  • Если не указать ограничение ресурсов, максимальное использование ресурса экземпляра контейнера совпадает с его запросом на ресурс.

  • Если указать ограничение для экземпляра контейнера, максимальное использование экземпляра может быть больше, чем запрос, до заданного предела. Соответственно, использование ресурсов другими экземплярами контейнеров в группе может снизиться. Максимальное ограничение ресурсов, заданное для экземпляра контейнера, — это общее количество ресурсов, выделенных группе.

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

В этом сценарии можно задать ограничение ресурсов до 2 ЦП для экземпляра контейнера. Эта конфигурация позволяет экземпляру контейнера использовать до 2 ЦП при наличии.

Примечание.

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

Минимальное и максимальное выделение

  • Выделите не менее 1 ЦП и 1 ГБ памяти группе контейнеров. Отдельным экземплярам контейнеров в группе можно выделить меньше одного центрального процессора и 1 ГБ памяти.

  • Для максимальных ресурсов в группе контейнеров смотрите доступность ресурсов для экземпляров контейнеров Azure в регионе размещения.

Сети

Группы контейнеров могут совместно использовать внешний IP-адрес, один или несколько портов на этом IP-адресе и метку DNS с полным доменным именем (FQDN). Чтобы внешние клиенты могли получить доступ к контейнеру в группе, необходимо предоставить порт по IP-адресу и из контейнера. IP-адрес группы контейнеров и полное доменное имя освобождаются при удалении группы контейнеров.

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

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

Хранение

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

Вы можете сопоставить эти тома с конкретными путями в пределах отдельных контейнеров в группе.

Распространенные сценарии

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

Пример использования может включать следующее:

  • Контейнер, обслуживающий веб-приложение, и контейнер, загружающий обновлённое содержимое из системы управления версиями.
  • Контейнер приложения и контейнер логирования. Контейнер для ведения логов собирает журналы и метрики, выводимые основным приложением, и записывает их в долгосрочное хранилище.
  • Контейнер приложения и контейнер мониторинга. Контейнер мониторинга периодически выполняет запрос к приложению, чтобы убедиться, что оно правильно работает и отвечает, и выдает предупреждение, если это не так.
  • Контейнер фронтенда и контейнер бэкенда. Фронтенд может обслуживать веб-приложение, а бэкенд — выполнять службу для извлечения данных.

Дальнейшие действия

Узнайте, как развертывать группу контейнеров с несколькими контейнерами с использованием шаблона Azure Resource Manager: