Ukratko

Najvažnije iz članka

  • Edge computing pomiče računalstvo bliže izvoru podataka, smanjujući latenciju i propusnost, ključno za IoT i real-time aplikacije.
  • K3s i MicroK8s su lagane Kubernetes distribucije optimizirane za rubna okruženja s ograničenim resursima, poput Raspberry Pi uređaja.
  • K3s je minimalistički, s jedinstvenim binarnim fajlom i SQLite bazom, dok MicroK8s koristi `snap` pakete i nudi bogat skup dodataka.
  • Implementacija Kubernetes klastera na rubu mreže omogućuje standardiziranu orkestraciju aplikacija, zahtijeva optimizaciju kontejnera i pažnju na sigurnost.
Sadržaj članka
  1. Što je Edge Computing i zašto je važan?
  2. Ključne prednosti Edge Computinga:
  3. Kubernetes na rubu: Izazovi i rješenja
  4. K3s: Minimalistički Kubernetes od Ranchera
  5. MicroK8s: Snappy Kubernetes od Canonicala
  6. Implementacija Edge klastera s K3s i MicroK8s
  7. Priprema sustava (za obje distribucije)
  8. K3s instalacija i konfiguracija
  9. MicroK8s instalacija i konfiguracija
  10. Razmještanje aplikacija na Edge klasteru
  11. Primjer: Razmještanje Nginx web servera
  12. Razmatranja za Edge aplikacije
  13. Napredne teme i Best Practices
  14. Upravljanje s više Edge lokacija
  15. Sigurnost na rubu mreže
  16. Monitoring i Logiranje
  17. Hardverski odabir
  18. Zaključak

U posljednjih nekoliko godina, trend decentralizacije računalstva postao je sve izraženiji, a edge computing se pozicionira kao ključna paradigma za budućnost. Umjesto da se svi podaci i procesiranje centraliziraju u velikim podatkovnim centrima (cloudu), edge computing donosi računalne resurse bliže izvoru podataka – na 'rub mreže'. Ovo je posebno važno u kontekstu Interneta stvari (IoT), pametnih gradova, industrije 4.0 i telekomunikacijskih mreža, gdje niska latencija, visoka pouzdanost i sigurnost igraju ključnu ulogu. Kubernetes, kao de facto standard za orkestraciju kontejneriziranih aplikacija, prirodno se nameće kao rješenje i za edge okruženja. Međutim, 'puni' Kubernetes je često previše resursno zahtjevan za rubne uređaje. Tu na scenu stupaju lagane distribucije poput K3s i MicroK8s.

Što je Edge Computing i zašto je važan?

Edge computing je distribuirana arhitektura računalstva koja procesira podatke bliže mjestu gdje se podaci generiraju, umjesto da se oslanja na centralizirani cloud ili podatkovni centar. Zamislite pametnu tvornicu s tisućama senzora, autonomna vozila, ili sustave za nadzor gradskog prometa. Slanje svih sirovih podataka u cloud na analizu generiralo bi ogromne troškove propusnosti, kašnjenja i sigurnosne rizike. Edge computing omogućuje inicijalnu obradu, filtriranje i analizu podataka lokalno, šaljući u cloud samo relevantne ili agregirane informacije.

Ključne prednosti Edge Computinga:

  • Niska latencija: Brži odgovor aplikacija i servisa zbog smanjene udaljenosti do servera. Ključno za kritične sustave poput autonomnih vozila ili industrijske automatizacije.
  • Smanjena propusnost: Podaci se procesiraju lokalno, smanjujući količinu podataka koja se mora slati preko mreže do clouda.
  • Povećana pouzdanost i dostupnost: Aplikacije mogu nastaviti raditi čak i ako je prekinuta veza s cloudom.
  • Poboljšana sigurnost: Manja ekspozicija osjetljivih podataka jer se procesiraju lokalno, a ne u javnom cloudu.
  • Sukladnost (Compliance): Lakše ispunjavanje regulatornih zahtjeva za lokalnošću pohrane i obrade podataka (npr. GDPR).

Kubernetes na rubu: Izazovi i rješenja

Standardna implementacija Kubernetesa, poznata kao kubeadm distribucija, dizajnirana je za robusne podatkovne centre s obiljem računalnih, memorijskih i mrežnih resursa. Njegovi zahtjevi za resursima i kompleksnost upravljanja često su prepreka za edge okruženja. Tipični edge uređaji su mali, jeftini, s ograničenom snagom i memorijom (npr. Raspberry Pi, industrijski PC-ji, IoT gatewayi). Također, često rade u nepovoljnim uvjetima, daleko od centralizirane infrastrukture.

Ovdje dolaze do izražaja lagane Kubernetes distribucije, prvenstveno K3s i MicroK8s, koje su dizajnirane s ograničenjima edge okruženja na umu.

K3s: Minimalistički Kubernetes od Ranchera

K3s je lagana, certificirana Kubernetes distribucija koju razvija Rancher Labs (danas dio SUSE-a). Razlikuje se po tome što je upola manji od standardnog Kubernetesa i dizajniran za rad na uređajima s ograničenim resursima. K3s spaja mnoge Kubernetes komponente u jedinstveni binarni fajl, koristi SQLite kao zadanu bazu podataka (umjesto etcd), i uklanja mnoge legacy i alpha značajke koje nisu potrebne u većini edge slučajeva.

  • Ključne značajke K3s-a:
    • Jednostavna instalacija: Jedna naredba za instalaciju.
    • Mali footprint: Samo jedna binarna datoteka (k3s) veličine manje od 100MB.
    • SQLite kao zadana baza podataka: Mogućnost korištenja i eksternih baza podataka poput PostgreSQL ili MySQL.
    • Ugrađene komponente: Traefik Ingress Controller, CoreDNS, Flannel CNI by default.
    • Podrška za ARM: Izvrsno radi na Raspberry Pi i sličnim SBC (Single Board Computer) uređajima.

MicroK8s: Snappy Kubernetes od Canonicala

MicroK8s je također lagana Kubernetes distribucija, razvijena od strane Canonicala (tvrtke iza Ubuntua). Fokusiran je na jednostavnost instalacije i korištenja, te dolazi kao snap paket. Snap sustav osigurava da MicroK8s bude izoliran od ostatka sustava i da se lako instalira i deinstalira bez ometanja drugih paketa. Iako je nešto veći od K3s-a, MicroK8s nudi snažan skup ugrađenih dodataka (add-ons) koji se lako aktiviraju.

  • Ključne značajke MicroK8s-a:
    • Instalacija putem snap paketa: Jedna naredba za instalaciju na bilo kojem Linux sustavu koji podržava snapd.
    • Ugrađeni dodaci: Jednostavna aktivacija dodataka poput DNS-a, Ingress-a, Metričke API-ja, Istio-a, Knative-a i mnogih drugih.
    • Više načina konfiguracije: Fleksibilnost u postavljanju klastera (single-node, multi-node).
    • Visoka dostupnost (HA): Podržava HA konfiguracije za produkcijska okruženja.
    • Ažuriranja: Jednostavno i sigurno ažuriranje putem snap mehanizma.

Implementacija Edge klastera s K3s i MicroK8s

U ovom tutorialu pokazat ćemo kako postaviti klaster koristeći obje distribucije. Za potrebe primjera, pretpostavit ćemo da koristimo Raspberry Pi 4 (2GB ili više RAM-a) s instaliranim 64-bitnim operativnim sustavom (npr. Raspberry Pi OS Lite 64-bit).

Priprema sustava (za obje distribucije)

Prije instalacije, osigurajte da je sustav ažuriran:

sudo apt update && sudo apt upgrade -y

Poželjno je osigurati statičku IP adresu za čvorove, pogotovo ako planirate multi-node klaster.

K3s instalacija i konfiguracija

K3s instalacija je izrazito jednostavna. Na primarnom čvoru (serveru):

curl -sfL https://get.k3s.io | sh -

Ova naredba preuzima i instalira K3s server. Nakon instalacije, K3s će automatski pokrenuti potrebne servise. Možete provjeriti status:

sudo systemctl status k3s

Da biste pristupili klasteru s kubectl, konfiguracijska datoteka se nalazi na /etc/rancher/k3s/k3s.yaml.

sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
chmod 600 ~/.kube/config

kubectl get nodes

Trebali biste vidjeti svoj server čvor. Da biste dodali agentske čvorove, trebat će vam NODE_TOKEN s primarnog čvora:

sudo cat /var/lib/rancher/k3s/server/node-token

Na svakom agentskom čvoru, izvršite sljedeću naredbu, zamjenjujući K3S_URL i K3S_TOKEN:

curl -sfL https://get.k3s.io | K3S_URL=https://<IP_SERVER_CNODA>:6443 K3S_TOKEN=<NODE_TOKEN> sh -

Nakon nekoliko trenutaka, novi čvorovi trebali bi se pojaviti pri pokretanju kubectl get nodes na serveru.

MicroK8s instalacija i konfiguracija

Instalacija MicroK8s-a je također jedna linija koda, zahvaljujući snap paketu:

sudo snap install microk8s --classic

Nakon instalacije, možete provjeriti status:

sudo microk8s status --wait-ready

MicroK8s dolazi s ugrađenim kubectl aliasom. Da biste ga koristili bez sudo, dodajte svog korisnika u grupu microk8s:

sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
newgrp microk8s

Sada možete koristiti microk8s kubectl ili kreirati alias. Provjerite čvorove:

microk8s kubectl get nodes

MicroK8s dodaci (add-ons) se lako aktiviraju:

microk8s enable ingress dns dashboard

Za spajanje dodatnih čvorova, na primarnom čvoru generirajte token:

microk8s add-node

Ova će naredba ispisati komandu koju trebate izvršiti na agentskom čvoru, npr.:

microk8s join <IP_SERVER_CNODA>:25000/<TOKEN>

Razmještanje aplikacija na Edge klasteru

Jednom kada je klaster postavljen, proces razmještanja aplikacija je identičan kao i na bilo kojem drugom Kubernetes klasteru. Međutim, važno je uzeti u obzir ograničenja edge okruženja.

Primjer: Razmještanje Nginx web servera

Kreirajmo jednostavan deployment i service za Nginx.

nginx-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80

nginx-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30080 # Primjer NodePorta
  type: NodePort

Primijeni ove datoteke:

kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml

Ili za MicroK8s:

microk8s kubectl apply -f nginx-deployment.yaml
microk8s kubectl apply -f nginx-service.yaml

Nakon što se pod pokrene, Nginx bi trebao biti dostupan na IP adresi bilo kojeg čvora klastera, na portu 30080 (ili drugom NodePortu koji ste odabrali).

Razmatranja za Edge aplikacije

  • Veličina i optimizacija kontejnera: Koristite lagane bazne slike (npr. Alpine) za smanjenje veličine kontejnera.
  • Upravljanje resursima: Definirajte requests i limits za CPU i memoriju kako biste spriječili da jedna aplikacija preoptereti čvor.
  • Podrška za arhitekturu: Osigurajte da su vaše kontejnerske slike dostupne za ARM arhitekturu ako koristite Raspberry Pi ili slične uređaje.
  • Lokalno skladištenje: Razmotrite rješenja za lokalno skladištenje podataka (npr. HostPath, Longhorn za K3s) jer distribuirano skladištenje može biti resursno zahtjevno.
  • Mrežna povezanost: Budite spremni na povremene prekide mrežne povezanosti s cloudom. Dizajnirajte aplikacije da budu otporne na takve scenarije.

Napredne teme i Best Practices

Upravljanje s više Edge lokacija

Za veće implementacije s desecima ili stotinama edge klastera, ručno upravljanje postaje neodrživo. Rancher (za K3s) ili Landscape (za MicroK8s) nude centralizirano upravljanje klasterima iz jedne konzole, omogućavajući automatizaciju, sigurnosno kopiranje i nadogradnje.

Sigurnost na rubu mreže

Sigurnost je ključna u edge okruženjima. Preporučuju se sljedeće mjere:

  • Minimalna ekspozicija: Otvarajte samo potrebne portove.
  • Redovite nadogradnje: Održavajte softver klastera i operativnog sustava ažurnim.
  • RBAC (Role-Based Access Control): Strogo definirajte tko može pristupiti i što može raditi unutar klastera.
  • Enkripcija podataka: Podaci u tranzitu i mirovanju trebali bi biti enkriptirani.
  • Hardening OS-a: Ograničite nepotrebne servise i korisnike na edge uređajima.

Monitoring i Logiranje

Iako resursno zahtjevno, monitoring i logiranje su neophodni. Razmotrite lagane alate poput Prometheus (s manjim agentima) i Grafana za metrike, te Fluent Bit ili Loki za logove. Centralizacija logova i metrika u cloud je idealna, ali uz pametno filtriranje i agregaciju na rubu.

Hardverski odabir

Odabir pravog hardvera ključan je za uspjeh. Raspberry Pi je odličan za prototipiranje i jednostavne slučajeve. Za robusnije produkcijske primjene, industrijski mini-PC-jevi ili specijalizirani edge gatewayi s podrškom za PoE (Power over Ethernet), širokim rasponom temperatura i otpornošću na vibracije su bolji izbor. Uvijek obratite pažnju na CPU arhitekturu (x86 vs. ARM) i kompatibilnost softvera.

Zaključak

Edge computing je neizbježan smjer razvoja distribuiranih sustava, a Kubernetes, posebno u svojim laganim distribucijama K3s i MicroK8s, pruža moćan i fleksibilan okvir za orkestraciju aplikacija na rubu mreže. Iako postoje izazovi specifični za edge okruženja – ograničeni resursi, nestabilna povezanost i sigurnost – ove distribucije nude rješenja koja omogućuju developerima i inženjerima da iskoriste pune prednosti Kubernetesa izvan tradicionalnih podatkovnih centara. Razumijevanje i implementacija ovih tehnologija ključni su za izgradnju otpornih, učinkovitih i skalabilnih sustava u novoj eri decentraliziranog računalstva.

S K3s-om i MicroK8s-om, san o 'cloud at the edge' postaje stvarnost, otvarajući vrata inovacijama u IoT-u, industriji i telekomunikacijama, gdje je brza reakcija i lokalna obrada podataka od presudne važnosti. S obzirom na sve veću količinu podataka generiranih na rubu, ulaganje u ove tehnologije predstavlja stratešku prednost za budućnost.

Izvori i dodatno čitanje

  1. K3s - Lightweight Kubernetes
  2. MicroK8s - Light, resilient, upstream Kubernetes
  3. Edge Computing with Kubernetes: A Practical Guide
  4. What is Edge Computing?
B
Uredništvo portala

BAJT

Službeni autorski profil redakcije portala BAJT. Sadržaj priprema i provjerava uredništvo portala.