Demistifying Kubernetes

poruka: 5
|
čitano: 844
|
moderatori: vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
3 tjedna
offline
Demistifying Kubernetes - Orkestracija kontejnera

Ako se igraš s Dockerom ili pokrećeš Docker kontejnere, jedna mašina je sasvim dovoljna.

U tom slučaju Docker ili Docker Compose su dobar izbor.



Međutim, u trenutku kada prelazimo s jedne mašine na više njih, pojavljuje se potreba za orkestracijom kontejnera preko mreže.
U produkcijskom okruženju potrebne su barem dvije mašine kako bi se postigla tolerancija na greške i visoka dostupnost.



U cloud okruženju preporučeni način skaliranja infrastrukture je:



- horizontalno skaliranje, dodavanjem novih instanci u sistem

- vertikalno skaliranje, dodavanjem CPU-a ili RAM-a postojećoj instanci.

Docker orkestracija uzima dostupne resurse (CPU, memoriju, mrežu) s više instanci ili nodova i raspoređuje ih kontejnerima.
To je glavna prednost orkestracije u odnosu na virtualne mašine.


Umjesto da pravimo servere s točno određenim softverom (web server, baza, itd.),

tretiramo ih kao generičke resursne jedinice na kojima se pokreću Docker kontejneri.



Pojavom alata za konfiguraciju poput Puppet-a, Chef-a i Ansible-a, postalo je mnogo lakše kreirati više identičnih instanci u isto vrijeme.


To je direktno doprinijelo razvoju cloud computinga, horizontalnog skaliranja, kao i potrebe za visokom dostupnošću i fault tolerance-om.



Postoji više platformi za Docker orkestraciju (npr. Docker Swarm), ali u praksi je Kubernetes postao dominantan standard.



Kontejneri se bave pakovanjem, distribucijom i pokretanjem aplikacija.


Oni omogućavaju prenosivost workload-a i mogu značajno smanjiti troškove infrastrukture.



Aplikacije se pakuju u container image koji predstavlja artefakt za distribuciju softvera.
U image se ubacuje kod i sve zavisnosti, ali ne i kompletan operativni sistem.


Na taj način kontejneri apstrahuju aplikaciju od infrastrukture.



Kada je aplikacija jednom kontejnerizirana, DevOps tim samo ažurira image i pokreće ga, a sve zavisnosti su već spremne.


Kontejneri omogućavaju i verzionisanje artefakata putem tagova.



Portabilnost znači da se ista aplikacija može pokrenuti u development, test i production okruženju bez promjena.


Aplikacije se često dijele na mikroservise, gdje je svaki servis zapakovan u svoj image.



Jedan operativni sistem može pokretati više aplikacija, pri čemu je svaka izolovana u svom kontejneru sa vlastitim zavisnostima.



Open source zajednica često nudi gotove container image-ove koji se nalaze u container registry-ima poput Docker Hub-a ili Amazon ECR-a.


Takve image-ove treba redovno ažurirati i skenirati na sigurnosne ranjivosti.



Dockerfile definiše kako se image gradi, a dobra praksa je da image bude što manji.



Kubernetes cluster je skup nodova.


Nodovi mogu biti fizički ili virtualni serveri, bilo u cloudu ili on-premise.

Cluster ima dvije vrste nodova:

control plane node

worker node

Control plane upravlja orkestracijom, skaliranjem, ažuriranjem i pokretanjem aplikacija.

 



Worker nodovi su mjesta gdje aplikacije stvarno rade.



Docker kontejneri se uvijek pokreću unutar poda.


Pod je execution environment za jedan ili više kontejnera.



Najčešća praksa je jedan kontejner po podu, ali postoje slučajevi gdje više kontejnera dijeli isti pod.


Kontejneri unutar istog poda mogu lako komunicirati međusobno, dok su i dalje izolovani od ostatka clustera.



Podovi su nepromjenjivi. Ako se pod pokvari, Kubernetes ga zamijeni novim.



Kubernetes objekti služe za opisivanje željenog stanja clustera.
Oni su perzistentni, ali se mogu mijenjati ili brisati.



Control plane se sastoji od nekoliko glavnih komponenti:

kube-apiserver koji izlaže Kubernetes API

etcd koji služi kao key-value baza za podatke clustera

kube-scheduler koji dodjeljuje podove nodovima

kube-controller-manager koji pokreće kontrolne procese



Namespaces se koriste za logičku izolaciju resursa unutar clustera, slično kao folderi na računaru.


Ako želimo stabilan skup identičnih podova, koristimo ReplicaSet.
ReplicaSet definiše koliko instanci poda treba da postoji i brine se da taj broj uvijek bude ispoštovan.



Deployments upravljaju ReplicaSet-ovima i omogućavaju deklarativne update-e, skaliranje, rollback i rollout verzija.



Servisi grupišu podove i izlažu ih preko mreže.



Ingress se koristi za upravljanje HTTP i HTTPS saobraćajem bez potrebe za posebnim load balancerima.


Radi na portovima 80 i 443 i koristi host-based i path-based routing.


Ingress ima dva dijela: definiciju pravila i kontroler koji ta pravila sprovodi.


Radi na 7. sloju OSI modela i može rutirati saobraćaj na osnovu HTTP headera.



Kubectl je command line alat za upravljanje Kubernetes clusterom.


Pomoću njega možemo kreirati, ažurirati, brisati i pregledati resurse.


Manifest fajlovi se pišu u YAML ili JSON formatu i opisuju resurse koje želimo.

typing... scrolling...
Poruka je uređivana zadnji put pon 5.1.2026 17:51 (dejvid2).
Moj PC  
1 0 hvala 1
16 godina
online
Demistifying Kubernetes

Lijepo je ovo sve sto objasnjavas, dobro razdvaja slojeve nekome tko to nikada nije koristio direktno (poput mene npr.), ali moze li neki konkretan primjer? Neki udzbenicki primjer aplikacije koja treba kubernetes i kako se to rjesava s konkrentim kodom, manifestima i sl. 

 
0 0 hvala 0
15 godina
online
Re: Demistifying Kubernetes

ne treba 

8 godina
offline
Re: Demistifying Kubernetes
captain_soap_McTawish kaže...

Lijepo je ovo sve sto objasnjavas, dobro razdvaja slojeve nekome tko to nikada nije koristio direktno (poput mene npr.), ali moze li neki konkretan primjer? Neki udzbenicki primjer aplikacije koja treba kubernetes i kako se to rjesava s konkrentim kodom, manifestima i sl. 

Ako dođeš do te razine da ti treba cluster kao Kubernetes, znat ćeš. 

16 godina
online
Re: Demistifying Kubernetes
robogo kaže...

Ako dođeš do te razine da ti treba cluster kao Kubernetes, znat ćeš. 

 LOL

 

Pa naravno da cu znati (ili necu vec cu koristiti tipa aws Fargate) kad se nadem s konkrentim problemom. No ovo je tema s nazivom Demistifying Kubernetes, dan je okvir koji isto mogu u dvije minute dobiti od bilokojeg LLM-a. Da bi ovo imalo malo vecu korisnost, bitno je vidjeti kako to funkcionira u praksi, makar u idealnom slucaju. Gdje se pretpostavke raspadaju? Ako cu na konkretna pitanja dobivati odgovore znat ces, koja je onda svrha ovakvih tema osim da budu dump iz nekog LLM-a? 

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice