Коју платформу за оркестрацију одабрати

Nomad i Kubernetes su se istakli kao dve vodeće platforme za orkestraciju, nudeći rešenja za dinamička radna opterećenja.

Platforme za orkestraciju omogućavaju automatizaciju konfiguracije, upravljanja i koordinacije različitih aplikacija koje koristite.

I Nomad i Kubernetes pojednostavljuju proces implementacije i administracije kontejnerizovanih aplikacija. Korišćenjem odgovarajuće platforme za orkestraciju, efikasno se upravlja mikrouslugama i kontejnerima – od pronalaženja usluga i implementacije do koordinacije i skaliranja.

Pre donošenja odluke o odgovarajućoj platformi, hajde da detaljnije istražimo Nomad i Kubernetes.

Šta je Nomad?

Nomad, proizvod kompanije HashiCorp, bavi se izazovima orkestracije radnih opterećenja. Fleksibilan je, planira i orkestrira raspoređivanje i upravljanje kontejnerima. Operiše u oblaku i lokalno, a podržava i radna opterećenja koja nisu kontejnerizovana.

Nomad se distribuira kao jednostavna binarna datoteka koju je potrebno pokrenuti. Za razliku od drugih rešenja, ima mali uticaj na resurse i ne zauzima značajnu količinu računarske snage vaših servera. Pored kontejnera, može se koristiti za pokretanje raznih radnih opterećenja, uključujući Windows, Java, virtuelne mašine i Docker.

Omogućava implementaciju i upravljanje poslovnim kontejnerima u produkcionom okruženju. Takođe, omogućava pokretanje aplikacija koje nisu kontejnerizovane na Nomad klasteru, bez potrebe za njihovom kontejnerizacijom. Korišćenjem Nomada, možete jednostavno smanjiti obim i približiti vaše aplikacije geografski mestima gde se nalaze vaši korisnici. Takođe, omogućava efikasno pokretanje kratkoročnih grupnih zadataka.

Nomad je dostupan u dve verzije: Community Edition i Enterprise Edition. Community Edition je besplatan i pruža mogućnost samostalnog upravljanja Nomad klasterom. Može se pokrenuti lokalno ili u oblaku za samo 15 minuta. Enterprise Edition nudi podršku i dodatne funkcije, kao što su kolaboracija, operacije i upravljanje.

Šta je Kubernetes?

Kubernetes je platforma za orkestraciju koja je proširiva, prenosiva i visoko efikasna. Poznat i kao K8s, inicijalno ga je razvio Google. Trenutno, njime upravlja Cloud Native Computing Foundation (CNCF) i predstavlja najpopularniju platformu za orkestraciju.

Kubernetes omogućava efikasno premeštanje radnih opterećenja gde god je potrebno – lokalno, u javnom oblaku ili u hibridnom režimu. Njegov cilj je da obezbedi sve potrebne alate za rešavanje problema orkestracije i upravljanja infrastrukturom.

Ovo je ubedljivo najpopularnija platforma za orkestraciju. Vodeći provajderi cloud usluga, kao što su Amazon Web Services i Google Cloud Platform, pružaju upravljane Kubernetes usluge – Amazon Elastic Kubernetes Service (AWS EKS) i Google Kubernetes Engine (GKE), respektivno.

Takođe pročitajte: Početak rada sa Kubernetesom: Uvod za početnike

Ali koji odabrati za svoje potrebe orkestracije? Pogledajmo poređenje ova dva rešenja.

Nomad protiv Kubernetesa

#1. Instalacija

Prvi korak u korišćenju softverskih alata i tehnologija je instalacija. Stoga, lakoća instalacije igra važnu ulogu. Kada birate između Nomada i Kubernetesa, potrebno je razmotriti koliko je jednostavno započeti sa svakim od njih.

Nomad

Za Nomad se dobija unapred kompajlirana binarna datoteka ili paket koji treba instalirati. Za ručnu instalaciju na lokalnoj mašini, može se preuzeti i instalirati zvanični binarni program. Za Linux korisnike, dostupan je zvanični Linux paket. U svakom slučaju, nakon instalacije, potrebno je instalirati CNI (Container Network Interface) dodatke direktno preko komandne linije.

Još jednostavnije je instaliranje na macOS ili Windows platformama koristeći alate za upravljanje paketima, kao što su Homebrew i Chocolatey. Jednom komandom, instalacija je završena, uključujući CNI dodatke.

Kubernetes

Kada je reč o Kubernetesu, postoji više komponenti i klijenata koji se mogu instalirati u zavisnosti od potreba. Za svaku od njih se dobijaju binarne datoteke. Postoje različite slike kontejnera za različita vremena izvršavanja i sistemske arhitekture.

Možete pogledati zvanični repozitorijum za zvaničnu binarnu datoteku koja odgovara vašoj platformi, bilo da je u pitanju Darwin, Linux ili Windows, i arhitekturi vašeg sistema. Nakon instaliranja odgovarajuće slike kontejnera, biće potreban kubectl – alatka komandne linije za interakciju sa kontejnerima.

#2. Prilagodljivost

Skalabilnost je ključan faktor za radna opterećenja kontejnera. Određuje sposobnost sistema da se nosi sa rastućim opterećenjem. Drugim rečima, ako je potrebno više računarske snage, platforma za orkestraciju treba da bude u mogućnosti da jednostavno doda nove resurse.

Nomad

Nomad je dokazao da može pokretati klastere sa preko 10.000 čvorova u produkcionom okruženju. Godine 2020, Nomad je uspešno završio test opterećenja sa 2 miliona Docker kontejnera na 6.100 hostova. Ovo je uključivalo više od 10 različitih AWS regiona i trajalo je 22 minuta. Ovo je nadmašilo njihov prethodni uspeh sa 1 milionom kontejnera.

Nomad takođe nudi horizontalno automatsko skaliranje uz Nomad Autoscaler. Ovo se može pokrenuti kao poseban proces kada je potrebno.

Kubernetes

Od verzije 1.28, Kubernetes omogućava skaliranje klastera do 5.000 čvorova. Može se pokrenuti ukupno 150.000 podova ili 300.000 kontejnera.

Iako Kubernetes omogućava visoku skalabilnost, održavanje klastera je komplikovanije u poređenju sa upravljanjem Nomad klasterom. Nomad pruža prednost u broju čvorova koji mogu biti pokrenuti.

#3. Performanse

Pri odabiru platforme za orkestraciju, potrebno je težiti ravnoteži između funkcija i performansi. Performanse platforme za orkestraciju takođe određuju koliko sistemskih resursa će se koristiti.

Nomad

Nomad ima mali uticaj na resurse zahvaljujući svom jedno-binarnom pristupu. Takođe, izbegava se instalacija zasebnih usluga za pokretanje platforme za orkestraciju. Kao rezultat, troši se manje CPU-a i memorije na čvorovima, što rezultira nižim troškovima i boljim performansama.

Veoma je prilagodljiv i može se nositi sa različitim radnim opterećenjima, kako u lokalnom okruženju tako i u oblaku. Uz jednostavnost, otpornost i efikasnost, Nomad održava dobre performanse kako klaster raste.

Kubernetes

Kubernetes je visoko optimizovan za kontejnerizovana radna opterećenja. Ako koristite mikrousluge bazirane na kontejnerima, Kubernetes je odličan u njihovom upravljanju. Uz opsežne mogućnosti umrežavanja i širok spektar integracija, možete ubrzati i fino podesiti potrebe orkestracije.

Zbog opsežnog skupa funkcija i konfiguracija, Kubernetes koristi više sistemskih resursa. Kako veličina klastera raste, mogu se pojaviti dodatni troškovi i komplikacije u upravljanju.

#4. Umrežavanje

Umrežavanje je važan aspekt orkestracije kontejnera. Ono određuje kako čvorovi lociraju i komuniciraju jedni sa drugima.

Nomad

Nomad je fokusiran na orkestraciju radnih opterećenja, i minimalno se bavi umrežavanjem i pokušava da što manje modifikuje stvari.

Umesto da se oslanja na infrastrukturu, Nomad radi sa konfiguracijama. Potrebne informacije se dobijaju direktno iz konfiguracije, umesto pokretanja dodatnih komponenti, kao što su DNS serveri ili balanseri opterećenja. Osnovna jedinica za planiranje u Nomadu, nazvana Alokacija, može zahtevati portove koristeći mrežni blok.

Kubernetes

U Kubernetesu, umrežavanje je centralni stub. Može se kontrolisati komunikacija kontejner-kontejner preko lokalnog hosta, komunikacija pod-pod, komunikacija pod-usluga i trajna komunikacija između usluga.

Za razliku od dinamičkih portova u Nomadu, Kubernetes ima drugačiji pristup. Koristi se Service API kao apstrakcija za izlaganje grupe podova mreži.

#5. Zahtevi

Ako se platforma za orkestraciju koristi u velikom obimu, sistemski zahtevi će zavisiti od veličine klastera i radnih opterećenja koja se pokreću. Pored CPU-a i memorije, biće potrebni i mrežni resursi.

Nomad

Za produkcione servere, preporučuje se rad na velikim instancama mašina. Svaka instanca servera treba da ima između 4-8+ CPU jezgra, 16-32 GB+ memorije i 40-80 GB+ brzog diska. Takođe je potrebno obezbediti značajan mrežni propusni opseg.

Ukoliko se koristi zaštitni zid, potrebno je osigurati da su 3 porta za Nomad dostupna. Tri porta su: HTTP API (podrazumevano 4646) koji koriste serveri i klijenti, RPC (podrazumevano 4647) koji se koristi za internu komunikaciju i Serf WAN (podrazumevano 4648) koji koriste serveri za komunikaciju sa drugim serverima.

Kubernetes

Kubernetes klasteri mogu postati veoma složeni kada rade u visoko kontejnerizovanim produkcionim okruženjima. Preporučuje se da svaki čvor ima najmanje 2-4 CPU jezgra i 8-16 GB RAM-a.

Za velike klastere, može biti potrebno više resursa po čvoru. Osim toga, neophodno je obezbediti dovoljan mrežni propusni opseg.

Iako se Nomad i Kubernetes mogu skalirati kako bi odgovorili na zahtevima, Kubernetes klaster bi zahtevao više resursa u poređenju sa Nomadom.

#6. Kodiranje

Jednostavnost kodiranja određuje koliko se efikasno može komunicirati sa odabranim okvirom. Pored definisanja platforme i poslova, potrebno je naučiti CLI komande za interakciju sa alatom komandne linije.

Nomad

HCL (HashiCorp Configuration Language) je primarni konfiguracioni jezik koji se koristi u Nomadu. Cilj HCL-a je da uspostavi ravnotežu između čitljivog i mašinskog pristupa. Korišćenjem HCL-a mogu se pisati specifikacije poslova, uključujući zadatke, ograničenja i zavisnosti za aplikaciju i usluge.

Pored HCL-a, potrebno je naučiti CLI komande za Nomad alatku komandne linije. Ovo omogućava interakciju sa Nomad klasterom i kreiranje konfiguracija.

Kubernetes

Umesto oslanjanja na drugi jezik, Kubernetes se može konfigurisati pomoću YAML datoteka. Takođe se može koristiti i JSON. Ove konfiguracione datoteke omogućavaju opisivanje kako aplikacija treba da radi, uključujući specifikacije za module, usluge, implementacije i druge resurse.

Za složene Kubernetes aplikacije, Helm je menadžer paketa koji omogućava definisanje, instaliranje i nadogradnju čak i složenih Kubernetes aplikacija. Helm grafikoni su napisani u YAML-u i mogu sadržati šablone i datoteke vrednosti za prilagođavanje implementacije.

Za interakciju sa Kubernetes klasterom koristi se alatka komandne linije kubectl. Ovo uključuje pokretanje različitih komandi za kreiranje, modifikovanje i upravljanje Kubernetes resursima.

#7. Integracija

Platforme za orkestraciju imaju sopstvene integracije koje podržavaju. Takođe se mogu dodati integracije nezavisnih proizvođača da bi se proširio skup funkcija.

Nomad

Nomad omogućava aktivnu integraciju sa različitim alatima i tehnologijama. Besprekorno se povezuje sa Dockerom i drugim vremenima izvršavanja kontejnera, pojednostavljujući primenu kontejnerizovanih aplikacija. Za obezbeđivanje infrastrukture, može se koristiti integracija sa Terraform-om za pojednostavljenje kreiranja resursa.

Kao deo HashiCorp ekosistema, Nomad omogućava saradnju sa HashiCorp Consul-om za otkrivanje usluga i zdravstvene provere, dok HashiCorp Vault obezbeđuje sigurno upravljanje tajnama. Potrebe za praćenjem se mogu zadovoljiti kroz integracije kao što su Prometheus, Grafana i ELK Stack. Takođe, Nomad se neprimetno uklapa u CI/CD cevovode, omogućavajući automatizovanu implementaciju aplikacija.

Kubernetes

Kao vremenom provereno rešenje, Kubernetes nudi dugu listu tehnologija za integraciju. Može se povezati sa Dockerom za primenu kontejnera. Za potrebe umrežavanja, mogu se koristiti rešenja kao što su Calico ili Cilium. Mogućnosti skladištenja, kao što su Ceph i cloud-native provajderi kao što su AWS EKS i Google GKE, aktivno upravljaju trajnim skladištenjem. Rešenja zasnovana na oblaku takođe pružaju dodatne usluge.

Ako je potrebna podrška za radna opterećenja bez servera, Kubernetes je takođe rešenje. Mogu se proširiti Kubernetes okviri bez servera kao što su Knative i KEDA (Kubernetes-based Event Driven Autoscaling).

#8. GUI

Ponekad se javlja potreba da se udaljite od komandne linije i koda i da vizualizujete platformu koju koristite. Za to se koristi GUI ili grafički korisnički interfejs.

Nomad

Nomad ima ugrađen web korisnički interfejs kao deo binarne datoteke. Kada se instalira Nomad i pokrene server, dobija se GUI zajedno sa API-jem i CLI. Za početak korišćenja korisničkog interfejsa i pregled klastera nije potrebna dodatna konfiguracija.

Kada se pokrene Nomad server, može se uneti adresa servera u web pretraživač. Bićete preusmereni na web korisnički interfejs. Takođe, postoji podkomanda korisničkog interfejsa, tako da se željena web stranica može posetiti direktno iz interfejsa komandne linije.

Kubernetes

Kubernetes po defaultu nema GUI. Međutim, može se instalirati u zavisnosti od potreba. Sam Kubernetes nudi zvanični korisnički interfejs pod nazivom Dashboard. Iako nije instaliran po defaultu, može se pokrenuti pomoću alata kubectl. Korišćenjem Dashboard-a, može se dobiti pregled klastera.

Možete implementirati kontejnerizovane aplikacije u Kubernetes klaster, upravljati njima i rešavati eventualne probleme. Provajderi u oblaku, kao što su AWS EKS i Google GKE, pružaju sopstvene alate korisničkog interfejsa. Takođe, postoje i alati trećih strana koje se mogu koristiti.

Nomad protiv Kubernetesa: Tabela sažetka

Funkcionalnost Nomad Kubernetes
Instalacija Jedna unapred kompajlirana binarna datoteka Različite binarne datoteke za različite komponente i klijente
Skalabilnost Može pokretati 10.000 čvorova i 2 miliona kontejnera 5.000 čvorova i ukupno 300.000 kontejnera
Performanse Jednostavan i efikasan sa manjim zahtevima za resursima Opsežna funkcionalnost, zahteva više sistemskih resursa
Umrežavanje Fokusiran na konfiguracije, ne oslanja se na dinamičke portove Dinamička kontrola mreže, oslanja se na Service API
Zahtevi Manji sistemski zahtevi za veći klaster Veći klaster zahteva više sistemskih resursa
Kodiranje Koristi HCL (HashiCorp Configuration Language) Može koristiti postojeće jezike kao što su YAML i JSON
Integracija Dobre zvanične integracije i integracije nezavisnih proizvođača Veoma širok spektar integracija i dostupnih alata
GUI Ugrađen web korisnički interfejs Potrebno je instalirati odvojeno

Izaberite pravu platformu za vaše potrebe orkestracije

Izbor između Nomada i Kubernetesa zavisi od specifičnih zahteva i prioriteta. Obe platforme podržavaju različite slučajeve upotrebe – zakazivanje implementacije, automatizovano uvođenje i oporavak, kao i otkrivanje i upravljanje klasterima.

Ukoliko je prioritet jednostavnost i imate manji obim posla, Nomad je bolji izbor. Sa svojim jednim binarnim fajlom i minimalnim zahtevima za resursima, Nomad olakšava podešavanje i rad. Pored toga, omogućava skaliranje klastera za podršku velikom broju čvorova.

Sa druge strane, ako su potrebne opsežne funkcije, detaljna kontrola i širok spektar integracija, Kubernetes je odgovor. On pruža robusno rešenje za radna opterećenja u kontejnerima i može se neprimetno integrisati sa različitim alatima i tehnologijama. Takođe, mogu se koristiti rešenja koja nude AWS i Google Cloud.

Potrebno je uzeti u obzir i ostale faktore, kao što je potreba za učenjem novog jezika (HCL) u slučaju Nomada, dok Kubernetes konfiguracije rade sa YAML ili JSON. Takođe, može biti potreban i web korisnički interfejs za lakše korišćenje.

Važno je uzeti u obzir i dostupne sistemske resurse, kao i povezane troškove. Odabir između Nomada i Kubernetesa treba da bude zasnovan na potrebama, stručnosti i resursima.

Zatim pogledajte najbolje prakse za Kubernetes za bolju orkestraciju kontejnera.