
Docker vs Kubernetes
I dalje je često pitanje koja je razlika između Docker-a i Kubernetes-a, a pre nego što krenemo u detalje, navešćemo par osnovnih stvari koje treba imati na umu:
- Docker i Kubernetes nisu rešenja između koji se mora birati, već mogu da rade odvojeno, a i zajedno
- Docker je grupa alatki koje olakšavaju build-ovanje i deljenje container image-a, kao i pokretanje container-ima i na manjoj i većoj skali
- Kubernetes je alatka kojom upravljate container-based aplikacije na klasteru servera.
Šta su container-i?
Container je način da pokrenete neku aplikaciju izolovanu od ostalih aplikacija na računaru/serveru.
Šta je docker?
Docker je u stvari kompanija koja pravi open source alatke kojima je cilj da olakšaju rad sa aplikacijama u container-ima.
Docker obećava mogućnost da se aplikacije i njihovi dependency-ji spakuju u „lake“ container-e koji se potom mogu bez većih problema migrirati između različitih distribucija, brzo pokrenuti i izolovani su međusobno.
Docker karakteristike i alatke
Na Linux sistemima je i od ranije bilo moguće kreirati container-e i contaniner-izovane aplikacije, ali nije bilo najjasnije koristiti ih.
Docker je developerima olakšao rad i razumevanje container-a kreiranjem nekih od korsnik alatki:
- Docker engine – alatka za komandnu liniju (docker) koja kreira i pokreće container-e
- Docker container image format – koristi se za kreiranje i deljenje container image-a
- Dockerfile – jezik za izradu container image-a
- Docker hub – online registar za objavljivanje i deljenje container image-a na internetu
- Docker Compose – jednostavan način za deljenje instrukcija za podešavanje container-a
- Docker Swarm mode – alatka za upravljanje container-ima koji su pokrenuti na više servera.
Šta može da se radi sa Docker-om?
Neke od stvari koje možete raditi sa Docker-om:
- Kreiranje container image-a (Docker image-a) za vaše aplikacije pomoću docker build i Dockerfile-a
- Pokretanje sopstvenih container image-a pomoću Docker Engine-a
- Deljenje image-a sa kolegama ili drugim timovima push-ovanjem istih u privatni image registar
- Pokretanje third-party container-a kao što su baze podataka koristeći image-e pull-ovane sa Docker hub-a
- Pokretanje multi-container aplikacija pomoću Docker Compose-a.
Pored ovoga, tu je i već pomenuti Docker Swatm mode alatka koja služi za upravljanje cluster-om Docker instanci.
Kada smo malo objasnili šta je Docker, vreme je da pređemo na Kubernetes.
Šta je Kubernetes?
Ako je docker run način da pokrenete containere na vašem računaru, Kubernetes je kao robot koji pokreće docker run na desetinama ili stotinama servera.
Kubernetes je server-side software za upravljanje containerima i pomoću njega možete više servera da pretvorite u potpun, privatan cloud. On automatizuje sve zadatke koji oduzimaju previše vremena, kao što su kreiranje container-a, postavljanje istih na server, konfigurisanje container-a, provera zdravlja container-a i upravljanje pristupom resursima kao što su CPU i memorija. Ovo Kubernetes stavlja u kategoriju software-a zvanu container orchestration tools.
Kubernetes radi slično Docker Swarm-u, ali ipak postoje razlike, a o njima ćemo pričati kasnije u ovom tekstu.
Kubernetes sakriva detalje vaših servera i umesto toga daje standardan API za deploy-ovanje software-a na cluster. Kao developer ili sysadmin, ne deploy-ujete vaše container-based aplikacije na specifičan „server“ već date Kubernetes-u neke instrukcije i on dalje odlučuje gde da pull–uje container image i pokrene container.
Kubernetes karakteristike i alatke
Kubernetes pruža set „primitives-a“ koji su kao graditeljski blokovi za kreiranje aplikacija.
Neke od karakteristika i alatki Kubernetes-a su:
- Container scheduling – određuje gde da stavi neki container na osnovu informacija o opterećenju servera
- Container management – startovanje, stopiranje i restart container-a
- Auto-scaling containers – startuje više container-a po potrebi. Na primer, ako neka aplikacija iznenadno ima mnogo više poseta nego inače, Kubernetes će startovati više container-a da bi se rasteretilo opterećenje. Takođe će i stopirati te dodatne container-e kada bude trebalo, tako da se ne troše resursi bez potrebe.
- Networking – kreiranje i upravljanje mrežom kako bi se omogućila komunikacija između container-a i load balancing sobraćaja preko više instanci vaše aplikacije
- Storage – upravljanje pristupom disku za container-e koji treba da pišu fajlove
- Logs and monitoring – olakšava sakupljanje logova sa container-a prati zdravlje container-a
- Security – postavljanje pravila i sprovođenje bezbednosnih restrikcija na container-ima.
Plus, Kubernetes je poprilično proširiv. Može da se menja način na kom mrežni sloj radi, možete da povežete svoj Kubernetes cluster sa vašim cloud nalogom tako da je moguće povući više resursa po potrebi.
Šta može da se radi sa Kubernetes-om?
Nakon što ste kreirali i osposobili svoj Kubernetes cluster, šta raditi sa njim?
- Deploy-ovanje vaših container-based aplikacija
- Deploy-ovanje third-party container-based aplikacija, kao što su baze podataka ili web aplikacije
- Povezivanje vaših aplkacija međusobno – primer, tako da vaš back.end API može da komunicira sa bazom ili da poveže mnoge container-e zajedno u arhitekturu mikroservisa
- Ažuriranje aplikacija tako što stopira postojeći container i startuje novi sa ažuriranim software-om
- Prikuplja metrike na vašim aplikacijama kao što je iskorišćenost procesora ili RAM-a.
Poređenje Docker-a i Kubernetes-a
Sada kada znamo malo više o Docker-u i Kubernetes-u, koje su razlike između njih?
Na ovo pitanje nije lako odgovoriti jer se Docker i Kubernetes ne mogu direktno porediti. Postoji mnogo različitih alatki koje je sve vode pod imenom Docker, a Kubernetes je jedan projekat. Svakako izidvojimo glavne njihove „razlike“:
- Docker je set alatki za kreiranje i upravljanje container-ima, na vašem računaru il na serverima
- Docker Swarm je Docker-ova alatka za upravljanje container-ima na cluster-u servera
- Kubernetes je alatka za deploy-ovanje i upravljanje container-ima na vašim serverima ili na cloud-u.
Često postavljana pitanja
Šta je bolje prvo naučiti, Docker ili Kubernetes?
Ukoliko planirate da radite sa Kubernetes-om, najbolje bi bilo da se prvo upoznate sa Docker-om. Korišćenje Docker-a će vas naučiti osnovama container-a, kao i kako da kreirate image-a, upravljate container-ima.
Nakon toga će vam biti lakše da povežete Kubernetes koncepte kao Pods i PersistentVolumes sa vašim postojećim znanjem o container-ima.
Da li koristiti Docker ili Kubernetes?
Ne morate da birate, možete ih koristiti istovremeno. Primer bi bio da koristite Docker za pravljenje vaših container image-a na vašem računaru i potom da te containere pokrećete na Kubernetes cluster-u.
Bez komentara