Twoje pytanie
Czy ECS to tylko instalacja dokera w EC2? Jeśli mam już EC2, to uruchamiam ECS, czy to oznacza, że mam dwie instancje?
Nie. AWS ECS
To tylko logiczne zgrupowanie (klaster) EC2
instancji, a wszystkie EC2
instancje ECS
działają jako Docker
host, tj. ECS może wysłać polecenie uruchomienia na nich kontenera ( EC2
). Jeśli masz już EC2, a następnie uruchomisz ECS, nadal będziesz mieć jedną instancję. Jeśli dodasz / zarejestrujesz (instalując AWS ECS Container Agent) EC2 do ECS, stanie się on częścią klastra, ale nadal będzie pojedynczą instancją EC2.
Amazon ECS bez zarejestrowanego EC2 (dodanego do klastra) jest do niczego.
TL; DR
Przegląd
EC2
- jest po prostu zdalną (wirtualną) maszyną.
ECS
oznacza Elastic Container Service
- jak w podstawowej definicji klastra komputerowego , ECS
jest w zasadzie logiczne grupowanie
EC2
maszyn / przypadkach . Z technicznego punktu widzenia ECS
jest to zwykła konfiguracja zapewniająca efektywne wykorzystanie zasobów EC2
instancji, tj. Pamięć masową, pamięć, procesor itp., Oraz zarządzanie nimi.
Aby jeszcze bardziej uprościć, jeśli uruchomiłeś program Amazon ECS
bez EC2
dodanych do niego instancji, to nic nie da, tj. Nie możesz nic z tym zrobić. ECS
ma sens tylko wtedy, gdy EC2
zostanie do niego dodana jedna (lub więcej) instancji.
Następną mylącą rzeczą jest termin kontenera - który nie jest w pełni zwirtualizowanymi instancjami maszyn, a Docker to jedna z technologii, której możemy użyć do tworzenia instancji kontenerów. Docker
to narzędzie, które możesz zainstalować na naszej maszynie, co czyni go Docker
hostem, a na tym hoście możesz tworzyć kontenery (takie same jak maszyny wirtualne - ale znacznie lżejsze). Podsumowując, ECS
chodzi tylko o grupowanie instancji EC2 i użycie ich Docker
do tworzenia instancji kontenerów / instancji / maszyn wirtualnych na tych ( EC2
) hostach .
Wszystko, co musisz zrobić, to uruchomić ECS
i zarejestrować / dodać EC2
do niego tyle instancji, ile potrzebujesz. Możesz dodawać / rejestrować instancje EC2, wszystko, czego potrzebujesz, to Amazon ECS Container Agent działający na twojej instancji / maszynie EC2, co można zrobić ręcznie lub bezpośrednio za pomocą specjalnego AMI (Amazon Machine Image), tj. AMI zoptymalizowanego dla Amazon ECS, który już ma Agent kontenerów Amazon ECS. Podczas uruchamiania nowej instancji EC2 Agent automatycznie rejestruje ją w domyślnym klastrze ECS.
Czynnik pojemnik działa na każdej z instancji ( EC2
wystąpienia) w ramach Amazon ECS
klastra wysyła informacje o aktualnych zadaniach instancji Działający i wykorzystania zasobów na Amazon ECS i uruchamia i zatrzymuje zadania, gdy tylko otrzyma od Amazon ECS. Aby uzyskać więcej informacji, zobacz Agent kontenerów Amazon ECS . Po ustawieniu każda z utworzonych instancji kontenera (dowolnej EC2
maszyny / węzła) będzie instancją w Amazon ECS
roju.
Aby uzyskać więcej informacji - przeczytaj krok 10 w tej dokumentacji: Uruchamianie instancji kontenera Amazon ECS :
Wybierz AMI dla swojej instancji kontenera. Możesz wybrać AMI zoptymalizowany pod kątem Amazon ECS lub inny system operacyjny, taki jak CoreOS lub Ubuntu. Jeśli nie wybierzesz AMI zoptymalizowanego przez Amazon ECS, musisz postępować zgodnie z procedurami opisanymi w części Instalacja agenta kontenera Amazon ECS .
Domyślnie instancja kontenera jest uruchamiana w domyślnym klastrze. Jeśli chcesz uruchomić swój własny klaster zamiast domyślnego, wybierz listę Szczegóły zaawansowane i wklej następujący skrypt w polu Dane użytkownika, zastępując twoją_nazwa_klastra nazwą klastra.
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
Lub, jeśli masz plik ecs.config w Amazon S3 i włączono dostęp tylko do odczytu do roli instancji kontenera Amazon S3, wybierz listę Advanced Details i wklej następujący skrypt w polu User data, zastępując your_bucket_name nazwą Twój wiadro, aby zainstalować AWS CLI i zapisać plik konfiguracyjny w czasie uruchamiania. Uwaga Aby uzyskać więcej informacji na temat tej konfiguracji, zobacz Przechowywanie konfiguracji wystąpienia kontenera w Amazon S3.
#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
Aby to jeszcze bardziej wyjaśnić - możesz tworzyć kontenery na swojej pojedynczej EC2
instancji bez ECS
. Zainstaluj dowolną technologię konteneryzacji, tj. Docker
I uruchom polecenie tworzenia kontenera, ustawiając EC2
jako Docker
hosta i miej tyle Docker
kontenerów, ile chcesz (lub tyle, na ile EC2
pozwalają na to zasoby).
Krótko mówiąc, ECS jest menedżerem, podczas gdy instancje EC2 są jak pracownicy. Wszyscy pracownicy (EC2) w ramach tego managera (ECS) mogą wykonywać zadania „Dockera”, a kierownik również całkiem dobrze rozumie „dockera”. Dlatego zawsze, gdy potrzebujesz zasobów „docker”, pojawiasz się przed managerem. Kierownik ma już status od każdego pracownika (EC2) decyduje, który z nich ma wykonać zadanie.
Wracając do pytania, menedżer bez „pracownika” nie ma sensu.
źródło
EC2 umożliwia uruchamianie pojedynczych instancji, których możesz używać do prawie wszystkiego, co chcesz. ECS to usługa kontenerowa, co oznacza, że będzie uruchamiać instancje, które będą gotowe do uruchamiania aplikacji kontenerowych. Główna różnica między tymi dwiema usługami polega na tym, że w przypadku EC2 musisz zarządzać każdą instancją oddzielnie, dowolną metodą (ręcznie, za pomocą narzędzia CM lub w inny sposób) - wdrażaj aplikacje i samodzielnie utrzymuj połączenie między serwerami. ECS umożliwia uruchomienie klastra maszyn, które posłużą jako platforma wdrożeniowa aplikacji kontenerowych, umożliwiając traktowanie wszystkich instancji w klastrze jako jednej dużej instancji dostępnej dla obciążenia kontenera.
Odpowiadając na pytanie - możesz uruchomić klaster ECS bez żadnych instancji, ale wtedy nie będzie mógł na nim niczego uruchomić. Po zarejestrowaniu instancji EC2 w klastrze ECS kontenery są gotowe do działania w nim. Podsumowując, możesz używać zarówno ECS, jak i EC2 z tylko jedną instancją, ale nie jest to rzeczywisty przypadek użycia, dla którego te usługi zostały zbudowane.
źródło
Mówiąc prościej, Elastic Container Service (ECS) to usługa orkiestracji kontenerów platformy Docker.
Możesz poprosić go o uruchomienie jednego lub więcej obrazów Dockera, jako „ Usługa ” z możliwością automatycznego skalowania lub jako „ Zadanie ” ad-hoc .
Usługi i zadania są uruchamiane w „ klastrze ”. Pierwotnie klaster był grupą jednego lub więcej wstępnie skonfigurowanych serwerów EC2 z agentem klastra ECS. Agent klastra zaplanowałby kontenery na serwerze EC2. Te serwery EC2 pojawiają się na Twojej liście instancji EC2 i są naliczane według zwykłych opłat za minutę EC2 - możesz nawet połączyć się z nimi SSH jak każdy normalny serwer EC2. Jeśli chcesz mieć większą pojemność do obsługi większej liczby usług lub zadań, lub jeśli chcesz mieć odporność na awarie EC2, potrzebujesz więcej serwerów EC2.
Około listopada 2017 roku AWS dodał ECS Fargate . Teraz klaster może działać „bez serwera” bez udostępniania węzłów EC2. Po prostu określasz ilość procesora i pamięci, których zadanie lub usługa wymaga do działania, co oznacza, że płacisz tylko za procesor i czas pamięci, a nie za EC2.
źródło
Okay, jak wiesz, EC2 to maszyna wirtualna w AWS, a ECS to system orkiestracji kontenerów w AWS.
Aby korzystać z ECS, musisz uruchomić swój kontener na niektórych maszynach wirtualnych, z których EC2 jest jedną z opcji, aby to zapewnić.
Będziesz musiał zainstalować
ecs-agent
na EC2, aby nawiązać połączenie z ECS. ECS może również monitorować wykorzystanie zasobów w EC2. Więc zasadniczo wybierasz bardziej wysokopoziomowy typ EC2, a następnie więcej zasobów (CPU / MEM) może wykorzystać twój kontener.źródło
Główną różnicą są instancje Fargate, które zapewnia ECS.
źródło