Pokročilé tipy a riešenia bežných problémov v k3s

Vytvorené: 24. 8. 2025 08:44 Aktualizované: 27. 8. 2025 13:14
Vyriešené
Obsah článku

-----

```yaml
title: "Pokročilé tipy a riešenia bežných problémov v k3s"
slug: "k3s-pokrocile-tipy-riesenia-problemov"
technologies: ["k3s", "Kubernetes", "Calico", "systemd", "MySQL"]
tags: ["k3s", "troubleshooting", "tipy", "gotchas", "dns", "mtu", "kube-proxy", "serviceLB", "pokročilé"]
date_solved: "2025-08-19"

Projekt/Téma: Súbor pokročilých konfiguračných tipov a riešení pre často sa vyskytujúce problémy v k3s clusteri.

1. Cieľ / Problém na vyriešenie: Poskytnúť riešenia pre špecifické a zložitejšie problémy, ktoré sa nedajú vyriešiť základnou diagnostikou. To zahŕňa problémy so sieťovým výkonom (MTU), nefunkčným ClusterIP, reštartujúcimi sa podmi kvôli limitom, alebo explicitné zapínanie/vypínanie kľúčových k3s komponentov ako kube-proxy a serviceLB.

2. Použité technológie a nástroje:

  • kubectl edit: Na priamu úpravu Kubernetes objektov v reálnom čase.
  • systemd: Na úpravu spúšťacích parametrov služby k3s.
  • k3s konfiguračné súbory: /etc/rancher/k3s/k3s.yaml a /etc/systemd/system/k3s.service.

3. Kľúčové postupy a konfiguračné kroky:

  1. Zvýšenie MTU pre Calico: V prípade problémov s fragmentáciou paketov v overlay sieti je potrebné upraviť ConfigMap Calico a nastaviť vyššie MTU, následne reštartovať calico-node pody.
  2. Explicitné povolenie/zakázanie kube-proxy: k3s štandardne používa serviceLB a má kube-proxy vypnutý. V niektorých prípadoch (napr. pre kompatibilitu) je potrebné ho manuálne povoliť úpravou k3s.service a reštartom služby.
  3. Explicitné povolenie/zakázanie serviceLB: Podobne, ak je preferovaný kube-proxy alebo iný Load Balancer (napr. MetalLB), je možné vstavaný serviceLB vypnúť cez parameter --disable servicelb.
  4. Diagnostika reštartujúcich sa podov: Použiť kubectl describe pod na zobrazenie sekcie Events, ktorá často odhalí dôvod reštartu (napr. OOMKilled - nedostatok pamäte).
  5. Riešenie zlyhania pripojenia na databázu: Overiť prihlasovacie údaje, skontrolovať NetworkPolicy a firewall. Ako alternatívu použiť headless službu, ktorá poskytuje priame DNS záznamy na jednotlivé pody.

4. Výsledné kódy a skripty:

  • Zvýšenie MTU pre Calico:

    # Otvorí ConfigMap Calico v editore
    kubectl edit configmap -n kube-system calico-config
    
    # V editore zmeňte hodnotu veth_mtu, napr. na 1500
    
    # Reštartujte Calico pody, aby sa zmena prejavila
    kubectl delete pod -n kube-system -l k8s-app=calico-node
  • Povolenie kube-proxy v k3s:

    # Upravte konfiguračný súbor služby
    sudo nano /etc/systemd/system/k3s.service
    
    # V riadku ExecStart odstraňte parameter --disable-kube-proxy
    
    # Znovu načítajte konfiguráciu systemd a reštartujte k3s
    sudo systemctl daemon-reload
    sudo systemctl restart k3s
  • Zakázanie serviceLB v k3s:

    # Upravte konfiguračný súbor služby
    sudo nano /etc/systemd/system/k3s.service
    
    # Do riadku ExecStart pridajte parameter --disable servicelb
    
    # Znovu načítajte konfiguráciu systemd a reštartujte k3s
    sudo systemctl daemon-reload
    sudo systemctl restart k3s

5. Zistené problémy a riešenia (Gotchas):

  • Problém: DNS nefunguje.
    • Riešenie: Overte, či /etc/resolv.conf vnútri podu ukazuje na IP adresu CoreDNS služby (typicky 10.43.0.10). Ak nie, problém môže byť v Kubelete, ktorý nesprávne konfiguruje pody.
  • Problém: Pripojenie na ClusterIP služby visí.
    • Riešenie: Uistite sa, že beží buď kube-proxy alebo serviceLB (nie oba, ani žiadny). Ak problém pretrváva, môže ísť o problém s CNI (napr. MTU) alebo s pravidlami iptables, ktoré tieto komponenty vytvárajú.
  • Problém: Pody sa neustále reštartujú.
    • Riešenie: kubectl describe pod je kľúčový. Často odhalí, že pod bol ukončený pre prekročenie limitov pamäte (OOMKilled) alebo zlyhala jeho liveness/readiness sonda. V takom prípade je potrebné upraviť resources.limits v manifeste deploymentu.

6. Finálny výsledok / Záver: Tento záznam slúži ako pokročilá príručka pre riešenie komplexných problémov v k3s. Správne nastavenie MTU, vedomá voľba medzi kube-proxy a serviceLB, a schopnosť diagnostikovať problémy s alokáciou zdrojov sú kľúčové pre prevádzku stabilného a výkonného k3s clusteru.

Vyriešené: 19. 8. 2025