Grupos de contentores no Azure Container Instances

O recurso de nível superior nas Instâncias de Contêiner do Azure é o grupo de contêineres. Este artigo descreve o que são grupos de contêineres e os tipos de cenários que eles habilitam.

O que é um grupo de contentores?

Um grupo de contêineres é uma coleção de contêineres que são agendados na mesma máquina host. Os contêineres em um grupo de contêineres compartilham um ciclo de vida, recursos, rede local e volumes de armazenamento. É semelhante em conceito a um pod no Kubernetes.

O diagrama a seguir mostra um exemplo de um grupo de contêineres que inclui vários contêineres:

Diagrama de grupos de contêineres

Este exemplo de grupo de contêineres:

  • É agendado em uma única máquina host.
  • É atribuído um rótulo de nome DNS.
  • Expõe um único endereço IP público, com uma porta exposta.
  • Consiste em dois recipientes. Um contentor ouve na porta 80, enquanto o outro ouve na porta 5000.
  • Inclui dois compartilhamentos de arquivos do Azure como montagens de volume e cada contêiner monta um dos compartilhamentos localmente.

Nota

Atualmente, os grupos de vários contêineres suportam apenas contêineres Linux. Para contêineres do Windows, as Instâncias de Contêiner do Azure só dão suporte à implantação de uma única instância de contêiner. Enquanto estamos trabalhando para trazer todos os recursos para contêineres do Windows, você pode encontrar diferenças de plataforma atuais na visão geral do serviço.

Implementação

Aqui estão duas maneiras comuns de implantar um grupo de vários contêineres: usar um modelo do Gerenciador de Recursos ou um arquivo YAML. Um modelo do Gerenciador de Recursos é recomendado quando você precisa implantar outros recursos de serviço do Azure (por exemplo, um compartilhamento de Arquivos do Azure) ao implantar as instâncias de contêiner. Devido à natureza mais concisa do formato YAML, um arquivo YAML é recomendado quando sua implantação inclui apenas instâncias de contêiner. Para obter detalhes sobre as propriedades que você pode definir, consulte a referência de modelo do Resource Manager ou a documentação de referência do YAML.

Para preservar a configuração de um grupo de contêineres, você pode exportar a configuração para um arquivo YAML usando o comando az container export da CLI do Azure. Exportar permite que você armazene suas configurações de grupo de contêineres no controle de versão para "configuração como código". Ou, use o arquivo exportado como um ponto de partida ao desenvolver uma nova configuração no YAML.

Alocação de recursos

As Instâncias de Contêiner do Azure alocam recursos como CPUs, memória e, opcionalmente , GPUs (visualização) a um grupo de vários contêineres adicionando as solicitações de recursos das instâncias no grupo. Tomando os recursos da CPU como exemplo, se você criar um grupo de contêineres com duas instâncias de contêiner, cada uma solicitando uma CPU, o grupo de contêineres receberá 2 CPUs.

Uso de recursos por instâncias de contêiner

Cada instância de contêiner em um grupo recebe os recursos especificados em sua solicitação de recurso. No entanto, o máximo de recursos usados por uma instância de contêiner em um grupo pode ser diferente se você configurar sua propriedade opcional de limite de recursos. O limite de recursos de uma instância de contêiner deve ser maior ou igual à propriedade de solicitação de recurso obrigatória.

  • Se você não especificar um limite de recursos, o uso máximo de recursos da instância de contêiner será o mesmo que sua solicitação de recurso.

  • Se você especificar um limite para uma instância de contêiner, o uso máximo da instância poderá ser maior do que a solicitação, até o limite definido. Da mesma forma, o uso de recursos por outras instâncias de contêiner no grupo pode diminuir. O limite máximo de recursos que você pode definir para uma instância de contêiner é o total de recursos alocados para o grupo.

Por exemplo, em um grupo com duas instâncias de contêiner cada uma solicitando uma CPU, um de seus contêineres pode executar uma carga de trabalho que requer mais CPUs para serem executadas do que o outro.

Nesse cenário, você pode definir um limite de recursos de até 2 CPUs para a instância de contêiner. Essa configuração permite que a instância do contêiner use até 2 CPUs, se disponíveis.

Nota

Uma pequena quantidade de recursos de um grupo de contêineres é usada pela infraestrutura subjacente do serviço. Seus contêineres poderão acessar a maioria, mas não todos, dos recursos alocados ao grupo. Por esse motivo, planeje um pequeno buffer de recursos ao solicitar recursos para contêineres no grupo.

Atribuição mínima e máxima

  • Aloque um mínimo de 1 CPU e 1 GB de memória para um grupo de contêineres. Instâncias de contêiner individuais dentro de um grupo podem ser provisionadas com menos de uma CPU e 1 GB de memória.

  • Para obter o máximo de recursos em um grupo de contêineres, consulte a disponibilidade de recursos para Instâncias de Contêiner do Azure na região de implantação.

Rede

Os grupos de contêineres podem compartilhar um endereço IP externo, uma ou mais portas nesse endereço IP e um rótulo DNS com um FQDN (nome de domínio totalmente qualificado). Para permitir que clientes externos alcancem um contêiner dentro do grupo, você deve expor a porta no endereço IP e do contêiner. O endereço IP e o FQDN de um grupo de contêineres são liberados quando o grupo de contêineres é excluído.

Dentro de um grupo de contêineres, as instâncias de contêiner podem chegar umas às outras via localhost em qualquer porta, mesmo que essas portas não sejam expostas externamente no endereço IP do grupo ou do contêiner.

Opcionalmente, implante grupos de contêineres em uma rede virtual do Azure para permitir que os contêineres se comuniquem com segurança com outros recursos na rede virtual.

Armazenamento

Você pode especificar volumes externos para montagem em um grupo de contêineres. Os volumes suportados incluem:

Você pode mapear esses volumes em caminhos específicos dentro dos contêineres individuais em um grupo.

Cenários comuns

Os grupos de vários contêineres são úteis nos casos em que você deseja dividir uma única tarefa funcional em algumas imagens de contêiner. Essas imagens podem ter requisitos de recursos separados e equipes diferentes podem entregá-las.

Exemplos de utilização podem incluir:

  • Um contêiner que serve um aplicativo Web e um contêiner que extrai o conteúdo mais recente do controle do código-fonte.
  • Um contêiner de aplicativo e um contêiner de log. O contêiner de registro em log coleta os logs e as métricas saídas pelo aplicativo principal e os grava no armazenamento de longo prazo.
  • Um contêiner de aplicativo e um contêiner de monitoramento. O contêiner de monitoramento periodicamente faz uma solicitação ao aplicativo para garantir que ele esteja sendo executado e respondendo corretamente, e gera um alerta se não estiver.
  • Um contêiner front-end e um contêiner back-end. O front-end pode servir um aplicativo Web, com o back-end executando um serviço para recuperar dados.

Próximos passos

Saiba como implantar um grupo de contêineres de vários contêineres com um modelo do Azure Resource Manager: