K3s je odľahčená distribúcia Kubernetes, vyvinutá spoločnosťou Rancher Labs, ktorá umožňuje rýchle a jednoduché nasadenie Kubernetes klastra aj na zariadeniach s obmedzenými zdrojmi. Je optimalizovaný na nízku spotrebu RAM, CPU a úložiska, pričom si zachováva všetky kľúčové funkcie Kubernetes – od nasadzovania aplikácií až po ich správu a škálovanie.
Vďaka malej pamäťovej stope (typicky do 512 MB RAM na uzol) a jednoduchosti inštalácie je k3s ideálnym riešením pre projekty Edge computingu, IoT, vývojové prostredia a menšie produkčné nasadenia.
Jeho hlavná sila spočíva v tom, že spúšťa kompletný Kubernetes control plane v jednom binárnom súbore a odstraňuje nepotrebné komponenty, čím šetrí výkon a zjednodušuje konfiguráciu.
Prečo práve Raspberry Pi – beby cloud
Raspberry Pi je cenovo dostupný a energeticky nenáročný jednodeskový počítač, ktorý sa vo svete IT stal populárnym pre svoje široké možnosti nasadenia – od domácich serverov až po komplexné clustre.
V kombinácii s k3s dokáže Raspberry Pi slúžiť ako plnohodnotný Kubernetes klaster vhodný na:
- vývoj a testovanie aplikácií,
- simuláciu distribuovaných prostredí,
- bežiace IoT projekty,
- výučbu a experimenty s cloud-native technológiami.
Výhodou je aj nízka spotreba energie, tichá prevádzka a možnosť fyzicky umiestniť viacero uzlov na malý priestor, čo z neho robí atraktívnu alternatívu pre domácich nadšencov aj profesionálov, ktorí chcú experimentovať s Kubernetes.
Čo v článku nájdete
V ďalších častiach sa budeme venovať:
Príprave Raspberry Pi na inštaláciu k3s (OS, sieť, SSH, nastavenia).
Postupu nasadenia master uzla s k3s.
Pridaniu worker uzlov do klastra.
Kontrole funkčnosti a testovaniu nasadenia.
Príprava Raspberry Pi na inštaláciu k3s
Aby bol k3s klaster na Raspberry Pi stabilný a pripravený na dlhodobú prevádzku, je potrebné pred samotnou inštaláciou pripraviť všetky uzly. Nasledujúce kroky zabezpečia optimalizované prostredie pre Kubernetes a minimalizujú problémy počas prevádzky.
1. Výber a inštalácia operačného systému
- Odporúčané je použiť Raspberry Pi OS Lite (64-bit) alebo Ubuntu Server 22.04 LTS (64-bit).
- Vyhnite sa desktopovým verziám – zbytočne spotrebúvajú RAM a CPU.
- OS nahrajte na microSD kartu alebo SSD pomocou Raspberry Pi Imager.
- Pri inštalácii nastavte:
- Hostname (napr.
rpi-master
,rpi-worker1
,rpi-worker2
). - Povolenie SSH prístupu.
- Nastavenie silného hesla pre používateľa
pi
alebo vytvorenie nového používateľa.
- Hostname (napr.
2. Aktualizácia systému
Po prvom spustení sa prihláste na každý uzol a aktualizujte balíčky:
sudo apt update && sudo apt full-upgrade -y
sudo reboot
Tým zabezpečíte aktuálne bezpečnostné záplaty a kompatibilitu knižníc potrebných pre k3s.
3. Nastavenie statickej IP adresy
K3s klaster vyžaduje, aby sa master aj workery vedeli navzájom spoľahlivo nájsť. Najjednoduchšie je priradiť im statické IP adresy:
- Nastavte IP adresy buď v DHCP serveri (statické lease) alebo priamo v súbore
/etc/dhcpcd.conf
(Raspberry Pi OS) / Netplan konfigurácii (Ubuntu Server).
4. Aktivácia a zabezpečenie SSH
Ak ste SSH nepovolili už pri inštalácii, zapnite ho:
sudo systemctl enable ssh
sudo systemctl start ssh
Odporúčané bezpečnostné opatrenia:
- Zakázať prihlasovanie cez heslo a povoliť iba SSH kľúče.
- Zmeniť štandardný port 22 na iný (napr. 2222).
5. Nastavenie hostname
Na každom Raspberry Pi nastavte jedinečný hostname:
sudo hostnamectl set-hostname rpi-master
(reštartujte alebo odhláste a prihláste sa znova, aby sa zmena prejavila)
6. Vypnutie nepotrebných služieb a swapu
K3s na Raspberry Pi pracuje lepšie bez swapu:
sudo dphys-swapfile swapoff
sudo systemctl disable dphys-swapfile
7. Povolenie cgroups (Control Groups)
Cgroups sú potrebné na správu zdrojov v Kubernetes.
Otvorte súbor /boot/cmdline.txt
a pridajte na koniec riadku:
cgroup_memory=1 cgroup_enable=memory
Potom reštartujte zariadenie.
8. Synchronizácia času
Pre stabilitu klastra je dôležitá synchronizácia systémového času:
sudo timedatectl set-ntp true
Overte nastavenie:
timedatectl

Týmto je Raspberry Pi pripravené na inštaláciu k3s. V ďalšej časti sa bude pokračovať nastavením master uzla a následným pridaním worker uzlov do klastra.
Inštalácia k3s na master uzol
Po príprave Raspberry Pi môžeme pristúpiť k inštalácii master uzla (control plane). Tento uzol bude riadiť celý Kubernetes klaster a uchovávať jeho stav.
1. Prihlásenie na master uzol
Pripojte sa na master Raspberry Pi cez SSH (z iného počítača alebo priamo cez konzolu):
ssh pi@IP_ADRESA_MASTER
(IP_ADRESA_MASTER nahraďte skutočnou IP adresou master uzla)
2. Spustenie inštalácie k3s
K3s poskytuje jednoduchý inštalačný skript, ktorý nainštaluje všetky potrebné komponenty a nakonfiguruje klaster.
Spustite:
curl -sfL https://get.k3s.io | sh -
Skript automaticky:
- Stiahne najnovšiu verziu k3s.
- Nainštaluje ju ako systémovú službu (
/etc/systemd/system/k3s.service
). - Spustí API server, scheduler a controller manager.
- Uloží konfiguráciu do
/etc/rancher/k3s/k3s.yaml
.

3. Overenie stavu klastra
Po dokončení inštalácie skontrolujte, či k3s beží:
sudo systemctl status k3s

Získajte informácie o uzle a podoch:
k3s kubectl get nodes
k3s kubectl get pods -A

Ak všetko prebehlo správne, uvidíte master uzol so stavom Ready a základné systémové komponenty v stave Running.
4. Získanie tokenu pre worker uzly
Aby sa ďalšie Raspberry Pi mohli pripojiť ako worker uzly, potrebujete join token:
sudo cat /var/lib/rancher/k3s/server/node-token
Výstup bude vyzerať napríklad takto:
K10f9c4a8bcd89f8b3cbb98b8d5c8fdaac5a678c47a7e90a3d3bb8c1234567890::server:1234567890abcdef
Tento token si uložte – použijete ho pri konfigurácii worker uzlov.
Pridanie worker uzlov do klastra
Po úspešnej inštalácii master uzla môžeme k3s klaster rozšíriť o ďalšie Raspberry Pi ako worker uzly. Tie budú vykonávať reálnu prácu – spúšťať vaše aplikácie, kontajnery a služby.
1. Príprava worker uzlov
Pred samotným pripojením sa uistite, že každý worker uzol má:
- Nainštalovaný a aktualizovaný OS podľa postupu z časti Príprava Raspberry Pi.
- Statickú IP adresu a hostname (napr.
rpi-worker1
,rpi-worker2
). - Povolený SSH prístup.
- Povolené cgroups v
/boot/cmdline.txt
(rovnako ako master).
2. Prihlásenie na worker uzol
Pripojte sa cez SSH na jeden z worker uzlov:
ssh pi@IP_ADRESA_WORKER
3. Spustenie inštalácie k3s pre worker
Na worker uzloch neinštalujeme kompletný control plane, ale iba k3s agent.
Potrebujete poznať:
- IP adresu master uzla (
MASTER_IP
). - Join token z mastera (
NODE_TOKEN
), ktorý ste získali príkazom:
sudo cat /var/lib/rancher/k3s/server/node-token
Spustite na worker uzle:
curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=NODE_TOKEN sh -

4. Overenie stavu worker uzla
Po inštalácii sa worker automaticky pripojí k masteru. Overte to na master uzle:
k3s kubectl get nodes
Mali by ste vidieť master aj worker uzly so stavom Ready:

5. Opakovanie pre ďalšie workery
Ak máte viac worker uzlov, zopakujte postup od kroku 2 pre každý z nich s rovnakým K3S_URL
a K3S_TOKEN
.
6. Tip: Overenie komunikácie v klastri
Na master uzle môžete otestovať komunikáciu a nasadiť jednoduchý testovací pod:
k3s kubectl run test-nginx --image=nginx --port=80
k3s kubectl get pods -o wide
Pod by sa mal spustiť na jednom z worker uzlov, čo potvrdí funkčnosť klastra.

Kontrola funkčnosti a testovanie nasadenia
Po pridaní všetkých worker uzlov je potrebné overiť, či celý k3s klaster funguje správne, či sú všetky uzly v stave Readya či je možné nasadiť aplikácie. Tento krok je kľúčový na potvrdenie, že sieťová komunikácia, plánovanie podov a orchestrace v klastri prebiehajú bez problémov.
1. Overenie stavu uzlov
Na master uzle spustite:
k3s kubectl get nodes -o wide
Skontrolujte:
- STATUS: všetky uzly by mali mať stav
Ready
. - ROLES: master má rolu
control-plane
, workery nemusia mať definovanú rolu. - VERSION: verzia Kubernetes (k3s) by mala byť rovnaká na všetkých uzloch.
- INTERNAL-IP: IP adresy by mali zodpovedať nastaveniam z prípravy.

2. Overenie systémových podov
K3s pri štarte spúšťa viaceré systémové komponenty – CoreDNS, traefik (ak ste ho ponechali), storage provisioner a ďalšie.
Zobrazíte ich príkazom:
k3s kubectl get pods -A
Všetky systémové pody by mali byť v stave Running alebo Completed.

3. Nasadenie testovacej aplikácie
Na overenie funkčnosti je dobré nasadiť jednoduchú aplikáciu – napríklad Nginx:
k3s kubectl create deployment test-nginx --image=nginx
Po nasadení skontrolujte, na ktorom uzle beží:
k3s kubectl get pods -o wide
Výstup ukáže IP adresu podu a uzol, na ktorom bol naplánovaný. Ak sa pod spustil na workeri, znamená to, že plánovanie funguje správne.

4. Sprístupnenie aplikácie cez Service
Aby ste si mohli testovaciu aplikáciu zobraziť v prehliadači, vytvorte službu typu NodePort:
k3s kubectl expose deployment test-nginx --type=NodePort --port=80
k3s kubectl get service test-nginx
Výstup ukáže priradený NodePort (napr. 30080).

Potom otvorte prehliadač a zadajte:
http://IP_ADRESA_KTORÉHOKOĽVEK_UZLA:NodePort
Ak sa zobrazí predvolená stránka Nginxu, klaster je plne funkčný.
5. Vyčistenie testovacích zdrojov
Po teste môžete pod a službu odstrániť:
k3s kubectl delete deployment test-nginx
k3s kubectl delete service test-nginx
Odborník na kybernetickú bezpečnosť, správu Azure Cloud a VMware onprem. Využíva technológie, ako Checkmk a MRTG, na monitorovanie siete a zvyšovanie efektívnosti a bezpečnosti IT infraštruktúry. Kontakt: hasin(at)mhite.sk