V dnešnom svete neustále rastie popularita a význam klaudových technológií. Pre nadšencov technológií, študentov alebo malé podniky môže byť vytvorenie vlastného klastra skvelým spôsobom, ako sa naučiť pracovať s nástrojmi na orchestráciu kontajnerov, ako je Kubernetes. V tomto blogu si ukážeme, ako si môžete postaviť a nakonfigurovať vlastný Raspberry Pi klaster, a to na základe bakalárskej práce Daniila Huzenka.
Tento klaster je postavený na doske DeskPi Super6C, ktorá hostí šesť modulov Raspberry Pi Compute Module 4, a je riadený pomocou odľahčenej distribúcie Kubernetes s názvom MicroK8s.
Čo je Raspberry Pi a Kubernetes?
Raspberry Pi je séria malých jednodoskových počítačov, ktoré si získali obrovskú popularitu vďaka svojej nízkej cene, malým rozmerom a všestrannosti. Sú ideálnym nástrojom pre hobby projekty, výučbu programovania, a ako sa ukazuje, aj na budovanie malých, energeticky nenáročných serverových klastrov.
Kubernetes (často označovaný ako K8s) je open-source platforma pôvodne vyvinutá spoločnosťou Google na orchestráciu kontajnerov. Zjednodušene povedané, automatizuje nasadzovanie, škálovanie a správu aplikácií, ktoré sú zabalené v kontajneroch (napríklad pomocou technológie Docker). Stal sa de facto štandardom pre správu moderných, cloud-native aplikácií.
Spojením týchto dvoch technológií – postavením klastra z viacerých Raspberry Pi a jeho správou pomocou Kubernetes – získame cenovo dostupné a výkonné domáce laboratórium. Takéto prostredie je ideálne na učenie sa a experimentovanie s cloudovými technológiami a DevOps postupmi, ktoré sú dnes v IT priemysle mimoriadne žiadané.
Hardvérové Komponenty
Cieľom je vytvoriť funkčný počítačový systém, ktorý bude slúžiť ako stabilná platforma na nasadzovanie a správu rôznych aplikácií.
Potrebné komponenty:
- 1x Doska DeskPi Super6C
- 6x Raspberry Pi 4 Compute Module (CM4)
- 1x Skrinka ITX Case Kit for Deskpi Super6c
- Napájací zdroj a príslušná kabeláž
Zdroj: thesis-39.pdf, Obr. 14
DeskPi Super6C
Základom nášho klastra je doska DeskPi Super6C. Je to klastrová doska vo formáte mini-ITX, ktorá podporuje až 6 modulov Raspberry Pi Compute Module 4. Zabezpečuje komunikáciu medzi jednotlivými RPI modulmi, čím zjednodušuje konfiguráciu a montáž systému.
Zdroj: thesis-39.pdf, Obr. 15
Raspberry Pi 4 Compute Module (CM4)
Srdcom každého uzla v našom klastri je Raspberry Pi Compute Module 4. Tento modul obsahuje procesor, pamäť a eMMC Flash, čo umožňuje konštruktérom využívať hardvér a softvér Raspberry Pi vo vlastných systémoch.
Celý klaster je umiestnený v kompaktnej ITX skrinke, ktorá poskytuje ochranu a zároveň umožňuje jednoduchý prístup k portom a chladeniu.
Zostavenie Klastra
Samotné zostavenie je vďaka doske Super6C a ITX skrinke pomerne jednoduché. Pre detailný postup bol vytvorený videonávod, ktorý vás prevedie celým procesom krok za krokom.
Softvérová Konfigurácia
Po úspešnom zostavení hardvéru prichádza na rad softvérová časť.
Inštalácia Operačného Systému
Každý modul Raspberry Pi v klastri musí mať vlastný operačný systém. Najjednoduchší spôsob je použiť Raspberry Pi Imager. Pre tento projekt bol použitý Ubuntu Lite, ktorý sa nainštaloval na eMMC pamäť každého modulu.
Zdroj: thesis-39.pdf, Obr. 19
Nastavenie Siete
Aby mohli uzly klastra medzi sebou komunikovať a mať prístup na internet, je potrebné správne nakonfigurovať sieť. V tomto prípade úlohu DHCP servera a NAT smerovača plní notebook pripojený ku klastru cez Ethernet.
-
Identifikácia sieťového rozhrania:
ip a
Zdroj: thesis-39.pdf, Obr. 20 -
Konfigurácia
dnsmasqna prideľovanie IP adries a DNS.
Zdroj: thesis-39.pdf, Obr. 21 -
Nastavenie NAT na notebooku, aby mali uzly prístup na internet.
Zdroj: thesis-39.pdf, Obr. 22 -
Overenie pridelených IP adries.
Zdroj: thesis-39.pdf, Obr. 25
Inštalácia MicroK8s
Keď máme sieť pripravenú, môžeme nainštalovať Kubernetes, konkrétne distribúciu MicroK8s od Canonical.
-
Inštalácia na všetkých uzloch:
sudo snap install microk8s --classic -
Vytvorenie klastra: Na jednom uzle (master) spustíme príkaz na pridanie ďalších uzlov.
sudo microk8s add-node -
Pripojenie worker uzlov: Na ostatných uzloch (worker) použijeme vygenerovaný reťazec na pripojenie ku klastru.
sudo microk8s join <master_ip>:<port>/<token> -
Overenie stavu klastra: Na master uzle si môžeme overiť, že sa všetky uzly úspešne pripojili.
microk8s kubectl get nodes
Zdroj: thesis-39.pdf, Obr. 26
Monitorovanie Klastra: Prečo a Ako?
Čo je to monitorovanie? Monitorovanie je kľúčový proces pre pochopenie výkonu klastra, jeho stavu a detekciu problémov v reálnom čase. V kontexte Kubernetes to znamená systematický zber a analýzu dát (metrík, logov) z každého komponentu klastra – od jednotlivých podov a kontajnerov až po samotné hardvérové uzly. Efektívny monitoring umožňuje správcom identifikovať úzke miesta (napr. nedostatok CPU alebo pamäte), predchádzať výpadkom, optimalizovať alokáciu zdrojov a v konečnom dôsledku zabezpečiť spoľahlivosť a plynulý beh aplikácií.
Aké riešenie sme použili?
Pre náš klaster sme nasadili komplexné monitorovacie riešenie, ktoré je v distribúcii MicroK8s dostupné ako jednoducho aktivovateľný doplnok (observability stack). Toto riešenie pozostáva z troch hlavných, v praxi overených nástrojov:
-
Metrics Server: Je to základný kameň monitoringu. Agreguje údaje o využití zdrojov (CPU, pamäť) z jednotlivých uzlov a podov v klastri. Tieto metriky sú nevyhnutné pre ďalšie komponenty Kubernetes, ako je napríklad Horizontal Pod Autoscaler, ktorý dokáže automaticky škálovať aplikácie na základe ich zaťaženia.
-
Kubernetes Dashboard: Predstavuje jednoduché a prehľadné grafické webové rozhranie na správu klastra. Umožňuje rýchlo získať prehľad o stave aplikácií bežiacich v klastri, prezerať logy, či spravovať jednotlivé Kubernetes objekty bez nutnosti použitia príkazového riadku.
-
Prometheus & Grafana: Toto je silná a v cloud-native svete de facto štandardná kombinácia pre pokročilý monitoring a vizualizáciu.
- Prometheus je časozberná databáza, ktorá aktívne zbiera a ukladá metriky v pravidelných intervaloch.
- Grafana je vizualizačný nástroj, ktorý sa pripája na Prometheus (a iné zdroje dát) a umožňuje vytvárať bohaté, interaktívne a prispôsobiteľné dashboardy. Vďaka nim je možné sledovať historický vývoj metrík, nastavovať upozornenia (alerting) a hĺbkovo analyzovať správanie systému.
Aktivácia celého balíka je jednoduchá pomocou príkazov MicroK8s:
microk8s enable metrics-server
microk8s enable dashboard
microk8s enable observability
Po správnom nastavení a presmerovaní portov získate prístup k prehľadným dashboardom, ktoré vám poskytnú detailný vhľad do fungovania vášho klastra.
Kubernetes Dashboard:
Zdroj: thesis-39.pdf, Obr. 30
Grafana Dashboard:
Zdroj: thesis-39.pdf, Obr. 32
Záver
Vďaka tomuto projektu máme k dispozícii plne funkčný klaster pozostávajúci zo šiestich zariadení Raspberry Pi, ktoré sú navzájom prepojené a spravované pomocou MicroK8s. Takýto klaster predstavuje výbornú a cenovo dostupnú platformu pre vzdelávacie a experimentálne účely.
Môže slúžiť ako prístupná a flexibilná platforma pre ďalšie vzdelávanie a experimentovanie študentov, testovanie vlastných aplikácií alebo dokonca na hosťovanie malých webových služieb. Budúci výskum sa môže zamerať na integráciu tohto lokálneho klastra s cloudovým klastrom s cieľom vytvoriť hybridné cloudové riešenie.