Alocar uma interface de rede para uma tarefa do Amazon ECS - Amazon Elastic Container Service

Alocar uma interface de rede para uma tarefa do Amazon ECS

Os recursos de redes de tarefas fornecidos pelo modo de rede awsvpc dão às tarefas do Amazon ECS as mesmas propriedades de redes que as instâncias do Amazon EC2. Usar o modo de rede awsvpc simplifica a rede de contêineres. Você tem mais controle sobre como as aplicações se comunicam entre si e com outros serviços dentro das VPCs. O modo de rede awsvpc também fornece maior segurança para os contêineres, permitindo que você use grupos de segurança e ferramentas de monitoramento de rede em um nível mais granular dentro das tarefas. Você também pode usar outros recursos de rede do Amazon EC2, como o VPC Flow Logs, para monitorar o tráfego que entra e sai das tarefas. Além disso, os contêineres que pertencem à mesma tarefa podem se comunicar por meio da interface localhost.

A interface de rede elástica (ENI) da tarefa é um recurso totalmente gerenciado do Amazon ECS. O Amazon ECS cria a ENI e a anexa à instância host do Amazon EC2 host com o grupo de segurança especificado. A tarefa envia e recebe tráfego de rede na ENI da mesma maneira que as instâncias do Amazon EC2 fazem com suas interfaces de rede primárias. A cada ENI de tarefa é atribuído um endereço IPv4 privado, por padrão. Se a VPC estiver habilitada para o modo de pilha dupla e você usar uma sub-rede com um bloco CIDR IPv6, a ENI da tarefa também receberá um endereço IPv6. Cada tarefa pode ter apenas uma ENI.

Essas ENIs ficam visíveis no console do Amazon EC2 para sua conta. Sua conta não pode desanexar ou modificar as ENIs. Isso visa a evitar a exclusão acidental de uma ENI associada a uma tarefa em execução. É possível visualizar as informações do anexo da ENI para tarefas no console do Amazon ECS ou com a operação da API DescribeTasks. Quando a tarefa for interrompida ou se o serviço sofrer redução de escala vertical, a ENI da tarefa será desvinculada e excluída.

Quando precisar aumentar a densidade da ENI, use a configuração de conta awsvpcTrunking. O Amazon ECS também cria e anexa uma interface de rede “tronco” para a instância de contêiner. A rede tronco é totalmente gerenciada pelo Amazon ECS. A ENI do tronco é excluída quando você encerra ou cancela o registro da instância de contêiner do cluster do Amazon ECS. Para obter mais informações sobre a configuração de conta de awsvpcTrunking, consulte Pré-requisitos.

Você especifica awsvpc no parâmetro networkMode da definição de tarefa. Para ter mais informações, consulte Modo de rede.

Depois, ao executar uma tarefa ou criar um serviço, use o parâmetro networkConfiguration que inclui uma ou mais sub-redes para colocar as tarefas e um ou mais grupos de segurança para anexar a uma ENI. Para ter mais informações, consulte Configuração de rede. As tarefas são posicionadas em instâncias do Amazon EC2 nas mesmas zonas de disponibilidade que as dessas sub-redes e os grupos de segurança especificados são associados à ENI provisionada para a tarefa.

Considerações sobre o Linux

Considere o seguinte ao utilizar o sistema operacional Linux.

  • Se você usar uma instância p5.48xlarge no modo awsvpc, não será possível executar mais de uma tarefa na instância.

  • As tarefas e os serviços que usam o modo de rede awsvpc exigem que a função vinculada ao serviço do Amazon ECS forneça ao Amazon ECS as permissões para fazer chamadas a outros serviços da AWS em seu nome. Essa função será automaticamente criada quando você criar um cluster ou se criar ou atualizar um serviço no AWS Management Console. Para ter mais informações, consulte Uso de perfis vinculados ao serviço para o Amazon ECS. Você também pode criar a função vinculada ao serviço com o seguinte comando da AWS CLI:

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • A instância do Linux do Amazon EC2 requer a versão 1.15.0 ou posterior do agente de contêiner para executar tarefas que usam o modo de rede awsvpc. Se você estiver usando a AMI do Linux otimizada para o Amazon ECS, sua instância também precisará, pelo menos, da versão 1.15.0-4 do pacote ecs-init.

  • O Amazon ECS preenche o nome de host da tarefa usando a rede de tarefas com um nome de host DNS (interno) fornecido pela Amazon quando as opções enableDnsHostnames e enableDnsSupport estão habilitadas na sua VPC. Se essas opções não estiverem habilitadas, o nome de host DNS da tarefa será definido como um nome de host aleatório. Para obter mais informações sobre as configurações de DNS para uma VPC, consulte Usar DNS com sua VPC no Guia do usuário da Amazon VPC.

  • Cada tarefa do Amazon ECS que usa o modo de rede awsvpc recebe sua própria interface de rede elástica (ENI), que está anexada à instância do Amazon EC2 que a hospeda. Existe uma cota padrão para o número de interfaces de rede que é possível anexar a uma instância Linux do Amazon EC2. A interface de rede primária conta para essa cota. Por exemplo, por padrão, uma instância c5.large só pode ter até três ENIs associadas a ela. A interface de rede primária da instância conta como uma. É possível associar mais duas ENIs à instância. Como cada tarefa que usa o modo de rede awsvpc exige uma ENI, em geral, você pode executar somente duas dessas tarefas nesse tipo de instância. Para obter mais informações sobre os limites de ENI padrão para cada tipo de instância, consulte Endereços IP por interface de rede por tipo de instância no Guia do usuário do Amazon EC2.

  • O Amazon ECS oferece suporte ao lançamento de instâncias do Linux do Amazon EC2 usando tipos de instâncias compatíveis, com maior densidade de ENI. Quando você aceitar a configuração de conta awsvpcTrunking e registrar instâncias do Linux do Amazon EC2 usando esses tipos de instância no seu cluster, estas instâncias terão cotas de ENI mais altas. Utilizar essas instâncias com a cota mais alta significa que é possível colocar mais tarefas em cada instância Linux do Amazon EC2. Para usar a maior densidade de ENI com o recurso de entroncamento, sua instância do Amazon EC2 deve usar a versão 1.28.1 ou posterior do agente de contêiner. Se você estiver usando a AMI otimizada para o Amazon ECS, sua instância precisará, pelo menos, da versão 1.28.1-2 do pacote ecs-init. Para obter mais informações sobre como optar pela configuração de conta awsvpcTrunking, consulte Acesso aos recursos do Amazon ECS com as configurações de conta. Para obter mais informações sobre o entroncamento de ENI, consulte Aumento das interfaces de rede de instâncias de contêiner do Linux no Amazon ECS.

  • Ao hospedar tarefas que usam o modo de rede awsvpc em instâncias do Linux do Amazon EC2, suas ENIs de tarefa não recebem endereços IP públicos. Para acessar a Internet, as tarefas devem ser executadas em uma sub-rede privada configurada para usar um gateway NAT. Para obter mais informações, consulte Gateways NAT no Guia do usuário da Amazon VPC. O acesso à rede de entrada deve ocorrer de dentro da VPC que usa o endereço IP privado ou roteado por um balanceador de carga de dentro da VPC. As tarefas inicializadas em sub-redes públicas não têm acesso à Internet.

  • O Amazon ECS reconhece somente as ENIs que ele anexa às suas instâncias Linux do Amazon EC2. Se você tiver anexado ENIs manualmente às suas instâncias, o Amazon ECS poderá tentar adicionar uma tarefa a uma instância que não tenha adaptadores de rede suficientes. Isso pode fazer com que a tarefa atinja o tempo limite, passe para um status em desprovisionamento e, em seguida, para um status de interrompida. Recomendamos que você não anexe ENIs às suas instâncias manualmente.

  • As instâncias do Linux do Amazon EC2 devem ser registradas com o recurso ecs.capability.task-eni para serem consideradas para posicionamento de tarefas com o modo de rede awsvpc. As instâncias que executam a versão 1.15.0-4 ou posterior do ecs-init são automaticamente registradas com esse atributo.

  • As ENIs criadas e anexadas às suas instâncias do Linux do Amazon EC2 não podem ser desvinculadas manualmente nem modificadas pela sua conta. Isso visa a evitar a exclusão acidental de uma ENI associada a uma tarefa em execução. Para liberar as ENIs para uma tarefa, interrompa-a.

  • Há um limite de 16 sub-redes e 5 grupos de segurança que podem ser especificados na awsVpcConfiguration ao executar uma tarefa ou ao criar um serviço que usa o modo de rede awsvpc. Para obter mais informações, consulte AwsVpcConfiguration na Referência da API de serviço do contêiner do Amazon Elastic Container Service.

  • Quando uma tarefa é iniciada com o modo de rede awsvpc, o agente de contêiner do Amazon ECS cria um contêiner pause adicional para cada tarefa antes de iniciar os contêineres na definição de tarefa. Em seguida, ele configura o namespace de rede do contêiner pause ao executar os plug-ins do CNI amazon-ecs-cni-plugins. O agente inicia então o restante dos contêineres na tarefa para que eles compartilhem a pilha de rede do contêiner pause. Isso significa que todos os contêineres em uma tarefa são endereçáveis por endereços IP da ENI, e que eles podem se comunicar entre eles por meio da interface localhost.

  • Serviços com tarefas que usam o modo de rede awsvpc oferecem suporte somente a Application Load Balancers e Network Load Balancers. Ao criar grupos de destino para esses serviços, você precisa escolher ip como o tipo de destino. Não use instance. Isso ocorre porque as tarefas que usam o modo de rede awsvpc são associadas a uma ENI, não a uma instância do Linux do Amazon EC2. Para ter mais informações, consulte Uso do balanceamento de carga para distribuir o tráfego de serviço do Amazon ECS.

  • Se a sua VPC for atualizada para alterar o conjunto de opções de DHCP que ela utiliza, não será possível aplicar essas alterações às tarefas existentes. Inicie novas tarefas com essas alterações aplicadas, verifique se elas estão funcionando corretamente e, em seguida, interrompa tarefas existentes para modificar essas configurações de rede com segurança.

Considerações sobre Windows

Veja a seguir considerações quando for usado o sistema operacional Windos.

  • Instâncias de contêiner que usam a AMI do Windows Server 2016 otimizada para o Amazon ECS não podem hospedar tarefas que usam o modo de rede awsvpc. Se você tiver um cluster que contém AMIs do Windows Server 2016 otimizadas para o Amazon ECS e AMIs do Windows compatíveis com o modo de rede awsvpc, tarefas que usam o modo de rede awsvpc não serão iniciadas nas instâncias do Windows Server 2016. Em vez disso, elas são iniciadas em instâncias com suporte para o modo de rede awsvpc.

  • Sua instância do Windows do Amazon EC2 requer a versão 1.57.1 ou posterior do agente de contêiner para usar métricas do CloudWatch para contêineres do Windows que usem o modo de rede awsvpc.

  • As tarefas e os serviços que usam o modo de rede awsvpc exigem que a função vinculada ao serviço do Amazon ECS forneça ao Amazon ECS as permissões para fazer chamadas a outros serviços da AWS em seu nome. Essa função será criada automaticamente quando você criar um cluster ou se criar ou atualizar um serviço no AWS Management Console. Para ter mais informações, consulte Uso de perfis vinculados ao serviço para o Amazon ECS. Também é possível criar a função vinculada ao serviço com o comando da AWS CLI a seguir.

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • Sua instância do Windows do Amazon EC2 requer a versão 1.54.0 ou posterior do agente de contêiner para executar tarefas que usam o modo de rede awsvpc. Ao inicializar a instância, você deve configurar as opções necessárias para o modo de rede awsvpc. Para ter mais informações, consulte Inicialização de instâncias de contêiner do Windows no Amazon ECS para transmitir dados.

  • O Amazon ECS preenche o nome de host da tarefa usando a rede de tarefas com um nome de host DNS (interno) fornecido pela Amazon quando as opções enableDnsHostnames e enableDnsSupport estão habilitadas na sua VPC. Se essas opções não estiverem habilitadas, o nome de host DNS da tarefa será um nome de host aleatório. Para obter mais informações sobre as configurações de DNS para uma VPC, consulte Usar DNS com sua VPC no Guia do usuário da Amazon VPC.

  • Cada tarefa do Amazon ECS que usa o modo de rede awsvpc recebe sua própria interface de rede elástica (ENI), que está anexada à instância do Windows do Amazon EC2 que a hospeda. Existe uma cota padrão para o número de interfaces de rede que é possível anexar a uma instância Windows do Amazon EC2. A interface de rede primária conta para essa cota. Por exemplo, por padrão, uma instância c5.large só pode ter até três ENIs associadas a ela. A interface de rede primária da instância conta como uma delas. É possível associar mais duas ENIs à instância. Como cada tarefa que usa o modo de rede awsvpc exige uma ENI, em geral, você pode executar somente duas dessas tarefas nesse tipo de instância. Para obter mais informações sobre os limites de ENI padrão para cada tipo de instância, consulte Endereços IP por interface de rede por tipo de instância no Guia do usuário do Amazon EC2.

  • Ao hospedar tarefas que usam o modo de rede awsvpc em instâncias do Windows do Amazon EC2, suas ENIs de tarefa não recebem endereços IP públicos. Para acessar a Internet, inicie tarefas em uma sub-rede privada configurada para usar um gateway NAT. Para obter mais informações, consulte Gateways NAT no Guia do usuário da Amazon VPC. O acesso à rede de entrada deve ocorrer de dentro da VPC usando o endereço IP privado ou roteado por um load balancer de dentro da VPC. As tarefas inicializadas em sub-redes públicas não têm acesso à Internet.

  • O Amazon ECS reconhece somente as ENIs que ele anexa às suas instâncias Windows do Amazon EC2. Se você tiver anexado ENIs manualmente às suas instâncias, o Amazon ECS poderá tentar adicionar uma tarefa a uma instância que não tenha adaptadores de rede suficientes. Isso pode fazer com que a tarefa atinja o tempo limite, passe para um status em desprovisionamento e, em seguida, para um status de interrompida. Recomendamos que você não anexe ENIs às suas instâncias manualmente.

  • As instâncias do Windows do Amazon EC2 devem ser registradas com o recurso ecs.capability.task-eni para serem consideradas para posicionamento de tarefas com o modo de rede awsvpc.

  • É possível modificar ou desanexar manualmente as ENIs criadas e anexadas às suas instâncias do Windows do Amazon EC2. Isso evita que você exclua acidentalmente uma ENI associada a uma tarefa em execução. Para liberar as ENIs para uma tarefa, interrompa-a.

  • É possível especificar até 16 sub-redes e 5 grupos de segurança em awsVpcConfiguration ao executar uma tarefa ou criar um serviço que usa o modo de rede awsvpc. Para obter mais informações, consulte AwsVpcConfiguration na Referência da API de serviço do contêiner do Amazon Elastic Container Service.

  • Quando uma tarefa é iniciada com o modo de rede awsvpc, o agente de contêiner do Amazon ECS cria um contêiner pause adicional para cada tarefa antes de iniciar os contêineres na definição de tarefa. Em seguida, ele configura o namespace de rede do contêiner pause ao executar os plug-ins do CNI amazon-ecs-cni-plugins. O agente inicia então o restante dos contêineres na tarefa para que eles compartilhem a pilha de rede do contêiner pause. Isso significa que todos os contêineres em uma tarefa são endereçáveis por endereços IP da ENI, e que eles podem se comunicar entre eles por meio da interface localhost.

  • Serviços com tarefas que usam o modo de rede awsvpc oferecem suporte somente a Application Load Balancers e Network Load Balancers. Ao criar grupos de destino para esses serviços, você precisa escolher ip como o tipo de destino, e não instance. Isso ocorre porque as tarefas que usam o modo de rede awsvpc são associadas a uma ENI, não a uma instância do Windows do Amazon EC2. Para ter mais informações, consulte Uso do balanceamento de carga para distribuir o tráfego de serviço do Amazon ECS.

  • Se a sua VPC for atualizada para alterar o conjunto de opções de DHCP que ela utiliza, não será possível aplicar essas alterações às tarefas existentes. Inicie novas tarefas com essas alterações aplicadas, verifique se elas estão funcionando corretamente e, em seguida, interrompa tarefas existentes para modificar essas configurações de rede com segurança.

  • Não há suporte para os seguintes recursos quando você usa o modo de rede awsvpc em uma configuração de EC2 do Windows:

    • Configuração de pilha dupla

    • IPv6

    • Entroncamento ENI

Usar uma VPC no modo de pilha dupla

Ao usar uma VPC no modo de pilha dupla, as tarefas podem se comunicar por IPv4, IPv6 ou ambos. Os endereços IPv4 e IPv6 são independentes um do outro. Portanto, é preciso configurar o encaminhamento e a segurança na VPC separadamente para IPv4 e IPv6. Para obter mais informações sobre como configurar a VPC para o modo de pilha dupla, consulte Migrar para IPv6 no Guia do usuário da Amazon VPC.

Se tiver configurado sua VPC com um gateway da Internet ou um gateway da Internet somente saída, será possível utilizar sua VPC no modo de pilha dupla. Fazendo isso, as tarefas que obtêm um endereço IPv6 podem acessar a Internet por meio de um gateway da Internet ou um gateway da Internet somente saída. Gateways NAT são opcionais. Para obter mais informações, consulte Gateways da Internet e Gateways da Internet somente de saída no Guia do usuário da Amazon VPC.

As tarefas do Amazon ECS receberão um endereço IPv6 se as seguintes condições forem atendidas: