Tehnologija kontejnerizacije aplikacija je u velikoj meri promenila oblast IT infrastrukture i isporuke softvera u prethodnih nekoliko godina. Pomenutoj temi i prednostima koju je doneo ovakav način pakovanja i distribucije aplikacija je u prethodnom periodu posvećeno više tekstova u Business&IT časopisu, gde su između ostalog obrađivane teme Docker-a (br. 5) i Windows kontejnera (br. 7). Dok su Docker i druge kontejner platforme rešile problem pakovanja aplikacija i pokretanja pojedinačnih kontejnera na jednom serveru, pojavila se potreba za platformom koja omogućava upravljanje većim brojem kontejnera na klasteru servera – tzv. orkestratorom kontejnera.

Kao dominantno rešenje na ovom polju se vremenom izdvojio Kubernetes, projekat koji je potekao iz Google-a koji je 2014. godine doneo odluku da ga javno objavi u vidu otvorenog koda. Google je u međuvremenu predao Kubernetes na upravljanje Cloud Native Computing Fondaciji (CNCF), osnovanoj sa ciljem koordinisanja svih projekata i integracija u cloud native ekosistemu, kojih trenutno ima preko 1,000. Istorija je pokazala da su obe odluke bile odlične, jer danas Kubernetes svom uspehu može da zahvali upravo jakoj organizaciji koja stoji iza njega i snazi open source zajednice koja ga razvija.

Kako objasniti šta je Kubernetes u jednoj rečenici? Ukratko, Kubernetes omogućava da se u programskom kodu kompletno opišu svi elementi jedne aplikacije spakovane u kontejnere i infrastruktura potrebna za njeno funkcionisanje. Pomenuti kod pisan u YAML jeziku se izdaje Kubernetes klasteru, koji čine Linux ili Windows serveri podeljeni u dve grupe: master nodovi koji se brinu o stanju klastera i kontejnera koji su mu povereni na izvršavanje, i worker nodovi (radnici) na kojima se izvršavaju sami kontejneri. Zadatak klastera je da se brine o kontejnerima i pratećoj infrastrukturi: da obezbedi svakom kontejneru nod na kome će se izvršavati i zahtevane resurse, monitoriše njihovo stanje i restartuje ih po potrebi, smanjuje i povećava njihov broj u zavisnosti od opterećenja, konfiguriše mrežu kako bi kontejneri mogli da komuniciraju međusobno i sa spoljnim svetom itd.

Pre Kubernetes-a, infrastruktura nikada nije bila tako blizu developerima, koji sada mogu direktno konzumirati i konfigurisati resurse klastera. Kubernetes im omogućava da definišu sve gradivne elemente jedne aplikacije, počev od pojedinačnih kontejnera, preko diskovnog prostora za smeštanje perzistentnih podataka, sve do pravila za mrežno oglašavanje i balansiranje saobraćaja. Nakon inicijalnog deployment‑a aplikacije, mogu nadalje upravljati njenim životnim vekom – Kubernetes omogućava automatizaciju procesa objavljivanja nove verzije aplikacije u “kotrljajućem” maniru, gde se postojeći kontejneri postepeno zamenjuju novim. I sve to kroz jezik koji se uklapa u savremene trendove definisanja infrastrukture u kodu, kao što su deklarativnost (kod taksativno definiše željeno krajnje stanje koje je potrebno postići) i idempotentnost (svako izvršavanje istog koda daje isto krajnje stanje), omogućavajući efikasnu integraciju Kubernetes platforme u postojeće CI/CD procese.

Kao što nas je tehnologija virtualizacije zauvek oslobodila zavisnosti od fizičkog hardvera, tako Kubernetes ide korak dalje i praktično nas oslobađa zavisnosti od virtualizacionih i cloud platformi. Šta se nalazi ispod više nije toliko važno, jer se aplikacija definisana Kubernetes jezikom može izvršavati gde god da postoji Kubernetes, što garantuje portabilnost aplikacija i konzistentnost u njihovom radu na različitim infrastrukturama. A Kubernetes je danas moguće pokrenuti praktično svuda – od IoT uređaja i fizičkih servera, preko virtualizacionih platformi poput VMware-a, do cloud provajdera kao što su AWS i Microsoft Azure.

Postoji više načina kako doći do operativnog Kubernetes klastera, pri čemu je njegova manuelna instalacija od nule rezervisana samo za najhrabrije. Na jednoj strani spektra su open source alati kao što su Kubespray i Rancher koji olakšavaju kreiranje i upravljanje klasterom na različitim on-premise i cloud platformama. Na potpuno drugoj strani su hostovana Kubernetes rešenja kod kojih je kompletna automatizacija upravljanja životnim vekom klastera odgovornost cloud provajdera, poput Azure Kubernetes Service (AKS) i Amazon Elastic Kubernetes Service (EKS).

I negde između stoje enterprise distribucije Kubernetes-a: Red Hat OpenShift i VMware vSphere with Kubernetes. VMware je dakle doneo odluku da integriše Kubernetes u svoju vSphere virtualizacionu platformu, čime su ESXi hostovi postali i radnici Kubernetes klastera, a kontejneri ravnopravni virtuelnim mašinama. Tako će od vSphere-a verzije 7 biti moguće koristiti Kubernetes jezik ne samo za opisivanje servisa u kontejnerima, već i VMware virtuelnih mašina, što predstavlja još jedan dokaz tvrdnje da je Kubernetes postao defakto standard za infrastrukturni API.

Ako je ovo infrastruktura sadašnjosti i budućnosti, postavlja se pitanje da li treba krenuti u migraciju postojećih aplikacija na Kubernetes, kao i da li su uopšte sve aplikacije i servisi dobri kandidati za Kubernetes. Treba imati na umu da unapređenja i mogućnosti koja Kubernetes donosi imaju za cenu njegovu kompleksnost u pogledu upravljanja i korišćenja, koju nije uvek opravdano plaćati. Jednostavne aplikacije i servisi koji ne poseduju distribuiranu arhitekturu (npr. tradicionalne relacione baze podataka) ne dobijaju mnogo prelaskom na novu platformu, dok najviše koristi od Kubernetes-izacije imaju aplikacije koje su distribuirane po svojoj prirodi i dizajnirane kao skup mikroservisa.

Odakle početi sa Kubernetes-om? Potrebne su samo dve stvari – kubectl alat komandne linije pomoću koga se komanduje klasterom i koji se može preuzeti sa zvaničnog sajta, i naravno klaster na raspolaganju. Alat pod nazivom Minikube omogućava podizanje minimalnog Kubernetes klastera od jednog noda na desktop ili laptop računaru, a ukoliko želite da isprobate kako izgleda rad na produkcionom cloud Kubernetes klasteru, pozivamo vas da učestvujete u besplatnom beta testiranju Coming Cloud Kubernetes platforme – za više informacija posetite https://cloud.coming.rs/k8s . Srećno YAML-ovanje!

Nebojša Ilić, COMING

0 %s Comments

Prosledi komentar

Vaša adresa e-pošte neće biti objavljena.

Najnoviji

Novi-NetApp-proizvodi

Novi NetApp proizvodi

Da li su vam već poznati novi NetApp sistemi C-serije, sa QLC Flash tipom ...
Veštačka-inteligencija-u-našim-rukama

Veštačka inteligencija u

Broj oblasti u kojima se eksperimentiše sa različitim dostignućima veštačke ...
Azure-Active-Directory--postaje-Entra-ID

Azure Active Directory

Azure Active Directory je sada Entra ID. I premda većina korisnika ovu promenu ...
Transformacija-tehničkog-duga--pomoću-DevOps-tehnologija

Transformacija tehničkog duga

Najveću opasnost za organizacije ne predstavlja samo postojanje tehničkog duga, ...