Группы контейнеров в службе "Экземпляры контейнеров Azure"

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

Что представляет собой группа контейнеров?

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

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

Container groups diagram

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

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

Примечание.

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

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

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

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

Выделение ресурсов

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

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

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

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

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

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

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

Примечание.

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

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

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

  • Чтобы узнать о максимальном объеме ресурсов для группы контейнеров, ознакомьтесь с доступностью ресурсов для службы "Экземпляры контейнеров Azure" в регионе развертывания.

Сеть

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

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

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

Хранилище

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

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

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

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

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

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

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

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