Hajde da se posvetimo razgovoru o nekim od vodećih alata za orkestraciju kontejnera koji su trenutno dostupni na tržištu.
Šta je orkestracija kontejnera?
Kontejnerske platforme, kao što je Docker, postale su izuzetno popularne za pakovanje aplikacija koje su zasnovane na arhitekturi mikroservisa. Kontejneri se mogu dizajnirati tako da budu visoko skalabilni i da se kreiraju po potrebi. Iako je ovo odlično za nekoliko kontejnera, zamislite da ih imate na stotine.
Postaje izuzetno izazovno upravljati životnim ciklusom kontejnera i njihovim resursima kada se broj kontejnera dinamički povećava u skladu sa zahtevima.
Orkestracija kontejnera rešava ovaj problem automatizacijom raspoređivanja, implementacije, skalabilnosti, balansiranja opterećenja, dostupnosti i umrežavanja kontejnera. Orkestracija kontejnera, u suštini, predstavlja automatizaciju i upravljanje životnim ciklusom kontejnera i usluga.
To je proces upravljanja i organizovanja mnoštva kontejnera i mikroservisne arhitekture u velikim razmerama.
Srećom, na tržištu postoji veliki broj alata za orkestraciju kontejnera.
Hajde da ih istražimo!
Kubernetes
Pogodili ste, zar ne?
Kubernetes je platforma otvorenog koda koju je prvobitno razvio Google, a sada je održava Cloud Native Computing Foundation. Kubernetes podržava i deklarativnu konfiguraciju i automatizaciju. Može pomoći da se automatizuje implementacija, skaliranje i upravljanje kontejnerskim radnim opterećenjima i uslugama.
Slika sa Kubernetes.io
Kubernetes API omogućava komunikaciju između korisnika, komponenti klastera i spoljnih komponenti treće strane. Kontrolna ravan i čvorovi Kubernetes-a funkcionišu na grupi čvorova koji zajednički čine klaster. Radno opterećenje aplikacije sastoji se od jednog ili više Podova koji se pokreću na radnim čvorovima. Kontrolna ravan upravlja Podovima i radnim čvorovima.
Kompanije kao što su Babylon, Booking.com i AppDirect intenzivno koriste Kubernetes.
Karakteristike:
- Otkrivanje usluga i balansiranje opterećenja
- Orkestracija skladištenja
- Automatsko vraćanje i obnavljanje
- Horizontalno skaliranje
- Upravljanje tajnama i konfiguracijom
- Samoizlečenje
- Batch izvršenje
- IPv4/IPv6 dual-stack
- Automatsko pakovanje u kantu
Želite da naučite Kubernetes? Pogledajte ove resurse za učenje.
OpenShift
Red Hat nudi OpenShift, platformu za kontejnere kao uslugu (PaaS). Ona pomaže u automatizaciji aplikacija na sigurnim i skalabilnim resursima u hibridnom cloud okruženju. Pruža platformu za preduzeća za izgradnju, implementaciju i upravljanje kontejnerskim aplikacijama.
Slika sa OpenShift
Izgrađen je na Red Hat Enterprise Linux i Kubernetes motoru. OpenShift nudi različite funkcionalnosti za upravljanje klasterima putem korisničkog interfejsa i CLI-a. Red Hat takođe pruža OpenShift u dve druge varijante:
- OpenShift Online – nudi se kao softver kao usluga (SaaS)
- OpenShift Dedicated – nudi se kao upravljane usluge
OpenShift Origin (Origin Community Distribution) je upstream open-source projekat zajednice koji se koristi u OpenShift Container Platform, OpenShift Online i OpenShift Dedicated.
Nomad
Nomad je jednostavan, fleksibilan i lako upotrebljiv orkestrator radnog opterećenja za primenu i upravljanje kontejnerima i nekontejnerizovanim aplikacijama na lokalnim platformama i u cloud-u, u velikom obimu. Nomad funkcioniše kao jedan binarni fajl sa malim resursnim otiskom (35 MB) i podržan je na macOS-u, Windows-u i Linux-u.
Programeri koriste deklarativnu infrastrukturu kao kod (IaC) za primenu svojih aplikacija i definišu kako aplikacija treba da se primeni. Nomad automatski obnavlja aplikacije od neuspeha.
Slika Nomad-a
Nomad orkestrira aplikacije bilo koje vrste (ne samo kontejnere). Pruža prvoklasnu podršku za Docker, Windows, Java, VM-ove i mnoge druge.
Karakteristike:
- Jednostavan i pouzdan
- Modernizujte starije aplikacije bez prepisivanja
- Lako udruživanje u razmeri
- Dokazana skalabilnost
- Multi-cloud sa lakoćom
- Izvorne integracije sa Terraform-om, Consul-om i Vault-om
Docker Swarm
Docker Swarm koristi deklarativni model. Možete definisati željeno stanje usluge, a Docker će to stanje održavati. Docker Enterprise Edition je integrisao Kubernetes sa Swarm-om. Docker sada pruža fleksibilnost u izboru mehanizma orkestracije. Docker engine CLI se koristi za kreiranje roja Docker motora gde se mogu primeniti usluge aplikacija.
Slika Docker-a
Docker komande se koriste za interakciju sa klasterom. Mašine koje se pridružuju klasteru poznate su kao čvorovi, a Swarm menadžer upravlja aktivnostima klastera.
Docker Swarm se sastoji od dve glavne komponente:
- Menadžer – menadžerski čvorovi dodeljuju zadatke radnim čvorovima u roju. Vođa se bira na osnovu konsenzusnog Raft algoritma. Vođa upravlja svim odlukama o upravljanju rojem i orkestraciji zadataka za roj.
- Radni čvor – radni čvor prima zadatke od čvora menadžera i izvršava ih.
Karakteristike:
- Upravljanje klasterom integrisano sa Docker Engine-om
- Decentralizovan dizajn
- Deklarativni model usluge
- Skaliranje
- Željeno pomirenje stanja
- Multi-host umrežavanje
- Otkrivanje usluge
- Balansiranje opterećenja
- Sigurno po default-u
- Rolling updates
Docker Compose
Docker Compose služi za definisanje i pokretanje aplikacija sa više kontejnera koji rade zajedno. Docker-compose opisuje grupe međusobno povezanih usluga koje dele softverske zavisnosti i koje se orkestriraju i skaliraju zajedno.
Možete da koristite YAML datoteku (dockerfile) da biste konfigurisali usluge vaše aplikacije. Zatim, pomoću komande `docker-compose up`, kreirate i pokrećete sve usluge iz vaše konfiguracije.
`docker-compose.yml` datoteka izgleda ovako:
version: '3' volumes: app_data: services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0 ports: - 9200:9200 - 9300:9300 volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data kibana: depends_on: - elasticsearch image: docker.elastic.co/kibana/kibana:6.8.0 ports: - 5601:5601 volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml app: depends_on: - elasticsearch image: asadali08527/app:latest ports: - 8080:8080 volumes: - app_data:/var/lib/app/
Možete da koristite Docker Compose da ugradite kod aplikacije u nekoliko nezavisnih servisa koji komuniciraju pomoću interne mreže. Alat obezbeđuje CLI za upravljanje celim životnim ciklusom vaših aplikacija. Docker Compose je tradicionalno bio fokusiran na razvoj i testiranje radnih tokova, ali sada se fokusira na funkcije koje su više orijentisane na proizvodnju.
Docker Engine može biti samostalna instanca sa Docker Machine-om ili ceo Docker Swarm klaster.
Karakteristike:
- Više izolovanih okruženja na jednom hostu
- Sačuvajte podatke o zapremini kada se kreiraju kontejneri
- Ponovo kreirajte samo kontejnere koji su se promenili
- Promenljive i premeštanje kompozicije između okruženja
Minikube
Minikube omogućava korisnicima da lokalno pokreću Kubernetes. Uz Minikube, možete lokalno testirati aplikacije unutar Kubernetes klastera sa jednim čvorom na vašem ličnom računaru. Minikube ima integrisanu podršku za Kubernetes Dashboard.
Minikube pokreće najnoviju stabilnu verziju Kubernetes-a i podržava sledeće funkcije:
- Balansiranje opterećenja
- Multi-cluster
- Persistent Volumes
- NodePorts
- ConfigMaps i Secrets
- Vreme izvršavanja kontejnera: Docker, CRI-O i container
- Omogućavanje CNI (interfejs mreže kontejnera)
Marathon
Marathon je za Apache Mesos koji ima mogućnost da orkestrira aplikacije, kao i okvire.
Apache Mesos je menadžer klastera otvorenog koda. Mesos je projekat kompanije Apache koji ima sposobnost da pokreće i kontejnerizovana i nekontejnerizovana radna opterećenja. Glavne komponente u Mesos klasteru su Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Frameworks koordinira sa masterom kako bi rasporedio zadatke na čvorovima agenta. Korisnici komuniciraju sa Marathon okvirom kako bi zakazali poslove.
Marathon planer koristi ZooKeeper da locira trenutnog mastera za podnošenje zadataka. Marathon planer i Mesos master imaju sekundarno glavno pokretanje kako bi se osigurala visoka dostupnost. Klijenti komuniciraju sa Marathon-om koristeći REST API.
Karakteristike:
- Visoka dostupnost
- Stateful apps
- Lep i moćan korisnički interfejs
- Ograničenja
- Otkrivanje usluga i balansiranje opterećenja
- Zdravstveni pregledi
- Pretplata na događaj
- Metrike
- REST API-ji
Cloudify
Cloudify je orkestracijski alat otvorenog koda za automatizaciju primene i upravljanje životnim ciklusom kontejnera i mikroservisa. Pruža funkcionalnosti kao što su klasteri na zahtev, automatsko lečenje i skaliranje na nivou infrastrukture. Cloudify može da upravlja infrastrukturom kontejnera i orkestrira usluge koje rade na kontejnerskim platformama.
Može se lako integrisati sa Docker-om i menadžerima kontejnera zasnovanim na Docker-u, uključujući sledeće:
- Docker
- Docker Swarm
- Docker Compose
- Kubernetes
- Apache Mesos
Cloudify može pomoći u kreiranju, lečenju, skaliranju i rušenju klastera kontejnera. Orkestracija kontejnera je ključna u obezbeđivanju skalabilne i visoko dostupne infrastrukture na kojoj menadžeri kontejnera mogu da rade. Cloudify pruža mogućnost orkestriranja heterogenih usluga na različitim platformama. Možete da primenite aplikacije koristeći CLI i Cloudify Manager.
Rancher
Rancher je platforma otvorenog koda koja koristi orkestraciju kontejnera poznatu kao stoka. Omogućava vam da iskoristite usluge orkestracije kao što su Kubernetes, Swarm, Mesos. Rancher obezbeđuje softver potreban za upravljanje kontejnerima, tako da organizacije ne moraju da grade platforme kontejnerskih usluga od nule koristeći poseban skup tehnologija otvorenog koda.
Rancher 2.x omogućava upravljanje Kubernetes klasterima koji rade na dobavljačima koje je odredio korisnik.
Početak rada sa Rancher-om je proces u dva koraka:
Pripremite Linux host
Pripremite Linux host sa 64-bitnim Ubuntu 16.04 ili 18.04 (ili drugom podržanom Linux distribucijom) i najmanje 4 GB memorije. Instalirajte podržanu verziju Docker-a na hostu.
Pokrenite server
Da biste instalirali i pokrenuli Rancher, izvršite sledeću Docker komandu na svom hostu:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Korisnički interfejs Ranchera omogućava upravljanje hiljadama Kubernetes klastera i čvorova.
Containership
Containership je namenjen za omogućavanje postavljanja i upravljanja Kubernetes infrastrukturom u više cloud-ova. Fleksibilan je za rad u javnom, privatnom cloudu i lokalnim okruženjima iz jednog alata. Omogućava obezbeđivanje, upravljanje i praćenje vaših Kubernetes klastera kod svih glavnih provajdera cloud-a.
Containership je izgrađen pomoću alata koji su nativni za cloud, kao što su Terraform za obezbeđivanje, Prometheus za nadgledanje i Calico za umrežavanje i upravljanje politikama. Izgrađen je na vrhu vanilla Kubernetes-a. Platforma Containership nudi intuitivnu kontrolnu tablu, kao i moćan REST API za kompleksnu automatizaciju.
Karakteristike:
- Multicloud Dashboard
- Dnevnici revizije
- Podrška za GPU instance
- Nadogradnje bez prekida
- Planirani Masters
- Integrisana metrika
- Realtime Logging
- Primene bez zastoja
- Podrška za trajno skladištenje
- Podrška privatnom registru
- Automatsko skaliranje radnog opterećenja
- Upravljanje SSH ključevima
AZK
AZK je alatka za orkestraciju otvorenog koda za razvojna okruženja putem manifest datoteke (Azkfile.js), koja pomaže programerima da instaliraju, konfigurišu i pokreću najčešće korišćene alate za razvoj web aplikacija sa različitim tehnologijama otvorenog koda.
AZK koristi kontejnere umesto virtuelnih mašina. Kontejneri su poput virtuelnih mašina, sa boljim performansama i manjom potrošnjom fizičkih resursa.
Azkfile.js datoteke se mogu ponovo koristiti za dodavanje novih komponenti ili kreiranje novih od nule. Mogu se deliti, što obezbeđuje potpun paritet među razvojnim okruženjima na mašinama različitih programera i smanjuje šanse za greške tokom primene.
GKE
GKE pruža potpuno upravljano rešenje za orkestraciju kontejnerskih aplikacija na Google Cloud platformi. GKE klastere pokreće Kubernetes. Možete da komunicirate sa klasterima koristeći Kubernetes CLI. Kubernetes komande se mogu koristiti za implementaciju i upravljanje aplikacijama, obavljanje administrativnih zadataka, postavljanje smernica i nadgledanje zdravlja raspoređenih radnih opterećenja.
Slika GCP-a
Napredne funkcije upravljanja Google Cloud-a takođe su dostupne sa GKE klasterima, kao što su Google Cloud balansiranje opterećenja, skupovi čvorova, automatsko skaliranje čvorova, automatske nadogradnje, automatska popravka čvorova, evidentiranje i nadgledanje pomoću operativnog paketa Google Cloud-a.
Google Cloud obezbeđuje CI/CD alatke koje vam pomažu da napravite i opslužujete kontejnere za aplikacije. Možete da koristite Cloud Build za pravljenje slika kontejnera (kao što je Docker) iz raznih skladišta izvornog koda i Container Registry za skladištenje slika kontejnera.
GKE je rešenje spremno za preduzeća sa unapred napravljenim šablonima za primenu.
Zainteresovani ste za učenje GKE? Pogledaj ovo početni kurs.
AKS
AKS je potpuno upravljana Kubernetes usluga koju nudi Azure, koja nudi Kubernetes bez servera, bezbednost i upravljanje. AKS upravlja vašim Kubernetes klasterom i omogućava vam da lako primenite kontejnerske aplikacije. AKS automatski konfiguriše sve Kubernetes master i čvorove. Potrebno je samo da upravljate i održavate agentske čvorove.
Slika sa Azure
AKS je besplatan; plaćate samo za čvorove agenta unutar vašeg klastera, a ne za mastere. Možete da kreirate AKS klaster na Azure portalu ili programski. Azure takođe podržava dodatne funkcije kao što su napredno umrežavanje, integracija Azure Active Directory-a i nadgledanje pomoću Azure Monitora.
AKS takođe podržava Windows Server kontejnere. Njegove performanse klastera i primenjene aplikacije mogu se nadgledati iz Azure Monitora. Evidencije se čuvaju u radnom prostoru Azure Log Analytics.
AKS je sertifikovan kao kompatibilan sa Kubernetes-om.
AWS EKS
AWS EKS je Kubernetes usluga kojom se u potpunosti upravlja. AWS vam omogućava da pokrenete svoj EKS klaster koristeći AWS Fargate, koji je računar bez servera za kontejnere. Fargate uklanja potrebu za obezbeđivanjem i upravljanjem serverima, omogućavajući plaćanje po resursu po aplikaciji.
AWS omogućava korišćenje dodatnih funkcija sa EKS-om kao što su Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, grupe za automatsko skaliranje i upravljanje pristupom (IAM), aplikacije za praćenje, skaliranje i balansiranje opterećenja. EKS se integriše sa AWS App mesh i pruža Kubernetes izvorno iskustvo. EKS koristi najnoviji Kubernetes i sertifikovan je za Kubernetes.
Zaključak
Nadam se da je gornja lista pružila jasno razumevanje različitih alata za orkestraciju kontejnera, i da će sada, u zavisnosti od slučaja upotrebe, biti lakše odabrati najbolji.
Zatim, saznajte više o softveru za upravljanje Kubernetes-om.