Uvod u Kubernetes: Vodič za početnike
Kubernetes je izuzetno popularan softver otvorenog koda koji automatizuje procese razvoja i upravljanja kontejnerima. Praktično je postao standard u industriji za orkestraciju kontejnera.
Prema godišnjoj studiji Cloud Native Computing Foundation (CNCF), impresivnih 96% organizacija aktivno koristi Kubernetes (K8s) ili ozbiljno razmatra njegovu implementaciju. Dodatno, procenjuje se da oko 5,8 miliona programera širom sveta koristi Kubernetes, što čini 31% globalne zajednice backend programera.
Ova popularnost proizlazi iz njegove sposobnosti da unapredi tehnologiju kroz poboljšanu skalabilnost, visoku dostupnost i skraćeno vreme implementacije. Dok mnogi programeri započinju svoj put u kontejnerizaciji koristeći Docker (sveobuhvatan alat koji se oslanja na komandnu liniju za interakciju sa kontejnerima, jedan po jedan), K8s pruža apstrakcije visokog nivoa za definisanje aplikacija i njihove infrastrukture kroz konfiguracione šeme koje omogućavaju timsku saradnju.
Ako ste novi u Kubernetes svetu, ovaj članak je posebno prilagođen da vam pruži uvodne informacije i ključne uvide kako biste započeli. Saznaćete kako vam K8s može pomoći kao programeru u poboljšanju vaših digitalnih proizvoda.
Šta je Kubernetes i zašto vam je potreban?
Kubernetes je orkestracioni mehanizam (framework) otvorenog koda dizajniran za automatizaciju primene, skaliranja i upravljanja kontejnerizovanim aplikacijama. On garantuje predvidljivost i visoku dostupnost vaših aplikacija.
Jednostavno rečeno, zamislite aplikaciju spakovanu u kontejner. Da biste tu aplikaciju učinili dostupnom korisnicima, potrebno je pokrenuti nekoliko instanci tog kontejnera. Izazov nastaje kada treba da upravljate svim tim kontejnerima. Oni ne moraju da se nalaze na istom serveru, što dodatno komplikuje situaciju. Dakle, kako rešiti ovaj problem?
Kubernetes dolazi u pomoć pružajući efikasan način za upravljanje svim ovim procesima. Iako možete uporediti K8s sa kontejner motorom kao što je Docker, on je zapravo orkestrator kontejnera. Kao programer početnik, ne morate brinuti o tome kako K8s vrši orkestraciju na niskom nivou. Verovatno nećete sami postavljati K8s klaster za svoju aplikaciju, o čemu ćemo više govoriti kasnije.
Međutim, komuniciraćete sa klasterima koje je postavio vaš tim za infrastrukturu. Zato je ključno da se upoznate sa objektima sa kojima ćete biti u interakciji. Pre toga, potrebno je da razumete njegovu arhitekturu na visokom nivou kako biste shvatili šta se dešava ispod površine.
Ključne Karakteristike Kubernetesa
Kubernetes nudi niz funkcija koje obuhvataju širok spektar mogućnosti za upravljanje kontejnerima i povezanom infrastrukturom. Evo nekoliko ključnih:
- Automatsko postavljanje, skaliranje i vraćanje unazad: K8s automatizuje kreiranje određenog broja replika, distribuira ih preko odgovarajućeg hardvera i premešta kontejnere ako dođe do problema sa čvorom. Možete dinamički skalirati broj replika na osnovu trenutne potražnje ili promenljivih potreba, kao što je iskorišćenost procesora.
- Otkrivanje servisa, balansiranje opterećenja i mrežna komunikacija: Kubernetes nudi integrisano mrežo rešenje, uključujući interno otkrivanje servisa i pristup javnim kontejnerima.
- Aplikacije sa i bez stanja: U početku, K8s se prvenstveno fokusirao na kontejnere bez stanja (stateless). Međutim, sa napretkom tehnologije, sada podržava i aplikacije sa stanjem (stateful). Praktično, svaka aplikacija može se pokrenuti na Kubernetes-u.
- Upravljanje skladištenjem: Bez obzira da li se nalazite na lokalnom sistemu datoteka, deljenoj mreži ili u oblaku, Kubernetes pruža (apstraktno) trajno skladištenje za kontejnere. Ova apstrakcija omogućava vam da definišete zahteve za skladištenje nezavisno od osnovne infrastrukture. Iako ovo prevazilazi opseg ovog članka, funkcioniše kroz mehanizme kao što su Persistent Volume (PV), Persistent Volume Claim (PVC), Storage Classes i Volume plugins.
- Deklarativno stanje: K8s koristi YAML (Yet Another Markup Language) datoteke, poznate kao manifesti objekata, za definisanje željenog stanja klastera. Ovi manifesti određuju kako klaster treba da izgleda, uključujući broj instanci aplikacije i pravila mreže. Kada primenite manifest, K8s automatski obrađuje tranzicije stanja – nema potrebe za pisanjem skripti.
- Podrška za različita radna okruženja: Ne morate koristiti Kubernetes samo u oblaku ili na svojoj razvojnoj stanici. Dostupno je mnogo distribucija koje odgovaraju različitim slučajevima upotrebe. Veliki provajderi cloud tehnologija kao što su Amazon Web Services, Google Cloud i Microsoft Azure nude upravljane Kubernetes servise, dok su distribucije sa jednim čvorom kao što su Minikube i K3s dostupne za lokalnu upotrebu.
- Proširivost: K8s je bogat funkcionalnostima, a mogućnosti se mogu dodatno proširiti ekstenzijama. Možete kreirati prilagođene tipove objekata, operatore i kontrolere za optimizaciju vaših radnih opterećenja.
Kubernetes Arhitektura
U svojoj suštini, Kubernetes arhitektura se sastoji od jednog glavnog čvora (master node) i dva ili više radnih čvorova (worker nodes). Glavni čvor upravlja klasterom, dok radni čvorovi pokreću aplikacije u skladu sa uputstvima glavnog čvora.
Izvor: kubernetes.io
Detaljniji prikaz:
Glavni čvor(ovi)
Glavni čvor diktira stanje klastera i odlučuje o akcijama svakog pojedinačnog čvora. Postoji nekoliko procesa koji su uključeni u funkcionisanje glavnog čvora.
- API Server: Ovde se odvija sva komunikacija u klasteru. To je kapija koja omogućava svim komponentama klastera da razmenjuju informacije. API server eksponira Kubernetes API. Ima dve glavne uloge. Prva je ulazna tačka za korisnike koji komuniciraju sa klasterom, na primer slanjem zahteva putem
kubectl
komande. Druga je čuvanje ulaznih zahteva za autentifikaciju i validaciju, što obezbeđuje da samo ovlašćeni korisnici mogu izvršavati komande. - Scheduler: Scheduler (planer) dodeljuje aplikacije (ili Kubernetes objekte radnog opterećenja) radnim čvorovima. On postavlja podove (pods) na čvorove na osnovu zahteva za resursima. Pod je najmanja jedinica za raspoređivanje u Kubernetes-u.
- Controller Manager: Ova komponenta održava stanje klastera, detektuje probleme (kao što je kvar čvora) i osigurava da je broj podova u skladu sa željenim stanjem. Ako neki pod prestane da radi, kontroler menadžer zahteva od planera da pronađe čvor za pokretanje novog poda.
- etcd: Takođe poznat i kao „mozak klastera“. Ovo je distribuirana baza ključ-vrednost koja čuva konfiguraciju klastera. Sve promene u klasteru se čuvaju ovde. Možete napraviti rezervnu kopiju klastera čuvanjem ove baze podataka. Imajte na umu da se ovde čuvaju samo podaci o stanju klastera, a ne podaci aplikacije.
Radni čvor(ovi)
Svaki radni čvor ima instalirana tri procesa koja omogućavaju K8s da komunicira sa njim i pokreće podove unutar tog čvora. Ovi procesi su:
- Kubelet: Ovo je primarni servis koji upravlja izvršavanjem na sloju kontejnera. Bez ove komponente, Kubernetes bi bio samo REST API sa skladištem ključ-vrednost. Po default-u, K8s izvršava aplikacije u kontejnerima. Kontejneri su izolovani jedan od drugog i od osnovnog operativnog sistema. Ovo omogućava razdvajanje upravljanja aplikacijama i infrastrukturom. Iako API server može odbaciti podove ili dodati ograničenja, kubelet je poslednji validtor onoga što se pokreće na čvoru. Kubelet komunicira sa čvorom i kontejnerom, uzima konfiguracione datoteke i pokreće podove koristeći runtime za kontejner.
- Runtime za kontejner: Ovaj deo pokreće kontejnere. Možete koristiti Docker, rkt ili containerd kao runtime.
- Kube-proxy: Ova komponenta pruža sloj apstrakcije za grupe podova, prateći zajedničke politike kao što je balansiranje opterećenja. Svi čvorovi koriste kube-proxy za kreiranje virtuelne IP adrese za klijente koji pristupaju dinamičkim podovima. Ovo je rešenje za balansiranje opterećenja uz minimalne troškove.
Kako funkcioniše kontejnerizacija
Kontejnerizacija podrazumeva virtuelizaciju svih potrebnih delova softverske aplikacije u jednu celinu. Unutar kontejnera se nalazi kolekcija biblioteka, binarnih datoteka i konfiguracija aplikacije. Oni ne uključuju resurse kernela ili virtuelizovan hardver.
Kontejneri se izvršavaju „na vrhu“ runtime okruženja za kontejnere, koji definiše resurse. Pošto kontejneri sadrže samo osnovne komponente i zavisnosti aplikacije, lagani su i brži u poređenju sa drugim virtuelnim mašinama.
Pročitajte više: Kontejneri protiv virtuelnih mašina: Objašnjenje razlika
Kako instalirati i podesiti Kubernetes
Posvetili smo dovoljno vremena teoriji. U nastavku će biti praktičan deo koji uključuje iskustvo sa kontejnerima. Ovaj vodič posebno pokriva instalaciju na Windows operativnom sistemu.
Postoji više načina za instalaciju kada koristite Windows; možete se odlučiti za komandnu liniju ili grafički korisnički interfejs. Međutim, trebalo bi da se uverite da ispunjavate sledeće zahtevane specifikacije.
Vaš hardver treba glavni čvor sa najmanje 2 GB memorije i 700 MB za radni čvor. Za softverske zahteve, potrebno vam je Hyper-V, Docker Desktop, jedinstvena MAC adresa i jedinstveni UUID proizvoda za svaki čvor. Evo pristupa korak po korak.
Instalacija i podešavanje Hyper-V
Hyper-V je Windows-ov podrazumevani softver za virtuelizaciju. U suštini, to je VirtualBox na steroidima. Omogućava vam da upravljate virtuelnim mašinama putem Microsoft GUI-a ili komandne linije. Da biste omogućili Hyper-V, sledite ove korake.
- Otvorite kontrolnu tablu.
- Kliknite na programe sa leve table.
- Na stranici programa i funkcija kliknite na `Uključite ili isključite Windows funkcije`.
- Izaberite funkcije Hyper-V i Hypervisor za Windows.
- Zatim izaberite OK; vaš računar bi trebalo da se ponovo pokrene kako bi se aktivirala nova podešavanja.
Povremeno se vaš računar može ponovo pokrenuti nekoliko puta kako bi se uverio da je sve ispravno konfigurisano. Uspeh instalacije možete proveriti tako što ćete u PowerShell uneti sledeću komandu.
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
Potvrdite da je status „Enabled“ prikazan na ekranu.
Instalacija Dockera
Kao što smo već objasnili, K8s je alat za orkestraciju kontejnera koji se oslanja na kontejnere; u ovom slučaju, Docker je dobar izbor. K8s komunicira sa Dockerom i upravlja svim na nivou preduzeća. Započnite preuzimanjem Docker-a za Windows. Ako se pitate zašto je potrebno koristiti Docker Desktop, on je poželjan za pojednostavljenje razvoja, isporuke i pokretanja dockerizovanih aplikacija.
To je takođe najbrži način za pravljenje Docker aplikacija na Windows-u koristeći Hyper-V i umrežavanje. Nakon uspešne instalacije, Docker je uvek dostupan na bilo kom terminalu sve dok je pokrenut. Za detaljan vodič za instalaciju, pogledajte zvaničnu dokumentaciju Docker-a. Ako naiđete na probleme kao što su skrivene ikone nakon instalacije, problem se može rešiti ponovnim pokretanjem računara.
Instalacija Kubernetesa
Docker GUI vam omogućava da konfigurišete podešavanja, instalirate i omogućite Kubernetes. Da biste instalirali K8s, sledite ove korake.
- Kliknite desnim tasterom miša na ikonu Docker tray i izaberite properties.
- Izaberite „Settings“ iz padajućeg menija nakon što kliknete na „Properties“.
- Na levom panelu izaberite `Kubernetes` i kliknite na `Apply`.
Docker će zatim instalirati dodatne pakete i zavisnosti. Proces traje oko pet do deset minuta, u zavisnosti od brzine interneta. Možete koristiti Docker aplikaciju da potvrdite da sve radi ispravno.
Pošto se Kubernetes aplikacije mogu primenjivati putem komandne linije (CLI), možda ćete morati da instalirate K8s kontrolnu tablu, jer nije instalirana po defaultu. Instalirajte kontrolnu tablu koristeći sledeće korake.
- Preuzmite YAML konfiguraciju.
- Primeniite aplikaciju pomoću ovog koda:
kubectl apply -f recommended.yaml
. - Potvrdite da je sve dobro podešeno pomoću:
kubectl get -f recommended.yaml.txt
.
Da biste pristupili kontrolnoj tabli, pokrenite sledeću komandu na PowerShell-u (ne CMD).
- Pokrenite sledeći kod
((kubectl -n kube-system describe secret default | Select-String "token:" | Split-String "+" )[1])
- Kopirajte generisani token i pokrenite
kubectl proxy
.
- Kopirajte generisani token i pokrenite
- U svom pretraživaču otvorite ovu vezu.
- Kliknite na `Token` i nalepite svoj token ovde.
- Prijavite se.
Ako ste stigli ovde, čestitamo, vaš ekran bi trebalo da bude ispunjen K8s kontrolnom tablom. Sada možete da upravljate svojim aplikacijama bez napornog rada korišćenjem komandne linije.
Pročitajte i: Kako instalirati Kubernetes na Ubuntu 18
Kako kreirati i upravljati Kubernetes klasterom
Ako ste pratili sve korake do sada, trebalo bi da ste uspešno instalirali Kubernetes na svom računaru. Sada sledite ove korake da biste kreirali i upravljali jednostavnim klasterom:
- Konfigurišite umrežavanje: Podesite mrežnu komunikaciju između čvorova klastera, omogućavajući im da međusobno komuniciraju.
- Podesite autentifikaciju klastera: Kreirajte mehanizme autentifikacije i autorizacije za pristup klasteru.
- Podesite glavne komponente: Uključuje API server, planer i kontroler menadžer.
- Pridružite radne čvorove: Povežite radne čvorove sa klasterom pomoću konfiguracionih datoteka koje pruža proces podešavanja klastera.
- Implementirajte dodatke: Instalirajte ekstenzije da biste poboljšali funkcionalnost klastera.
- Upravljajte radnim opterećenjem: Vreme je da implementirate svoje aplikacije.
Iako je ovo samo pregled procesa kreiranja klastera, on uključuje mnogo koraka i komandi. Evo zvaničnog vodiča za dokumentaciju o tome kako da kreirate klastere pre primene. To bi trebalo da bude vaša glavna referenca.
Kako implementirati prvu aplikaciju pomoću Kubernetes-a
Najčešća komanda kada se koristi K8s je kubectl akcioni resurs
, koja vam omogućava da izvršite određene radnje kao što je kreiranje ili brisanje određenog resursa.
Ako imate problem, možete koristiti opciju --help
nakon određene potkomande da biste dobili dodatne informacije. Na primer, kubectl get nodes --help
.
Implementirajte svoju prvu K8s aplikaciju pomoću komande: kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
.
Završne reči
Ovaj vodič je bio uvod u Kubernetes tehnologiju. Naučili ste o prednostima, karakteristikama i arhitekturi Kubernetesa. Nadamo se da je ovaj vodič poslužio kao dobar uvod, ali i da vas je uputio na mnoge druge korisne izvore kako biste nastavili svoje učenje.
Iako se možda čini previše komplikovanim za početak, ovaj članak je pokušao da vam pruži jasan uvid i smernice za početak rada sa K8s. Trebaće vam malo vežbe da steknete samopouzdanje u korišćenju ove tehnologije. Preporučujemo da koristite zvaničnu Kubernetes dokumentaciju kao glavnu referencu. Što više vežbate, brže ćete postati ekspert za K8.
Zatim pogledajte Kubernetes tutorijale za početnike koje treba savladati.