Kubernetes vs. Docker: Razumijevanje kontejnera i orkestracije

Ako ste išli u korak s najnovijim trendovima u razvoju softvera, dva su pojma koja ste nesumnjivo susreli iznova i iznova: Docker i Kubernetes, koji su u osnovi skraćenica za  spremnike  i  orkestraciju .

Dockerovi kontejneri pomogli su pojednostaviti proces premještanja aplikacija kroz razvoj i testiranje te u proizvodnju, dok su i Docker i Kubernetes pomogli izmisliti način na koji se aplikacije grade i raspoređuju - kao zbirka mikro usluga umjesto monolitnih hrpa.

Zašto su Docker i Kubernetes važni, kako mijenjaju razvoj softvera i koju ulogu svaki igra u tom procesu? Pokušat ću odgovoriti na ta pitanja u nastavku.

Docker i kontejneri

Spremnici - podržani u Linuxu, Windowsima i drugim modernim operativnim sustavima - omogućuju rad softvera u samostalnim mini okruženjima koja su izolirana od ostatka sustava. Spremnici su uspoređeni s VM-ovima, ali nisu VM-ovi - daleko su mršaviji, brži za pokretanje i zaustavljanje i mnogo su fleksibilniji i prijenosniji. Budući da se spremnici mogu okretati prema gore ili dolje ili ih skalirati u roku od sekunde, olakšavaju pokretanje aplikacija u elastičnim okruženjima poput oblaka. 

Linux i drugi operativni sustavi podržavaju kontejnerirane aplikacije dugi niz godina, ali rad s spremnicima nije bio baš user-friendly. Docker je, i u svojim otvorenim izvorima i u komercijalnim inkarnacijama, softver koji čini kontejnere korisnom robom i robom prilagođenom programerima. Docker nudi uobičajeni skup alata i metafora za spremnike tako da možete pakirati aplikacije u slike spremnika koje se lako mogu primijeniti i ponovno koristiti u vašoj organizaciji ili negdje drugdje.

Ukratko, Docker omogućuje brzo stvaranje slika spremnika, njihovo izdvajanje, dijeljenje, premještanje i raspoređivanje na hokere kompatibilne s Dockerom kao tekuće spremnike.

Kada koristim Docker i spremnike?

Docker i spremnici su najprikladniji za rad s opterećenjima koja moraju imati jednu ili više sljedećih kvaliteta:

  • Elastična skalabilnost.  Ne znate koliko ćete primjeraka aplikacije trebati pokrenuti da biste zadovoljili potražnju. Kontejnerizirana aplikacija ili usluga mogu se prilagoditi našem zahtjevu postavljanjem manje ili više primjeraka svojih spremnika.
  • Izolacija.  Ne želite da aplikacija ometa druge aplikacije. Možda ćete paralelno pokretati više verzija aplikacije kako biste zadovoljili različite revizije API-ja. Ili možda želite održati temeljni sustav čistim (uvijek dobra ideja).
  • Prijenosnost.  Ovu aplikaciju morate pokretati u raznim okruženjima i svaka postavka mora biti ponovljiva. Spremnici vam omogućuju da spakirate cijelo vrijeme izvođenja svoje aplikacije, čineći aplikaciju lakom za postavljanje bilo gdje gdje pronađete Docker-kompatibilni host - radnu površinu programera, QA testni stroj, lokalno glačalo ili udaljeni oblak.

Saznajte više o Dockeru i spremnicima

  • Što je Docker? Iskra za revoluciju kontejnera
  • Zašto biste trebali koristiti Docker i spremnike
  • Započnite s Dockerom
  • Skrivene prednosti Dockera za QA
  • 12 alata otvorenog koda koji Docker čine boljim
  • Više Dockerovih vijesti, analiza, uputa, recenzija i savjeta

Kubernetes i orkestracija kontejnera

Spremnici su dizajnirani uglavnom za međusobnu izolaciju procesa ili aplikacija i osnovnog sustava. Stvaranje i postavljanje pojedinačnih spremnika jednostavno je. Ali što ako želite okupiti više spremnika - recimo, bazu podataka, web front-end, računski back-end - u veliku aplikaciju kojom se može upravljati kao jedinicom, bez brige oko postavljanja, povezivanja, upravljanja, i skaliranje svakog od tih spremnika zasebno? Treba vam način da   sve dijelove orkestrirate u funkcionalnu cjelinu.

To je posao koji Kubernetes preuzima. Ako su kontejneri putnici na krstarenju, Kubernetes je direktor krstarenja.

Kubernetes, temeljen na projektima stvorenim na Googleu, pruža način za automatizaciju postavljanja i upravljanja aplikacijama s više spremnika na više hostova, bez potrebe za izravnim upravljanjem svakim spremnikom. Razvojni programer opisuje izgled aplikacije u više spremnika, uključujući detalje poput toga kako svaki spremnik koristi umrežavanje i pohranu. Kubernetes rješava ostatak tijekom izvođenja. Također se bavi upravljanjem nesavjesnim detaljima poput tajni i konfiguracija aplikacija.

Kubernetes zahtijeva određenu stručnost da bi se dobro koristio, iako je to puno više rješenje po sistemu "ključ u ruke" nego što je bilo prije. Dio napretka u jednostavnosti upotrebe posljedica je lako dostupnih recepata za uobičajene primjene (Helmove karte); neki su zahvaljujući bogatstvu distribucija Kubernetesa koje su proizvele tvrtke s robnom markom (Red Hat, Canonical, Docker) koje rade ruku pod ruku s popularnim hrpama aplikacija i razvojnim okvirima.

Kada koristim Kubernetes i orkestraciju spremnika?

Jednostavne kontejnerirane aplikacije koje služe malom broju korisnika obično ne zahtijevaju orkestraciju, a kamoli Kubernetes. Ali ako aplikacija ima više od trivijalne razine funkcionalnosti ili trivijalan broj korisnika, postaje teško ne izmisliti kotačić koji pružaju sustavi za orkestraciju. Evo nekoliko osnovnih pravila za određivanje kada će orkestracija ući u sliku.

  • Vaše su aplikacije složene.  Svaka aplikacija koja uključuje više od dva spremnika vjerojatno odgovara računu. Usprkos tome, skromne aplikacije koje služe samo malom broju korisnika mogu se organizirati kroz minimalnije rješenje kao što je Docker roj, a ne Kubernetes.
  • Vaše aplikacije imaju visoke zahtjeve za skaliranje i elastičnost.  Kubernetes i drugi orkestratori omogućuju vam uravnoteženje tereta i okretanje kontejnera kako biste deklarativno zadovoljili potražnju, opisujući željeno stanje sustava umjesto ručnog kodiranja reakcija na promjene uvjeta.
  • Želite maksimalno iskoristiti moderne CI / CD tehnike.  Sustavi za orkestraciju podržavaju obrasce implementacije za aplikacije koje koriste plavo / zelenu implementaciju ili valjanje nadogradnji.

Može doći dan kada Dockera i Kubernetesa pomrače još prijatnije apstrakcije i ustupe mjesto elegantnijim načinima stvaranja i upravljanja spremnicima. Za sada su, međutim, Docker i Kubernetes presudni za poznavanje i razumijevanje.

Saznajte više o Kubernetesu i orkestraciji

  • Što je Kubernetes? Sljedeća platforma za prijavu
  • 4 razloga zbog kojih biste trebali koristiti Kubernetes
  • 10 Kubernetes distribucija predvodi revoluciju kontejnera
  • Upravljani Kubernetes: AWS vs. Azure vs Google Cloud
  • Pozdrav MicroK8s: Jednostavniji Kubernetes
  • Što je novo u Kubernetesu
  • Više Kubernetesovih vijesti, uputa, recenzija, savjeta i analiza