Grupos de contêineres em Instâncias de Contêiner do Azure

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

O que é um grupo de contêiner?

Um grupo de contêineres é uma coleção de contêineres que são agendados no mesmo computador host. Os contêineres de um grupo de contêineres compartilham 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 grupo de contêineres de exemplo:

  • Está agendado em um único computador 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 contêineres. Um contêiner escuta na porta 80, enquanto o outro escuta na porta 5000.
  • Inclui dois compartilhamentos de arquivos do Azure como montagens de volume e cada contêiner monta um dos compartilhamentos localmente.

Observação

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

Implantação

Estas são as duas maneiras comuns de implantar um grupo com vários contêineres: usando um modelo do Resource Manager ou um arquivo YAML. O modelo do Resource Manager é recomendável para implantar recursos adicionais de serviço do Azure (por exemplo, um compartilhamento de Arquivos do Azure) no momento da implantação das instâncias de contêiner. Devido à natureza mais concisa do formato YAML, um arquivo desse formato é recomendável quando a implantação incluir somente instâncias de contêiner. Para obter detalhes sobre as propriedades que podem ser definidas, confira 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. A exportação permite o armazenamento das configurações do grupo de contêineres no controle de versão para "configuração como código". Ou então, usar o arquivo exportado como ponto de partida ao desenvolver uma nova configuração em YAML.

Alocação de recurso

As Instâncias de Contêiner do Azure alocam recursos como CPUs, memória e GPUs (versão prévia) para um grupo com vários contêineres adicionando as solicitações de recurso das instâncias no grupo. Usando os recursos de 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 vai ter duas CPUs alocadas.

Uso de recursos pelas instâncias de contêiner

Cada instância de contêiner em um grupo tem alocados os recursos que estão especificados na 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 a propriedade opcional de limite de recursos for configurada. O limite de recursos de uma instância de contêiner deve ser maior ou igual à propriedade obrigatória de solicitação de recurso.

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

  • Se for especificado um limite para a instância de contêiner, o uso máximo da instância pode ser maior que o da solicitação, até o limite definido. De maneira correspondente, o uso de recursos por outras instâncias de contêiner no grupo pode diminuir. O limite máximo de recursos que pode ser definido 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 solicitando uma CPU cada, um dos contêineres pode executar uma carga de trabalho que exige mais CPUs para execução do que a outra.

Nesse cenário, pode ser definido um limite de recursos de até duas CPUs para a instância de contêiner. Essa configuração permite que a instância de contêiner use até duas CPUs, se disponível.

Observação

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 os recursos alocados para o grupo. Por esse motivo, planeje um pequeno buffer de recursos ao solicitar recursos para contêineres no grupo.

Alocação mínima e máxima

  • Aloque no mínimo uma CPU e 1 GB de memória para um grupo de contêineres. As 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, confira 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, pelo menos uma porta 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 do grupo de contêineres são liberados quando o grupo é excluído.

Dentro de um grupo de contêineres, as instâncias de contêiner podem alcançar umas às outras por meio do localhost em qualquer porta, mesmo que essas portas não estejam expostas externamente no endereço IP do grupo ou no 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 montar dentro de um grupo de contêineres. Os volumes com suporte incluem:

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

Cenários comuns

Grupos de vários contêineres são úteis quando você deseja dividir uma única tarefa funcional em um pequeno número de imagens de contêiner. Essas imagens podem, então, ser fornecidas por equipes diferentes e têm requisitos de recursos separados.

Os exemplos de uso podem incluir:

  • Um contêiner que atende a um aplicativo Web e um contêiner efetuando pull do 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 log coleta logs e métricas de saída do aplicativo principal e grava-as em armazenamento de longo prazo.
  • Um contêiner de aplicativo e um contêiner de monitoramento. O contêiner de monitoramento faz uma solicitação periódica ao aplicativo para garantir que ele esteja em execução e respondendo corretamente e emite um alerta em caso negativo.
  • Um contêiner de front-end e um contêiner de back-end. O de front-end pode servir a um aplicativo Web, com o de back-end executando um serviço para recuperar dados.

Próximas etapas

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