Sa punem chihuahua-urile (cele 3 lenovo M710q si M715q) la munca. Pe langa plex, qbittorrent, NFS si ce mai hosteaza ei pentru “home” vreau sa continui cu “learning path-ul”. Vor trebui sa hosteze un cluster de Kubernetes 1.32 pe care sa-mi fac eu mendrele. As vrea sa fac o copie a blogului asta… si sa o hostez acolo, in paralel cu asta. Pana acolo-i mult de munca asa ca incep cu ISO-ul cel mai recent de debian si fac 3VM-uri.

Am ajuns la momentul mult așteptat (de mine): avem un cluster de 3 servere Linux, bazate pe Debian. Dacă sunteți aici, presupun că știți deja să instalați un sistem de operare, așa că să trecem direct la configurație.

Configurație de bază

Am alocat resursele următoare pentru fiecare nod, iar rețeaua este configurată în 10.0.0.0/24. DHCP-ul a fost generos și a oferit următoarele IP-uri:

  • k8s-control: 4vCPU, 8GB RAM, 20GB stocare (IP: 10.0.0.27)
  • k8s-worker1: 4vCPU, 8GB RAM, 20GB stocare (IP: 10.0.0.28)
  • k8s-worker2: 4vCPU, 8GB RAM, 20GB stocare (IP: 10.0.0.29)

Teoretic, resursele pot fi reduse (de exemplu, 2vCPU și 4GB RAM), dar recomand să alocați mai mult pentru a evita problemele legate de pod-uri care nu pornesc din lipsă de resurse.

Editarea fișierului /etc/hosts

Pe toate nodurile, adăugăm următoarele intrări pentru a asigura rezolvarea corectă a numelor:

10.0.0.27   k8s-control.ill.lan   k8s-control
10.0.0.28   k8s-worker1.ill.lan   k8s-worker1
10.0.0.29   k8s-worker2.ill.lan   k8s-worker2

Dezactivăm Swap

Pentru că kubelet și swap-ul nu sunt prieteni:

swapoff -a
sed -i '/ swap / s/^\(.*\)$/#/g' /etc/fstab

Configurăm kernel-ul pentru Kubernetes

Asigurăm că modulul kernel-ului este pregătit:

cat <<EOF | tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

$ modprobe overlay
$ modprobe br_netfilter

cat <<EOF | tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

$ sysctl --system

Instalarea containerd

apt update
apt -y install containerd

Modificăm configurația pentru a activa SystemdCgroup:

containerd config default | tee /etc/containerd/config.toml >/dev/null 2>&1
nano /etc/containerd/config.toml

Căutați secțiunea [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] și schimbați SystemdCgroup = false în SystemdCgroup = true.

Repornim serviciul:

systemctl restart containerd && systemctl enable containerd

Adăugăm repo-ul Kubernetes

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

Instalăm uneltele Kubernetes

apt update
apt install kubelet kubeadm kubectl -y
apt-mark hold kubelet kubeadm kubectl

Inițializarea cluster-ului Kubernetes

Creăm un fișier kubelet.yaml:

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: "1.32.0"
controlPlaneEndpoint: "k8s-control"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration

Rulăm comanda:

kubeadm init --config kubelet.yaml

Configurăm accesul pentru utilizatorul non-root:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Testăm cluster-ul:

kubectl get nodes
kubectl cluster-info

Ar trebui să vedem control plane-ul activ. Pentru a adăuga noduri, folosim comanda kubeadm join generată automat:

kubeadm join k8s-control:6443 --token TOKEN --discovery-token-ca-cert-hash SHA256

Alegerea și instalarea unui CNI

Kubernetes nu instalează by default niciun CNI (Container Network Interface) deoarece este compatibil cu prea multe opțiuni și lasă alegerea la latitudinea utilizatorului. Alegerea unui CNI depinde de nevoile rețelelor și de experiența utilizatorului.

Opțiuni populare pentru CNI și nivelul de dificultate:

  1. Flannel (ușor): Simplu de instalat și configurat, perfect pentru homelab-uri. Are performanțe decente pentru rețele simple.
    Instrucțiuni de instalare
  2. Calico (mediu): Ideal pentru cei care vor funcționalități suplimentare precum Network Policies. Este ușor de folosit în homelab-uri cu nevoi moderate.
    Instrucțiuni de instalare
  3. Cilium (avansat): Alegerea potrivită pentru cei care doresc performanță ridicată, securitate avansată și integrare cu eBPF. Recomandat pentru homelab-uri avansate.
    Instrucțiuni de instalare

Exemplu de instalare Cilium:

helm repo add cilium https://helm.cilium.io/
helm repo update
helm install cilium cilium/cilium --version 1.14.0 \
    --namespace kube-system \
    --set kubeProxyReplacement=partial \
    --set k8sServiceHost=k8s-control \
    --set k8sServicePort=6443

Continuați aventura Kubernetes! În episodul următor: configurarea aplicațiilor pe cluster și gestionarea volumelor de stocare.

Testele au vorbit! Dacă folosiți Proxmox pentru a vă construi propriul datacenter în sufragerie sau mai bine in debara, probabil v-ați gândit: „Oare TrueNAS ar merge ca VM?” Ei bine, răspunsul este: da, merge. Dar și o Dacie 1300 poate merge pe un drum forestier, doar că s-ar putea să vă trebuiască un ciocan și ceva noroc. TrueNAS, favoritul meu, nu joaca fair cu proxmox. TrueNAS stie sa dea si file level si block prin iscsi… e f nice.

Virtualizarea TrueNAS vine cu beneficii, dar și cu provocări. Dacă acest „bagaj” devine prea greu, există alternative care, deși nu sunt perfecte, s-ar putea să vă facă viața mai ușoară. Hai să vedem despre ce este vorba!


Probleme intalnite

  1. Performanța discului (sau indisponibilitatea lui)
    TrueNAS adoră ZFS. Iar ZFS, ca orice sistem de fișiere sofisticat, vrea acces direct la hardware. Virtualizarea adaugă un strat suplimentar de „telefon fără fir”, iar performanța poate suferi. Tot la fel, in cazul in care faceti passtrhough unui device USB (un seagate pe usb) catre VM-ul TrueNAS se poate sa nu functioneze cum trebuie, asta am patit eu, nu am reusit sa formatez disk-ul sa il folosesc. NU A VRUT. Am testat direct pe fier si a fost ok. Cica problemele ar fi fost cauzate de quirk-urile necesare in TrueNAS dar pentru mine a fost deal-breaker, aveam nevoie de aia 3TB de pe USB.
    Soluție:
    • Configurați PCI passthrough pentru ca TrueNAS să vorbească direct cu discul, nu prin translatorul Proxmox.
    • Nu folosiți fișiere de disc virtuale (.qcow2). TrueNAS vrea „fier”, nu jucării.
    1. Foamea de memorie
      ZFS mănâncă RAM de parcă ar fi la bufet suedez sau la all inclusive la turci. Alocați prea puțin și veți simți cum performanța se îngroapă în swap. Eu am folosit 16GB si cu disk-urile pe care le-am putut folosi totul a fost perfect, saturam reteaua de storage iar latentele din VM-uri erau satisfacatoare.
      Soluție:
      • Nu fiți zgârciți: dați-i 8-16 GB RAM sau chiar mai mult in functie de cati TB aveti. Dacă serverul dvs. geme, poate e timpul să investiți într-un upgrade.
    1. Rețea lentă
      O rețea prost configurată este ca un drum aglomerat: nimeni nu ajunge la timp. Iar dacă TrueNAS este folosit pentru stocare centralizată, latențele mici sunt cruciale. Pentru un homelab folositi minim 1GB/s si daca este posibil faceti teaming sau creati o retea separata pentru “storage”.
      Soluție:
      • Folosiți adaptoare de rețea virtio. Sunt rapide și compatibile.
      • Puneți TrueNAS pe un VLAN dedicat, să nu se „calce pe cablu” cu restul VM-urilor.
    1. Siguranța datelor
      TrueNAS este construit pentru a proteja datele, dar dacă hardware-ul gazdă clachează, nici cel mai avansat algoritm ZFS nu vă poate salva.
      Soluție:
      • Investiți într-un UPS. Dacă serverul cade la prima pană de curent, sunteți pe cont propriu.
      • Faceți snapshot-uri frecvente în Proxmox sau configurati un backup. E mai bine să aveți un backup decât să plângeți după date.

    Alternative: „TrueNAS, hai să luăm o pauză”

    Dacă TrueNAS devine mai pretențios decât un critic culinar, există soluții care, deși nu sunt perfecte, pot rezolva multe dintre problemele dvs. de stocare.

    1. Unraid

    Unraid este genul de prieten care nu cere mult, dar știe să facă treaba. Îți lasă libertatea de a folosi discuri de dimensiuni diferite, iar RAID-ul este mai degrabă opțional. Ca functionalitati este “asemanator” cu TrueNAS, poti porni VM-uri sub el, poti porni containere, poti face snapshot-uri…

    De ce să-l alegi?
    E simplu de configurat, chiar și pentru începători.
    Poate rula și ca NAS, și ca platformă de virtualizare.

    Când să-l eviți?
    Dacă urăști ideea de a plăti pentru licență.
    Dacă îți dorești protecția pe care doar ZFS o oferă


    2. OpenMediaVault (OMV)

    OMV este un NAS open-source simplu și eficient. E ca un vecin care te ajută cu reparațiile: nu cere mult, dar își face treaba. Functioneaza cu Debian bookworm, este simplu, merge cu 2 vCPU si 4GB ram. 🎯

    De ce să-l alegi?
    Gratuit și ușor de configurat.
    Comunitate activă și plugin-uri pentru orice ai nevoie.
    N-are foame de resurse.

    Când să-l eviți?
    Cand ai nevoie si de iscsi
    Cand vrei ZFS out of the box
    Cand ai impresia ca performantele OMV nu-s … performante.


    3. Rockstor

    Bazat pe Btrfs, Rockstor este o soluție NAS care știe să facă snapshot-uri și deduplicare fără să se plângă. Nu am testat in detaliu, doar l-am instalat… si m-am plimbat prin interfata. As vrea ca disk-ul extern pe USB sa-l formatez EXT4 si in caz de nevoie sa il deconectez si sa-l montez pe alt hardware.

    De ce să-l alegi?
    Perfect pentru utilizatorii Linux care vor o alternativă la ZFS.
    Simplu de folosit și destul de robust

    Când să-l eviți?
    Dacă ai nevoie de o comunitate numeroasă și activă.
    Cand n-ai incredere (inca) in BTRFS


    4. Synology / Asusstor / orice alt NAS disponibil

    Dacă nu vrei bătăi de cap, asta este răspunsul. E ca un all-inclusive pentru NAS-uri: plătești și primești totul pregătit. Cu cat ai mai multi bani, cu atat o sa fie tolba mai plina cu feature-uri care de care mai nice 🙂


    Concluzie: Nu te stresa, există opțiuni!

    TrueNAS este grozav, dar doar dacă îi oferi tot ce cere. Dacă nu vrei să te simți ca un părinte care trebuie să îndeplinească toate mofturile unui copil răsfățat, alternativele precum Unraid, OMV, RockStor sau Synology sunt aici să-ți facă viața mai ușoară, in functuie de buget.
    Pentru use case-ul meu cel mai ok pare sa fie OpenMediaVault. Este simplu, nu ai compresie sau deduplicare, nu poate oferi iSCSI… dar nu poti avea in viata toti ce iti doresti. Am inchis povestea – am un shared storage si pot sa il folosesc, pentru VM-uri, pentru backups, pentru containere si ce-o mai fi nevoie.

    E gata! High Availability, politica de backup globala… shared storage, “vmotion”… totul in 30Wh intr-o stare de aproape idle. Proxmox Cluster în Sfârșit: 3 Noduri, NFS și Consumul de Curent “Eco-Friendly”

    După lungi aventuri și cafele încărcate cu speranță, am reușit: am un cluster Proxmox funcțional!

    Hardware-ul

    “Clusterul” e compus din trei noduri, cu nume de scenă pve00, pve01 și pve02. Iată rolurile fiecăruia:

    • pve00: E ca acel coleg care nu face prea multe, dar e indispensabil. Acesta va fi nodul martor (“witness”) și va oferi storage shared pe NFS pentru câteva VM-uri.
    • pve01 și pve02: Adevărații eroi ai clusterului, gazduind VM-uri și containere LXC. Ei sunt soldații de pe front, duc greul și ne salvează ziua.

    Toate acestea rulează pe trei mini PC-uri Lenovo Tiny (m710q și m715q), care sunt ca niște chihuahua hiperactive: mici, dar cu o energie neașteptată. 4CPU si 32GB ram fiecare. Pare putin dar este suficient pentru laboratorare.

    Consumul de energie

    Cu tot clusterul „aproape idle”, consumul total de curent este de doar 28-32W. Aproape că te aștepți să vezi un LED aprins și să îți spui: „Esti sigur că merge totul? Nu e doar screensaver-ul?”.

    Funcționalitate

    Am testat aproape toate funcțiile basic pe care le-am folosit anterior în VMware. Rezultatul? Totul functioneaza ca uns, ca in oil overload. Nu ma asteptam sa fie asa de bine pus la punct… Singurul regret? Ceph. Ar fi fost interesant, dar sunt limitat de un număr insuficient de discuri. (Așa-i când visezi la mamaliga, dar nu ai malai.)

    Migrarile de pe un host pe altul: cand VM-ul nu este pe shared storage va fi copiat disk-ul pe storage-ul vecin si memory state. 1-2 pinguri se pierd. Cand este pe shared storage se copiaza doar ram-ul… cand este protejat de HA doar mentioneaza ca migreaza prin HA si nu mai arata altceva.

    HA – la fel ca Vmware, se restarteaza vm-ul pe unu din serverele care mai exista si se pune in fencing pe cel care e mort in papushoi.

    Hotplug: CPU, RAM, DISK, USB… Network. Cam tot de ce ai nevoie.

    Shared storage

    Merge cam orice ai: NFS, CIFS, ISCSI, SCSI, FC, GlusterFS, Ceph, ZFS, etc. Am testat cu NFS si CIFS.

    Storage pe NFS

    Pentru storage-ul shared, am configurat un VM cu NFS pe pve00. Deși nu e cea mai rapidă soluție, și-a făcut treaba impecabil pentru nevoile noastre. VM-urile și containerele sunt mulțumite si am putut porni High Availability.

    Am testat OpenMediaVault (OMV) ca soluție de storage, dar mi s-a părut lent comparativ cu așteptările. Ma asteptam sa umplu gigabitul ala dar testele erau undeva intre 78-89 MB/s, TrueNAS cu aceleasi disk-uri este constant, undeva peste 110MB/s. Se poate sa fie nevoie de tuning suplimentar pe OMV.

    Tot pe NFS am configurat si Backup-urile VM-urilor mai importante, aici fiind avantajos ca avem o politica globala.

    Ce urmează?

    Anunț oficial „Next Episode”: TrueNAS – Virtualizare pe Proxmox? Stay tuned!

    Până atunci, rămâneți curioși, caffeinați și gata de experimente. Mai avem multe de descoperit în lumea homelab-ului!

    De cateva luni m-am apucat sa invat Kubernetes, Docker. Am avut nevoie de un sandbox, ceva mai sofisticat decat statia mea cu windows 11, care ar fi ajuns bine-mersi ca resurse. Ideea mea era un HomeLab setup care sa aiba un pic de redundanta, sa stea in priza 24/7, sa consume decent si sa pot sa imi ridic 10-20-30 vm-uri cu linux pe care sa incerc sa invat K8S. Sa pot sa sterg tot si sa o iau de la inceput.

    Am inceput cu un Lenovo M715q. Am pus pe el proxmox. Puteam rula VM-uri si LXC-uri iar sistemul atata vreme cat nu trageam de el era destul de silentios. Cu cateva VM-uri pornite (un ubuntu cu apache/php/mysql, un HomeAssistant os, 2 windows 2022) manca in idle cam 7W. 7W si puteai sa dormi langa el.

    Cred ca postul asta este mai mult despre ProxMox… Am descoperit ca are backups, folosind politici, out of the box. Great! Puteam scrie backup-urile dupa un schedule, automat, intr-un disk de backup. Super tare, ESXi nu avea asta. ill.ro sta pe proxmox si are si backup-uri, plus homeassistant, care are si el backup-uri. Minunat!

    Daca pana acum foloseai VMware ESXi pentru homelab sfatul meu este sa incerci proxmox. Folosesc vmware din 2008 si am fost certificat VCP de la versiunea 4.5 la 6.5, am ceva background pe VMware dar e clar ca Proxmox PVE este excelent, si cred ca este indeajuns de bun sa il pun si pe un mediu de productie. Are cam tot ce avea ESXi si inca niste plusuri, nici nu mai mentionez costul care este mult mai mic!

    Pasii urmatori: cluster si shared storage.

    Companiile mari cumpara companii mici. Private Equity funds investesc in companii mici… De atunci business-ul se schimba si conteaza ROI-ul alora care pompeaza bani in compania mica care a putut pana nu a mai putut ca era prea scump, sau a crescut prea mult. S-a scumpit PRTG – ce alternative ai?

    Paessler e una din companiile astea.

    Paessler are un produs matur pentru monitorizarea infrastructurilor it. Un produs super decent. Costul se facea la senzori monitorizati (1 senzor era de exemplu 1 disk de pe 1 server, care iti arata cat spatiu mai exista, sau procesorul, cat e utilizat). Am inceput cu 1000 de senzori si am ajuns la 5000. Din punct de vedere bugetare, era simplu, costul era decent si fix, era previzibil si nu trebuia sa iei aprobari ca sa cumperi an de an. Licenta era perpetua si cumparai mentenanta si suport.

    Mentenanta si suportul pentru licenta perpetua, cum era pana acum au disparut iar pretul subscriptiei creste de vreo 3 ori. Este modelul Brocade de a cerne clientii mici…

    Folosesc PRTG de 7 ani si sunt foarte multumit de produs… nu prea au mai inovat ei in ultimii x ani dar produsul e stabil. Poti customiza senzori si daca “le ai” cu scripturile si poti monitoriza cam ce vrei dintr-o infrastructura on prem (sau cloud) fara agenti, prin wmi, snmp, perfmon, ssh, etc… Dupa 7 ani, la renewal-ul anual, ne loveste baiatu de la sales cu costul marit de 3 ori… cu o explicatie cam stupida, dar incluzand disocount de 40% daca comitem pentru 3 ani.

    NU

    Ramanem la versiunea asta pana cand expira si ne uitam la alternative, ca slava domnului, sunt destule. Nu ne uitam la solarwinds cum nu ne-am uita la Crowdstrike daca vrem antivirus. Poate peste inca 4 ani :))

    Ce am incercat pana acum, din lista de FREE’n’Moka sau ShutUpAndTakeMyMoney. Prin incercat zic instalat solutia si testat use case-urile noastre. Pana acum favoritul meu e site24x7.

    1. Primul produs testat si luat cotatie – Logic Monitor. Cam de 10 ori mai scump decat noua subscriptie de la PRTG pentru fix aceleasi nevoi de monitorizare. Produsul este cam de 10 ori mai avansat decat PRTG si are integrare in toate cloudurile existente. Stie AWS, GCP si Azure. Iti arata tot intr-un singur dashboard. E customizabil cat se poate si are rapoarte cat cuprinde. Ne-a speriat pretul.
    2. CheckMK – m-a dezamagit cumva ca avea agenti si pe langa asta era cam ciudata interfata. Ciudata probabil pentru mine… ca la fel mi-a parut si PRTG prima oara cand am dat ochii cu el, problema cu CheckMK a fost ca intre discovery si adaugat la monitorizare parca trebuia sa mai faci niste pasi inutili. In fine, poate am fost biased. Nu e agentless. Nu am obtinut nici o cotatie de pret.
    3. Zabbix – Gratis. Dar munca pe care trebuia sa o depunem sa ajungem la nivelul de monitorizare pe care il avem acum in PRTG ar fi fost titanica. Daca as lua ceva de la zero as alege zabbix… dar nu o luam de la 0 si tot ce era alerta, limita de warning, limita de eroare… trebuia facut de maini dibace. Am 42 de ani si nu mai am chef. Plus ca mai avea nevoie si de agenti…
    4. Domotz – Autodiscovery foarte misto, dar nu aveai detaliile out of the box. Trebuia sa pui server cu server ca vrei cel putin disk, ram, cpu. Nu poti crea senzori custom. Pentru monitorizare windows foloseste WinRM si SSH (da, pui ssh pe windows) … si ssh pentru linux-uri
    5. WhatsUP Gold – Discovery foarte bun doar ca out of the box iar nu aveai foarte multe lucruri monitorizate. Ping. Pentru mai mult trebuia sa adaugi senzori. Nu mi-a placut pentru ca nu puteam monitoriza “chestiile custom din PRTG”.
    6. Grafana si Prometheus – iar, am 42 de ani si am devenit putoare. Arata super dashboard-urile din grafana, dar cand ai multe servere asta inseamna overhead. Instaleaza agenti, pune sursa in prometheus, vezi pe la dashboard-uri… poate pe un set restrans de servere.. acolo unde vrem grafice frumoase.
    7. Site24x7 a lu manage engine – nu e agentless dar poti si fara agenti, pui in reteaua in care vrei sa monitorizezi un “On premise poller” setezi credentiale si merge cu WMI si SSH pentru windows-uri si linux-uri. Ce e cu agent iti adauga valoare: aplication performance monitoring, logs monitoring. Rapoarte SLA foarte misto. Integrare cu AWS… si aduce din toate conturile resurse pe care le doresti monitorizate. Cred ca numarul norocos este 7. Se potriveste pe toate use case-urile doar ca inca nu avem un pret…

    Mai sunt si alte solutii de monitorizare foarte bune, dar atat am testat si am decis sa ma opresc. Manage Engine mai are OpManager, mai sunt icinga, openNMS, Datadog, NewRelic, Dynatrace, Solarwinds (cred ca trebuie mentionat chiar daca au avut acel faimos data leak)… etc.