Posts

Showing posts from May 9, 2025

Master Node

  Master Node (ili Control Plane) je ključna komponenta u Kubernetes klasteru. On je mozak klastera i upravlja svim operacijama, kao što su raspoređivanje resursa, skaliranje aplikacija, praćenje stanja, i druge administrativne funkcije. 🧠 Šta Master Node radi? Master Node je odgovoran za centralizovano upravljanje celokupnim Kubernetes klasterom. Sastoji se od nekoliko ključnih komponenti koje omogućavaju funkcionisanje i koordinaciju: 1. API Server (kube-apiserver) : API server je glavna tačka interakcije sa Kubernetes klasterom. Svi zahtevi (kao što su komande kubectl ili automatske interakcije sa klasterom) idu kroz API server. API server obrađuje ove zahteve, usmerava ih prema odgovarajućim Kubernetes komponentama, i vraća rezultate korisnicima. 2. Controller Manager (kube-controller-manager) : Kontroler menadžer upravlja kontrolerima koji prate stanje klastera i prate promene u sistemu. Na primer, kada se desi nešto neočekivano, kao što je nestanak...

Šta je Node u Kubernetesu?

  Node je fizički ili virtuelni računar na kojem se pokreću Podovi u Kubernetes klasteru. Node-ovi predstavljaju radnu jedinicu klastera i svaki Node u klasteru pokreće Kubernetes komponente koje omogućavaju pokretanje i upravljanje aplikacijama. Ukratko: Node = računar koji pokreće Podove u klasteru. 🔧 Šta Node radi? Svaki Node ima nekoliko ključnih komponenti: Kubelet – Agent koji pokreće na svakom Node-u i brine se da su Podovi pokrenuti prema specifikacijama. Kube Proxy – Odgovoran za mrežno rutiranje unutar klastera. Container Runtime – Softver koji omogućava pokretanje kontejnera (npr. Docker, containerd). 🧠 Ključne karakteristike Node-a: Svaki Node može da pokreće više Podova . Node-ovi mogu biti "master" ili "worker" : Master Node (ili Control Plane) upravlja celokupnim klasterom, raspoređuje resurse, prati stanje. Worker Node (obično više) pokreće Podove koji čine aplikacije. 📋 Prikaz Node-a: Možeš da prover...

Šta je Deployment? Šta je StatefulSet?

  Deployment je Kubernetes objekat koji upravlja stateless aplikacijama , tj. aplikacijama koje ne zavise od svog identiteta i ne čuvaju stanje lokalno . Ukratko: Deployment = automatsko skaliranje i obnavljanje "običnih", zamjenjivih Podova. 🔧 Šta radi Deployment: Pokreće željeni broj identičnih Podova Osigurava da uvek ima tačno toliko aktivnih replika Automatski pravi rolling update (postepeno ažuriranje verzije) Vraća prethodnu verziju ako nešto krene po zlu 📄 Primer YAML fajla: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.21 ports: - containerPort: 80 Ovo pravi 3 identična Nginx Poda koji mogu da se zamene bilo kad. 🧱 Šta je StatefulSet ? StatefulSet je tip kontrolera za st...

Šta su Volume u Kubernetesu?

  Volume u Kubernetesu je mehanizam za čuvanje podataka koje kontejneri mogu da koriste , nezavisno od životnog veka kontejnera . Ukratko: Volume omogućava deljenje i/ili očuvanje podataka između kontejnera ili između restarta. ❗Zašto je to važno? Kada kontejner umre, sve što je bilo u njegovom fajl sistemu nestaje . Volume omogućava: trajno skladištenje podataka deljenje fajlova između kontejnera u istom Podu učitavanje konfiguracija i tajni (ConfigMap, Secret) spajanje sa eksternim skladištima (npr. NFS, AWS EBS, GlusterFS, itd.) 🧩 Kako se koristi? Volume se definiše na nivou Pod-a i povezuje sa kontejnerima pomoću volumeMounts . 📄 Primer: apiVersion: v1 kind: Pod metadata: name: pod-sa-volumom spec: containers: - name: app image: nginx volumeMounts: - name: moj-vol mountPath: /usr/share/nginx/html volumes: - name: moj-vol emptyDir: {} U ovom primeru: Volume moj-vol je tipa empty...

Šta je Secret u Kubernetesu?

  Secret je Kubernetes objekat za čuvanje poverljivih podataka , kao što su: lozinke API tokeni SSH ključevi TLS sertifikati Ukratko: Secret = bezbedan način za čuvanje osetljivih informacija u klasteru. 🧠 Zašto se koristi? Da ne hardcoduješ poverljive podatke u YAML fajlove, slike (image-e), ili promenljive okruženja. Kubernetes može da upravlja tim podacima sigurnije nego sa običnim ConfigMap-ovima: Sekreti se čuvaju u base64 kodiranju Mogu se šifrovati na disku (ako je tako podešeno) Imaju stroža pravila pristupa (RBAC) 📄 Primer Secret fajla: apiVersion: v1 kind: Secret metadata: name: moj-secret type: Opaque data: username: dXNlcm5hbWU= # base64("username") password: cGFzc3dvcmQ= # base64("password") Možeš napraviti Secret i komandno: kubectl create secret generic moj-secret \ --from-literal=username=username \ --from-literal=password=password 🧩 Kako se koristi u Podu? 1....

Šta je ConfigMap u Kubernetesu?

  ConfigMap je objekat koji služi za čuvanje konfiguracionih podataka (u obliku parova ključ-vrednost), odvojeno od same aplikacije . Ukratko: ConfigMap = spoljašnja konfiguracija za tvoju aplikaciju. 🧠 Zašto se koristi? Omogućava da aplikacija ostane ista , a konfiguracija se menja bez rekreiranja slike (image-a). Idealno za stvari kao što su: Konfiguracioni fajlovi API ključevi (ne osjetljivi – za sensitive podatke koristi Secret ) Promenljive okruženja (env vars) Argumenti komandne linije 📄 Primer ConfigMap fajla: apiVersion: v1 kind: ConfigMap metadata: name: moja-konfiguracija data: APP_MODE: "production" LOG_LEVEL: "info" 🧩 Kako se koristi? Možeš je "ubaciti" u Pod na nekoliko načina: 1. ✅ Kao environment promenljive: spec: containers: - name: moj-kontejner image: myapp envFrom: - configMapRef: name: moja-konfiguracija U kontejneru ćeš imati promenljive AP...

Šta je Ingress u Kubernetesu?

  Ingress je objekat koji omogućava spoljašnji HTTP/HTTPS pristup aplikacijama koje rade unutar klastera – preko URL-a i domena . Ukratko: Ingress = pametan HTTP/HTTPS "ulaz" u tvoj klaster. 🧱 Kako radi? Radi iznad Service-a . Koristi se da route-uje (prosleđuje) HTTP(S) zahteve ka odgovarajućim servisima na osnovu: URL putanje (npr. /app1 , /admin ) Naziva domena (npr. app.mojsa.it , admin.mojsa.it ) Radi preko Ingress kontrolera – softvera koji obrađuje pravila iz Ingress objekta (npr. nginx ingress controller , traefik , HAProxy ...) 🧠 Zašto je važan? Bez Ingress-a moraš da koristiš NodePort ili LoadBalancer za svaki servis posebno. Sa Ingress-om možeš da imaš jednu tačku ulaza (npr. jedan domen) i da rutiraš sve unutar klastera elegantno. 📄 Primer YAML fajla: apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: primer-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rule...

Šta je Service u Kubernetesu?

  Service (servis) je stalna mrežna apstrakcija koja omogućava pristup Podovima putem fiksne IP adrese i DNS imena , bez obzira na to da li se Podovi menjaju . Drugim rečima: Service je "stalna adresa" za pristup aplikaciji koja se pokreće u Podovima, iako se ti Podovi menjaju u pozadini. 🧠 Zašto je to važno? Kada koristiš Deployment ili ReplicaSet , Kubernetes stalno menja Podove (npr. zbog restarta, skaliranja…). Svaki Pod dobije novu IP adresu , pa ne možeš direktno da se oslanjaš na njih. Zato koristiš Service kao "fiksni ulaz" koji automatski preusmerava saobraćaj na ispravne Podove. ⛓️ Kako radi? Service koristi label selector da pronađe Podove: apiVersion: v1 kind: Service metadata: name: moj-servis spec: selector: app: moja-aplikacija ports: - port: 80 targetPort: 8080 type: ClusterIP Ovo znači: Pronalazi sve Podove koji imaju label: app=moja-aplikacija Kada neko pristupi ovom servisu na portu 80...

Šta je Pod u Kubernetesu?

Pod je najmanja i najosnovnija jedinica koju Kubernetes može da "pokrene". To je objekat koji predstavlja jedan ili više kontejnera (najčešće jedan), koji dele istu mrežu i sistem fajlova. Ukratko: Pod = kontejner(i) + mreža + skladište + metadata Kontejneri unutar jednog poda: Dele IP adresu i portove Dele volume-ove (fajl sistem) Pokreću se zajedno na istom Node-u Zašto postoji Pod ako koristi kontejnere? Kubernetes ne upravlja direktno kontejnerima (npr. Docker) , već koristi Podove da ih "spakuje" zajedno. To omogućava napredne scenarije, kao što su: Glavni kontejner + pomoćni (sidecar) kontejner (npr. za logovanje, proxy, backup, itd.) Lakše restartovanje, skaliranje i održavanje Vizuelna analogija: Zamisli Pod kao sobu , a kontejnere kao ljude u toj sobi: Ljudi (kontejneri) mogu međusobno da pričaju bez odlaska napolje (mreža) Imaju zajednički sto (fajl sistem) gde svi mogu da ostavljaju stvari Ako se seli soba, s...