Programiranje

Šta je Kubernetes ?

U narednih nekoliko nastavaka ćemo predstaviti rad Kubernetesa.
Pre svega ćemo videti šta je Kubernetes, čemu služi, kako se upravlja njime, koje pogodnosti pruža ovaj sistem i kakvu korist možemo imati od Kubernetesa.
Proći ćemo osnovne delove Kubernetes sistema, s obzirom na to da postoji širok spektar servisa koje Kubernetas može da uradi.

Radi boljeg razumevanja neke reči ćemo korisiti kao izvorne radi kasnije upotrebe i boljeg razumevanja, ali ćemo i neke prevesti s obzirom da je potrebno da se razume šta koji servis radi.

Šta je Kubernetes?

Kubernetes je alat otvorenog koda koji služi za upravljanje visoko skaliranih kontejnerskih okruženja (u ovom slučaju Docker kontejnera), razmeštanje aplikacija, isporučivanje aplikacija, automatsko skaliranje, monitoring itd.
Kubernetes je napravljen od strane Google inženjera kako bi upravljali ogromnim brojem aplikacija i njihovih kontejnera, kao i za primenu automatizacije procesa.
Nakon nekog vremena, dodeljen je Cloud Native Computing Foundation (CNCF), delu Linux fondacije, radi daljih unapređenja.

Kubernetes je u osnovi sistem koji se bavi svim resursima u klasteru i pomaže programerima i administratorima sistema da upravljanju razvojem aplikacija i kontejnerima u Cloud okruženju.

Iako su ključni koncepti i konfiguracije Kubernetes-a dobro dokumentovani na zvaničnom sajtu, svakom početniku nije baš lak zadatak da konfiguriše i upravlja Kubernetes klasterima na svom lokalnom okruženju, kao na primer kroz upotrebu Virtuelnih mašina i Minikuba.

Kubernetes i Minikube

O tome šta je Minikube-u, a šta je Kubernetes, ćemo govoriti u narednom tekstu, s obzirom na to da se Minikube možete koristiti u lokalnom okruženju pomoću Virtuelnih mašina, a princip rada je skoro isti kao sa Kubernetesom u produkciji.

Zbog složenosti konfiguracije i upravljanja samog Kubernetesa, velike hosting i cloud kompanije poput Google Cloud Platform, Amazon Web Services (AWS) , Microsoft Azure Cloud, pokrenuli su sopstvene servise kako bi se bavili Kubernetes klasterima.
Ovi servisi su vrlo korisni za upravljanje Kubernetes konfiguracijama i klasterima.
U nekom od narednih tekstova objasnićemo kako Kuberentes radi na AWS Cloudu.

Osnovni pojmovi Kubernetesa

šta je kubernetes

Kubernetes na AWS EKS Cloudu

Kao što je prikazano na  dijagramu, čvorovi (Nodes), količine podataka (Volume), usluge (Service), razmeštanja (Deployment), podovi (Pod) i kontejneri su neki od najvažnijih delova Kubernetes klastera.

Node: Čvor ili Node je radna mašina (npr na Cloud Serveru „AWS Elastic Compute Cloud – EC2“ ) Kubernetes klastera, koja pokreće vaše kontejnere i  aplikacije.

Container: Kontejner je da kažemo lagani softverski skup s potrebnim paketima i programskim zavisnicima za pokretanje aplikacije.
Ukratko, kontejner je mesto gde se nalaze sve aplikacije koje trenutno razvijate, a koje bi trebalo da se prebace na server ili da se pokrenu na neki drugi način.

Pod: Pod je jedna od najvažnijih i osnovnih jedinica kojom Kubernetes upravlja. Pod upravlja grupom jednog ili više kontejnera raspoređenih na radnom čvoru (Node) klastera. Kubernetes klasteri mogu imati više Pod-ova i svaki Pod ima jedinstvenu IP adresu za povezivanje.

Service: Konfigurišući servise na klasteru, možemo otvoriti pristup aplikacijama i kontejnerima koji rade na različitim Pod-ovima na klasteru ili dodati pristup kontejnerima aplikacija izvan mreže klastera.

Deployment: raspoređivanje fajlova je skup uputstava za kreiranje Pod-ova i drugih potrebnih stvari u vašoj aplikaciji. Datoteke koje se raspoređuju su slične datotekama tzv. komposer fajlova iz Docker okruženja.
Ovo ćemo objasniti u sledećem tekstu, kako ona izgleda i koliko je bitna za rad na Kubernetesu.
Takođe, možete koristiti Deployment za specifičan broj Pod-ova, odnosno njihovih replika tako što ćete sve uredno upisati u fajl, kako bi se dale instrukcije za implementaciju na Kubernetesu.
Deployment takođe nadzire klaster radi održavanja definisanih specifikacija za Pod-ove, čak i ako se ručno izbriše bilo koji Pod, konfigurisana implementacija će se pobrinuti da se odmah stvori nova struktura kako je definisana u fajlu.

Volume: Kubernetes volume je jedinica koja može biti konfigurisana da obezbedi pristup vašoj kontejnerskoj aplikaciji koja je pokrenuta unutar Poda na klasteru.
Ovim volumenima može se priložiti količina radnih čvorova (Nodova), koji se skladište na Cloudu poput Amazon Elastic Block Store (EBS), Elastični sistem datoteka (EFS) itd., kao i na listi Kubernetes servisa za skladištenje podataka, koje možete pronaći na Kubernetes veb lokaciji.

Kubectl: Kubectl je komandna linije za upravljanje okruženjem klastera. To može biti bilo koji sistem van okruženja klastera. Potrebno je samo da se instaliraju osnovni paketi i konfiguracije da biste komunicirali sa klasterom. Jednom kada je vaš sistem konfigurisan, možete izvršiti sve operacije u vašem klasteru iz komandne linije kubectl.

Šta je Amazon EKS?

Amazon EKS je usluga elastičnog kontejnera koju je AWS uveo za upravljanje Kubernetes klasterima, serverskim čvorovima, automatskim skaliranjem i potrebnim mrežnim konfiguracijama na AWS platformi.

Nema potrebe da instalirate i konfigurišete bilo koji paket na nekom fizičkom ili cloud serveru za podešavanje Kubernetes klastera.
EKS se brine o svim potrebnim instalacijama Kubernetes paketa, operacijama „krpljenja“ i upravljanju visokom dostupnošću klastera.

Da bi održao visoku dostupnost klastera, AWS upravlja Kubernetes glavnim serverima na tri različite zone dostupnosti.

Obrazac rada Kubernetesa i EKS-a:

šta je kubernetes

Kubernetes na AWS EKS Cloudu

1. Obezbedite EKS klaster na AWS nalogu.
2. Nakon što je EKS kreiran, razmestite EC2 radne čvorove za vaše klaster okruženje uz pomoć skripti za formiranje oblaka obezbeđenih AWS-om.
3. Povežite EC2 čvorove sa kreiranim EKS Kubernetes klasterom iz vašeg sistema konfigurisanog kubectl.
4. Jednom kada se EC2 čvorovi povežu na EKS Kubernetes, vaše okruženje klastera će biti spremno za implementaciju i upravljanje vašim aplikacijama na Kubernetes klasteru.

Osnovna arhitektura Kubernetes okruženja uz AWS EKS uslugu:

šta je kuberenetes

Kubernetes na AWS EKS Cloudu

Zaključak:

Kubernetes je veoma pogodna opcija za upravljanje ogromnim kontejnerskim platformama za orkestraciju sa minimalnim korišćenjem resursa. Ima algoritam za odabir određenog čvora klastera za postavljanje kontejnera, koristeći određena pravila koja pomažu u efikasnijoj upotrebi resursa servera.
Takođe poseduje brojne druge funkcije kao što su automatsko skaliranje, automatsko „krpljenje“, automatizovani rollouts i povratne kočnice i replikacije koje pružaju izvodljivost za automatizaciju deplloymenta i upravljanja kontejnerima.
Pomoću Amazon EKS-a, možemo stvoriti Kubernetes klaster u nekoliko jednostavnih koraka, bez brige o instalaciji i upravljanju hardverskim resursima.
Održava API server i ECD bazu podataka na tri različite zone dostupnosti kako  bi se obezbedila visoka dostupnost.
Pored Kubernetes-a, EKS takođe ima više funkcija za upravljanje klasterima kao što su integracija upravljanja pristupom identitetu, podrška za balansiranje opterećenja servera, Amazon EBS za upravljanje količinom klastera, DNS zapisa Route 53, automatsko skaliranje čvorova itd.

Više informacija o klasterima Kubernetes i Amazon EKS možete pronaći na njihovim zvaničnim veb stranicama.

Dodaj komentar