K8s Cluster — Findings

Syntéza zjištění z analýzy clusteru. Stav k 2026-05-07.


Aktuální stav v kostce

OblastVerze / configStav
Kubernetesv1.26.0❌ EOL od února 2024
Hostitelské OSUbuntu 20.04.6, kernel 6.12.79✅ aktuální kernel
Container runtimecontainerd 1.7.27✅ ok
Nody3 (1 master + 2 workers) Ready
CNIFlannel VXLAN✅ funguje, low-latency
kube-proxyiptables mode✅ ok pro tento scale
Load balancerMetalLB Layer2 (ConfigMap config)⚠️ pre-CRD verze (před v0.13)
Ingressingress-nginx, 20 ingressů, deprecated anotace⚠️ chybí IngressClass resource
Storage1 nepoužitá NFS SC, vše ostatní hostPath⚠️ data přilepená na nody
NetworkPoliciesžádné⚠️ flat L3, žádná izolace
metrics-servernenainstalovaný⚠️ kubectl top nefunguje
etcdhealthy
API serverza WireGuard (172.16.16.1:6443)✅ dobrá praxe
cert-manager, dashboardběží✅ funkční (verze stará)

Co funguje dobře

  • Inter-node konektivita je stabilní a rychlá (sub-ms latency v overlay).
  • VXLAN backend je správná volba pro LXC prostředí — alternativy (host-gw, native routing) nejsou v LXC dostupné.
  • WireGuard pro API server access schovává control plane mimo veřejnou síť.
  • MetalLB Layer2 s jednou public IP funguje a je jednoduchý.
  • etcd, controller-manager, scheduler běží zdravě (despite deprecated componentstatuses warning).

Co tikne (priorita podle naléhavosti)

🔴 Vysoká: k8s 1.26 EOL

  • Žádné security patche od února 2024.
  • Cca 1.5 roku za aktuální stable větev.
  • Akce: postupný upgrade 1.26 → 1.31 (5 hopů, plán viz upgrade-plan).

🔴 Vysoká: Postgres na hostPath bez zálohy a replikace

  • Data v /k8s/kubernetes-postgresql na konkrétním nodu.
  • Při ztrátě nodu = ztráta DB.
  • Akce: minimálně automatizovaný pg_dump cron + off-site copy. Dlouhodobě úvaha o CloudNativePG s replikami.

🟡 Střední: chybí IngressClass resource

  • 20 ingressů spoléhá na deprecated anotaci kubernetes.io/ingress.class: nginx.
  • ingress-nginx ji aktuálně pořád respektuje, ale není to garantováno do budoucna.
  • Akce: jeden YAML — vytvořit IngressClass nginx jako default. Existující ingressy fungují dál.

🟡 Střední: MetalLB v pre-CRD verzi

  • Konfigurace přes ConfigMap (před v0.13).
  • Verze nedostává security updates.
  • Migrace na CRD-based config znamená krátký výpadek public IP (~30s).
  • Akce: udělat samostatně, mimo k8s upgrade hopy.

🟡 Střední: hostPath všude

  • Data většiny stateful workloadů jsou přilepená na nody (/k8s/*).
  • Bez NFS PVC (které je nasazené, ale nepoužívané kromě testu).
  • Akce: postupná migrace nekritických workloadů (krcmar/media, blog, sellapp, pgadmin, wireguard) na NFS PVC. Postgres a OpenLDAP záměrně zůstávají na hostPath.

🟢 Nízká: chybí NetworkPolicies

  • Flat L3 — jakýkoli pod si může povídat s jakýmkoli.
  • Pro osobní cluster ok, ale citlivé namespacy (postgres, openldap) by mohly mít izolaci.
  • Akce: postupně přidávat per-namespace policy podle potřeby.

🟢 Nízká: chybí metrics-server

  • kubectl top nefunguje, žádné HPA.
  • Pro homelab obvykle nekritické.
  • Akce: jeden kubectl apply na deploy manifest.

🟢 Nízká: cleanup

  • docker0 interface na masteru (Docker daemon nainstalovaný, nepoužívaný).
  • Test workload nfs-nginx v default namespace (pravděpodobně už nepotřebný).
  • 50 restartů ingress-nginx-controller za 230 dní (sledovat, jestli se trend nezhoršuje).

Souvislost s plánovanými změnami

  • Nextcloud bude zrušen a nahrazen Rust aplikací na Turris routeru. K8s pro tu službu bude jen public proxy přes Service+Endpoints+Ingress. Nextcloud workload tedy v migračních plánech vynechat.
  • Postgres zůstává na fixed nodu s hostPath i během upgradu. Migrace na CloudNativePG (s replikami) je samostatný projekt na později.
  • Migrace nekritických workloadů na NFS PVC se hodí udělat před k8s upgrade — méně proměnných najednou.

Co je vůbec mimo dosah v tomto prostředí

vpsfree.cz LXC kontejnery brání použití některých „enterprise" řešení:

  • Ceph / Rook — kernel moduly, block devices, privileged ops.
  • Longhorn — iSCSI (kernel moduly).
  • OpenEBS Mayastor / cStor — hugepages, NVMe features.
  • DRBD / LINSTOR — kernel modul.

Jediná reálně dostupná HA storage v LXC = NFS (přes vpsfree nebo vlastní NFS server) + aplikační replikace pro databáze. Pro plnou HA distribuovanou storage by byl potřeba přechod z LXC na KVM.