Sua pergunta
O ECS é apenas uma instalação do docker no EC2? Se eu já tenho um EC2, inicio um ECS, significa que tenho duas instâncias?
No. AWS ECS
é apenas um agrupamento lógico (cluster) de EC2
instâncias, e todas as EC2
instâncias fazem parte de um ECS
ato como Docker
host, ou seja, o ECS pode enviar um comando para ativar um contêiner ( EC2
). Se você já possui um EC2 e, em seguida, inicia o ECS, ainda terá uma única instância. Se você adicionar / registrar (instalando o AWS ECS Container Agent) o EC2 no ECS, ele se tornará parte do cluster, mas ainda será uma instância única do EC2.
Um Amazon ECS sem nenhum EC2 registrado (adicionado ao cluster) é inútil.
TL; DR
Uma visão geral
EC2
- é simplesmente uma máquina remota (virtual).
ECS
significa Elastic Container Service
- conforme a definição básica de cluster de computadores , ECS
é basicamente um agrupamento lógico de
EC2
máquinas / instâncias . Tecnicamente falando, ECS
é uma mera configuração para um uso e gerenciamento eficientes dos recursos de suas EC2
instâncias, como armazenamento, memória, CPU, etc.
Para simplificar ainda mais, se você lançou um Amazon ECS
sem EC2
instâncias adicionadas, não adianta nada, ou seja, você não pode fazer nada a respeito. ECS
faz sentido apenas quando uma (ou mais) EC2
instância é adicionada a ela.
A próxima coisa confusa aqui é o termo do contêiner - que não é totalmente instâncias de máquinas virtualizadas e o Docker é uma tecnologia que podemos usar para criar instâncias de contêineres. Docker
é um utilitário que você pode instalar em nossa máquina, o que o torna um Docker
host e, nesse host, você pode criar contêineres (o mesmo que máquinas virtuais - mas muito mais leves). Em resumo, ECS
trata-se apenas de agrupar instâncias do EC2 e usa Docker
para instanciar contêineres / instâncias / máquinas virtuais nesses EC2
hosts ( ) .
Tudo o que você precisa fazer é iniciar ECS
e registrar / adicionar quantas EC2
instâncias precisar. Você pode adicionar / registrar instâncias do EC2, tudo o que precisa é do Amazon ECS Container Agent em execução na sua instância / máquina do EC2, o que pode ser feito manualmente ou diretamente usando a AMI especial (Amazon Machine Image), ou seja, a AMI otimizada para Amazon ECS, que já possui o Amazon ECS Container Agent. Durante o lançamento de uma nova instância do EC2, o Agente a registra automaticamente no cluster do ECS padrão.
O agente de contêiner em execução em cada uma das instâncias ( EC2
instâncias) em um Amazon ECS
cluster envia informações sobre as tarefas atuais em execução e a utilização de recursos da instância para o Amazon ECS e inicia e interrompe tarefas sempre que recebe uma solicitação do Amazon ECS. Para obter mais informações, consulte Amazon ECS Container Agent . Uma vez definida, cada uma das instâncias de contêiner criadas (de qualquer EC2
máquina / nó) será uma instância no Amazon ECS
enxame.
Para obter mais informações - leia a etapa 10 desta documentação: Iniciando uma instância do Amazon ECS Container :
Escolha uma AMI para sua instância de contêiner. Você pode escolher a AMI otimizada para Amazon ECS ou outro sistema operacional, como CoreOS ou Ubuntu. Se você não escolher a AMI otimizada para Amazon ECS, precisará seguir os procedimentos em Instalando o Amazon ECS Container Agent .
Por padrão, sua instância de contêiner é iniciada no cluster padrão. Se você deseja iniciar seu próprio cluster em vez do padrão, escolha a lista Detalhes Avançados e cole o seguinte script no campo Dados do usuário, substituindo your_cluster_name pelo nome do seu cluster.
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
Ou, se você tiver um arquivo ecs.config no Amazon S3 e tiver ativado o acesso somente leitura do Amazon S3 à sua função de instância do contêiner, escolha a lista Detalhes avançados e cole o seguinte script no campo Dados do usuário, substituindo your_bucket_name pelo nome de seu bucket para instalar a CLI da AWS e gravar seu arquivo de configuração no momento da inicialização. Nota Para obter mais informações sobre essa configuração, consulte Armazenando a configuração da instância do contêiner no Amazon S3.
#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
Apenas para esclarecer melhor - você pode criar contêineres em sua única EC2
instância sem ECS
. Instale qualquer tecnologia de containerização, ou seja, Docker
e execute o comando create container, configurando o seu EC2
como Docker
host, e tenha o máximo de Docker
contêineres que você desejar (ou o máximo que EC2
os recursos permitirem).
Em palavras simples, o ECS é um gerente, enquanto as instâncias do EC2 são como funcionários. Todos os funcionários (EC2) desse gerente (ECS) podem executar tarefas do "Docker" e o gerente também entende muito bem o "docker". Portanto, sempre que precisar de recursos de "janela de encaixe", você aparecerá no Gerenciador. O gerente já tem status de todo funcionário (EC2) decide qual deles deve executar a tarefa.
Agora, voltando à sua pergunta, um gerente sem um "funcionário" não faz sentido.
fonte
O EC2 permite iniciar instâncias individuais que você pode usar para praticamente o que quiser. O ECS é um serviço de contêiner, o que significa que ele iniciará instâncias que estarão prontas para iniciar aplicativos de contêiner. A principal distinção entre os dois serviços é que, com o EC2, você precisa gerenciar cada instância separadamente, independentemente do método que escolher (manualmente, usando uma ferramenta CM ou qualquer outra maneira) - implante seus aplicativos e mantenha você mesmo a conexão entre os servidores. O ECS permite iniciar um cluster de máquinas que servirá como ponto de implantação dos aplicativos de contêiner, permitindo tratar todas as instâncias no cluster como uma grande instância disponível para sua carga de trabalho de contêiner.
E para responder à sua pergunta - Você pode iniciar um cluster do ECS sem instâncias, mas não poderá executar nada nele. Depois de registrar uma instância do EC2 dentro de um cluster do ECS, os contêineres estão prontos para serem executados nela. Portanto, a questão é: você pode usar o ECS e o EC2 com apenas uma instância, mas esse não é o caso de uso real para o qual esses serviços foram criados.
fonte
Simplificando, o Elastic Container Service (ECS) é um serviço de orquestração de contêiner do Docker.
Você pode solicitar que ele execute uma ou mais imagens do Docker, como um " Serviço " com capacidade de dimensionamento automático ou como uma " Tarefa " ad-hoc .
Os serviços e tarefas são executados em um " Cluster ". Originalmente, um Cluster era um grupo de um ou mais servidores EC2 pré-configurados executando o ECS Cluster Agent. O Cluster Agent agendaria os contêineres no servidor EC2. Esses servidores EC2 aparecem na sua lista de instâncias do EC2 e são cobrados a custos regulares por minuto do EC2 - você pode até fazer o SSH neles como qualquer servidor EC2 normal. Se você quisesse mais capacidade de executar mais Serviços ou Tarefas ou se desejasse resiliência contra falhas do EC2, seria necessário mais servidores EC2.
Por volta de novembro de 2017, a AWS adicionou o ECS Fargate . Agora, um cluster pode executar "sem servidor" sem provisionar nós EC2. Você simplesmente define a quantidade de CPU e memória que sua Tarefa ou Serviço requer para operar, o que significa que você paga apenas pelo tempo de CPU e memória, e não pelo EC2.
fonte
Ok, como você sabe, o EC2 é uma máquina virtual na AWS e o ECS é um sistema de orquestração de contêineres na AWS.
Para usar o ECS, você precisa executar seu contêiner em algumas máquinas virtuais, nas quais o EC2 é uma das opções para fornecer isso.
Você precisará instalar
ecs-agent
no EC2 para fazer uma conexão com o ECS. E o ECS também pode monitorar o uso de recursos no seu EC2. Então, basicamente, você escolhe o tipo EC2 de mais alto nível e mais recursos (CPU / MEM) que seu contêiner pode usar.fonte
A principal diferença são as instâncias do Fargate fornecidas pelo ECS.
fonte