Која оркестрација контејнера је најбоља за вас?

Timovi informacione tehnologije (IT) suočavaju se sa brojnim izborima prilikom pokretanja kontejnerskih aplikacija, koji se odnose na sve nivoe tehničke stručnosti.

Izbor jedne opcije može biti težak, s obzirom na to da jednom kada se odlučite, verovatno nećete skoro preći na drugu.

Ovaj tekst upoređuje dve značajne opcije: Amazon Elastic Container Service (ECS) i Kubernetes.

Obe platforme su moćne u domenu orkestracije kontejnera i upravljanja mikroservisima. Pre nego što nastavimo, osvežavanje znanja o kontejnerima nije na odmet. Kontejneri su postali popularni zbog toga što olakšavaju razvoj, promociju i primenu koda u različitim okruženjima. Oni su apstrakcije na slojevima aplikacija, koji obuhvataju kod sa neophodnim zavisnostima, bibliotekama i podešavanjima okruženja u izvršni paket.

Iako je primarni cilj korišćenja kontejnera da se pojednostavi proces primene koda, upravljanje hiljadama kontejnera postaje sve izazovnije. Potreban je dodatni mehanizam za implementaciju veoma pouzdanih implementacija, skaliranje aplikacija prema opterećenju, zamenu nezdravih kontejnera novim, balansiranje opterećenja i otkrivanje portova.

Tu na scenu stupa orkestracija kontejnera. Osim toga, potrebna su sredstva za pokretanje kontejnera i upravljanje njihovom ukupnom infrastrukturom. Dostupni su brojni alati za rešavanje ovog problema, ali fokusiraćemo se na nekoliko njih.

U ovom delu teksta uporedićemo ECS i Kubernetes, ističući prednosti svakog od njih i zaključiti uputstvima za odabir odgovarajućeg rešenja za vaš projekat.

Šta je Amazon ECS?

Amazon ECS je usluga orkestracije kontejnera koja pojednostavljuje primenu, upravljanje i skaliranje kontejnerskih aplikacija. U suštini, vi definišete svoju aplikaciju i njene potrebne resurse. Amazon ECS zatim pokreće, nadgleda i skalira vašu aplikaciju kroz računarske opcije, istovremeno omogućavajući integraciju drugih potrebnih AWS usluga. Na primer, možete proveriti status i programski modifikovati svoje klastere.

ECS vam omogućava da primenite svoje aplikacije kroz grupu servera, nazvanih klasteri, koristeći definicije zadataka i pozive API-ja (Application Programming Interface).

Pročitajte i: Koje AWS EC2 instance treba koristiti?

Prednosti Amazon ECS-a

  • Tradicionalni ECS – Ova verzija je pokrenuta 2015. godine i koristi Amazon EC2 za lako pokretanje Docker kontejnera u oblaku. Tradicionalni ECS vam daje osnovnu kontrolu nad EC2 opcijama, omogućavajući fleksibilnost. To znači da birate tipove instanci koje želite da pokrenete u svom kontejneru. Model vas dodatno povezuje sa drugim AWS uslugama koje možete koristiti za nadgledanje i evidenciju aktivnosti na EC2 instancama.
  • Fargate ECS – Objavljen 2017. godine za pokretanje kontejnera bez potrebe za upravljanjem osnovnim EC2 računarskim opcijama. Fargate koristi drugačiji pristup tako što računa potreban CPU i memoriju. Ako želite brzo da pokrenete radna opterećenja, ovo bi mogla biti najbolja opcija, jer nećete morati da brinete o osnovnim računarskim opcijama.
  • Pojednostavljene arhitekture aplikacija – ECS je dobra opcija za aplikacije sa nekoliko mikroservisa (one sa malo spoljnih zavisnosti ili imaju nekoliko pokretnih delova) koje rade nezavisno.
  • Lako nadgledanje i evidencija – Možete lako integrisati ECS sa AWS alatima za evidenciju i praćenje kao što je CloudWatch. Ne morate da konfigurišete vidljivost radnih opterećenja kontejnera, što vam štedi vreme.
  • Laka kriva učenja – ECS se lako uči. Hostovani Kubernetes dobija veću popularnost od tradicionalnih modela kao što su KOPS ukusi i Kubeadm.
  • Infrastruktura bez servera – ECS vam omogućava da pokrenete kontejnere bez potrebe za upravljanjem virtuelnim mašinama; postavlja kontejnere bez ljudske intervencije.
  • Ugrađena bezbednost – Amazon ECS je podrazumevano obezbeđen i kaskadno postavlja bezbednosne mere preko izolovanog mehanizma virtuelnog privatnog umrežavanja.
  • Ograničenja ECS-a

  • Ograničeno skladištenje – Eksterna memorija je isključivo ograničena na Amazon, tj. na Amazon EBS.
  • Ograničenja validacije – ECS je proizvod zasnovan na Amazonu, stoga nije dostupan za javnu primenu izvan Amazona.
  • Zaključavanje dobavljača – ECS je pristrasan; može da upravlja samo svojim kreiranim kontejnerima.
  • Nedostupnost ECS koda – Veliki deo ECS koda nije javno dostupan. Alati kao što je AWS Block (okvir za pravljenje prilagođenih planera) imaju veoma mali deo baze koda otvorenog koda.
  • Šta je Kubernetes?

    Kubernetes, koji se obično naziva K8s, je softver otvorenog koda za automatizaciju postavljanja, skaliranja i administracije kontejnerskih aplikacija.

    Koristeći 15 godina iskustva u vođenju Google proizvodnih radnih opterećenja (kombinujući najbolje ideje i prakse zajednice), K8s grupiše vaše kontejnere aplikacija u logičke jedinice kojima možete lako da upravljate.

    Pored toga, primarne karakteristike K8s-a, kao što su balansiranje opterećenja, trajno skladištenje, automatizovano vraćanje za kontejnerske aplikacije, tajne, samoizlečenje za Kubernetes klastere i upravljanje konfiguracijom.

    Pročitajte i: Početak rada sa Kubernetesom: Uvod za početnike

    Prednosti Kubernetesa

  • Otvoreni kod (bez zaključavanja dobavljača) – Bez obzira da li se pokreće lokalno ili u oblaku, možete koristiti Kubernetes bez ponovnog projektovanja strategije orkestracije. Za razliku od tradicionalnog softvera koji zahteva određene naknade za licencu, K8s je besplatan i otvorenog koda. Kao da to nije dovoljno, K8s klasteri se kreću kroz javne i privatne oblake obezbeđujući virtuelizacione resurse na oba entiteta.
  • Fleksibilnost velike snage – K8s je odlično rešenje ako je vašim aplikacijama potrebna visoka dostupnost uz podršku efikasnosti i skalabilnosti. Ova osobina je taktički korisna u aplikacijama koje generišu visoke prihode. Jednostavno rečeno, to je detaljna kontrola nad vašim radnim opterećenjem. U slučajevima kada želite da prebacite svoje aplikacije na moćnije platforme, K8s nije ograničen na zaključavanje dobavljača kao što je ECS.
  • Visoka dostupnost – Kao što je gore pomenuto, K8s dizajn je usmeren da obezbedi dostupnost aplikacija i njihove potrebne infrastrukture, što ga čini neophodnom karakteristikom za kontejnere u proizvodnji. Pod visokom dostupnošću, postoji nekoliko tehnika:
    • Zdravstvene provere i samoizlečenje – Kubernetes štiti vaše aplikacije od kvarova kroz redovne inspekcije čvorova. Ako je kapsula ili kontejner oštećen zbog greške, K8s automatski nudi zamenu.
    • Balansiranje opterećenja i rutiranje saobraćaja – Što se tiče rutiranja saobraćaja, K8s će slati zahteve samo u odgovarajuće kontejnere. A sa balansiranjem opterećenja, K8s raspoređuje opterećenje na podove, balansirajući vaše resurse za nekoliko slučajeva kao što su prekidi, slučajni vrhunski saobraćaj ili grupna obrada. Opet, možete koristiti i eksterne balansere opterećenja ako želite.
  • Skalabilnost radnog opterećenja – Iako je gore pomenuto, hajde da to dalje razložimo. K8s koristi svoje resurse da obezbedi efikasno skaliranje u sledećim kriterijumima.
    • Automatsko skaliranje – Ova funkcija vam omogućava da automatski prilagodite broj pokrenutih kontejnera prema korišćenju CPU-a i drugim CPU metrikama.
    • Ručno skaliranje – Uz pomoć ove funkcije, možete skalirati broj pokrenutih kontejnera kroz komandnu liniju ili interfejs.
    • Kontroler replikacije – Ovaj alat vam omogućava da odredite broj podova koji odgovaraju specifikaciji vašeg klastera; ako ih je malo, pokreće nove, a ako ih ima previše, prekida ih.
  • Dizajniran za primenu – K8s je specijalno dizajniran da ubrza proces pravljenja, testiranja i isporuke softvera. Evo nekih od njegovih ponuđenih karakteristika:
    • Automatsko vraćanje i uvođenje – Možda ćete želeti da uvedete neke nove konfiguracije ili ažuriranja aplikacija tokom razvoja. K8s vam omogućava da sprovedete proces bez zastoja aplikacije. U slučaju kvara, K8s se automatski vraća na prethodnu verziju.
    • Kanari implementacije – Ovu funkciju možete iskoristiti testiranjem novih implementacija u proizvodnji paralelno sa prethodnom verzijom; K8s vam omogućava da smanjite poslednju verziju aplikacije dok istovremeno povećavate najnoviju verziju.
    • Raznovrsna podrška za programske jezike i okvire – Bilo da dolazite iz programskog jezika Go, Java ili .Net, Kubernetes podržava mnoge razvojne jezike i okvire. Ako aplikacija može da radi na kontejneru, ona radi i na K8s.
  • Otkrivanje usluge – Svaki programer želi da sve pružene usluge imaju način da međusobno komuniciraju. Međutim, K8s operativni model uključuje kreiranje i uništavanje kontejnera kontinuirano, čineći neke usluge nepostojećim na određenim lokacijama. U tradicionalnom razvoju, registar usluga bi bio prilagođen za praćenje lokacija ovih usluga. K8s rešava ovaj problem kroz koncept izvorne usluge za grupisanje podova i neprimetno otkrivanje usluga. Dakle, K8s obezbeđuje IP adrese za sve podove, dodeljuje DNS imena za svaki set podova, a zatim balansira saobraćaj na svakom skupu podova. Ova arhitektura generiše okruženje u kome se otkrivanje usluge apstrahuje iz svakog kontejnera.
  • Živa zajednica – K8s podržava živahna zajednica sa hiljadama programera koji koriste njegove usluge. U vreme pisanja ovog teksta, preko 100 miliona programera koristi K8s za otkrivanje, doprinoseći 330 miliona projekata. Zajednica ne pokazuje znake usporavanja i podstiče saradnju među programerima.
  • Ograničenja Kubernetesa

  • Strma kriva učenja – Da biste započeli sa Kubernetesom, moraćete da razumete njegov ekosistem. Osim toga, isporuka rešenja od kraja do kraja zahteva uključivanje raznih tehnologija i usluga. A sa dodatnim tehnologijama koje se značajno razlikuju (ponekad, neka rešenja potiču iz vremena u kome je dominirao UNIX, dok su druga nove tehnologije sa niskim stepenom usvajanja), otkrivanje koje treba uključiti može biti otežano. Takođe ćete morati da shvatite kako se sve komponente uklapaju da biste obezbedili sveobuhvatnije rešenje za određene probleme. Dokumentacija je dostupna, ali moraćete da razumete kako da isporučite i upravljate ovim uslugama.
  • Razlikovanje karakteristika i projekata – Razumevanje razlika između projekata i karakteristika može biti izazovno. Iako možete lako da dobijete savete o upravljanju projektima, možda nećete dobiti jasnu razliku između funkcija i projekata zajednice.
  • Znanje izvan Kubernetesa – Kubernetes je sofisticirana platforma. Uz svu ovu složenost u isporuci rešenja, verovatno ćete naići na konfuziju, posebno ako ste novi u tome. Ipak, organizacije i dalje žele da obezbede rešenja (kao što su skladišta podataka kao usluga), povećavajući krivu učenja. Ako koristite takve usluge na svom proizvodu, morate proširiti svoje znanje izvan Kubernetesa.
  • Upravljanje Kubernetesom je teško – doći do proizvodnje sa K8s-om je jedno. Moraćete da obezbedite sve potrebne resurse za vaše aplikacije da biste njime upravljali. Takođe ćete morati da upravljate svom bezbednošću i integrišete je sa svojom infrastrukturom. Takođe, biće vam potrebna određena stručnost na visokom nivou da biste efikasno obrađivali i upravljali njegovim alatima. Moraćete da steknete duboko znanje da upravljate Kubernetes klasterima, nadgledate i rešavate probleme u klasterima i podržavate ih u velikom obimu.
  • Poređenje ECS-a i Kubernetesa

    Evo uporednog poređenja koje pokazuje razlike:

    Tačka razlike Kubernetes Amazon ECS
    Definicija aplikacije Aplikacije se postavljaju kombinovanjem modula, čvorova i usluga. Primena aplikacije ima oblik zadataka. Zadaci su instance kontejnera – na primer, Docker kontejneri koji se pokreću na ECS instancama.
    Deployment Kompleksan jer morate ručno da primenite i konfigurišete klastere. Lako postavljanje preko AWS konzole.
    Podrška za čvorove (broj mašina) 5000 čvorova po klasteru. 1000 čvorova po klasteru.
    Kontejneri Do 300.000 kontejnera po klasteru. Ograničeno iskorišćenim kapacitetom infrastrukture.
    Balansiranje opterećenja Podovi su izloženi kroz usluge koje se koriste kao balanseri opterećenja iza ulaznih kontrolera. Dostupna su dva balansera opterećenja; ELB-Application ili Network.
    Cena Besplatan. ECS je besplatan, ali morate platiti za EC2 resurse.
    Optimizacija Dobro optimizovan za jedan veliki klaster. Unapred konfigurisan sa zahtevima i zahtevima za kontejnere.
    Automatsko skaliranje Vi definišete parametre automatskog skaliranja kada pravite implementacije. Koristite usluge nadgledanja kao što je CloudWatch za automatsko skaliranje na osnovu CPU-a, memorije i prilagođenih parametara.
    Zdravstvena provera Dostupne su dve provere zdravlja: spremnost i živost. Postignuto je putem servisa za praćenje kao što je CloudWatch.
    Otkrivanje usluge Uvedeno preko promenljivih okruženja ili DNS-a. Postignuto kroz usluge nadgledanja – CloudWatch.
    Zaključavanje dobavljača Ne. Da.

    Slučajevi upotrebe ECS-a i Kubernetesa

    Evo kako ECS i Kubernetes tehnologija kontejnerizacije revolucionarno menjaju industrije:

    ECS INC International ističe brojne slučajeve upotrebe u kojima je ECS tehnologija implementirana. U savremenim medicinskim uređajima, naći ćete revolucionarne metode za lečenje pacijenata i tehnike isporuke lekova. Postoje mnogi alati, poput elektronskih inhalatora, medicinskih auto-injektora i infuzionih pumpi.

    U domenu IoT-a imamo pametne kućne uređaje. Ako usmerite pažnju na automobilsku industriju, imamo pametne električne automobile sa poboljšanim iskustvom u vožnji i poboljšanim bezbednosnim merama kao što su sistemi za pomoćno kočenje.

    Za sada, to je samo vrh ledenog brega; možete pogledati više aplikacija ECS-a koje nisu ograničene na bežičnu tehnologiju, uređaje za nošenje i slučajeve industrijske upotrebe.

    Sa druge strane, Kubernetes ima svoj deo praktičnih primena. Prvo, IBM oblak nudi privatne, javne i hibridne funkcionalnosti u širokom opsegu vremena izvršavanja.

    Spotify, gigant na polju striminga muzike, koristi Kubernetes tehnologiju da olakša besprekorne operacije, do 10 miliona zahteva u sekundi. Iako su ovo slučajevi korišćenja u stvarnom svetu, K8s služi više funkcionalnosti u arhitekturi mikroservisa, mrežnim funkcijama koje su izvorne u oblaku, mašinskom učenju i ubrzavanju životnog ciklusa razvoja softvera.

    Završne reči

    Nakon što ste prošli kroz ovaj vodič, imate solidan pregled prednosti i nedostataka izbora za ECS ili K8s. Ključ za odabir prave opcije zasniva se na nekoliko argumenata. Moraćete da izmerite između troškova, ograničenja usluge i troškova talenta.

    Ako želite da koristite besplatnu uslugu, K8s će biti vaš izbor broj jedan. Međutim, biće vam potreban solidan talenat ili veštine da biste se nosili sa složenošću koja dolazi sa tim. Iako K8s nema ograničenja za zaključavanje dobavljača, biće potrebno dubinsko razumevanje načina na koji platforma funkcioniše. ECS je, s druge strane, dobio brze konfiguracije.

    Zatim pogledajte detaljan vodič za Kubernetes protiv Docker-a.