Diagnostika siete v k3s: CoreDNS a CNI (Calico)

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

-----

```yaml
title: "Diagnostika siete v k3s: CoreDNS a CNI (Calico)"
slug: "k3s-diagnostika-siete-coredns-cni"
technologies: ["k3s", "Kubernetes", "kubectl", "CoreDNS", "Calico", "CNI"]
tags: ["k3s", "networking", "dns", "cni", "calico", "coredns", "troubleshooting", "diagnostika"]
date_solved: "2025-08-19"

Projekt/Téma: Diagnostika kľúčových sieťových komponentov v k3s: DNS (CoreDNS) a CNI pluginu (napr. Calico).

1. Cieľ / Problém na vyriešenie: Riešenie problémov, keď pody nedokážu komunikovať medzi sebou alebo resolverovať interné či externé DNS mená. Cieľom je overiť funkčnosť CoreDNS podov, skontrolovať ich konfiguráciu a logy, a podobne overiť aj stav CNI pluginu, ktorý je zodpovedný za sieťovú konektivitu podov.

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

  • kubectl: Na interakciu s Kubernetes objektami ako pody a ConfigMaps v mennom priestore kube-system.
  • CoreDNS: Štandardný DNS server pre Kubernetes, zodpovedný za service discovery.
  • Calico: Populárny CNI (Container Network Interface) plugin pre sieťovú politiku a konektivitu.

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

  1. Overenie CoreDNS: Zistiť, či pody CoreDNS bežia, prezrieť ich logy pre prípadné chyby a skontrolovať ich konfiguráciu v ConfigMap, aby sa overili správne forwardery a zóny.
  2. Test DNS resolúcie: Spustiť dočasný pod (napr. s busybox) a z jeho vnútra otestovať DNS preklad pre interný Kubernetes service. Tým sa overí celý reťazec od podu až po CoreDNS.
  3. Overenie CNI (Calico): Podobne ako pri CoreDNS, skontrolovať stav calico-node podov (ktoré musia bežať na každom node), prezrieť ich logy a overiť konfiguráciu.

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

  • Diagnostika CoreDNS:

    # Zistiť stav CoreDNS podov
    kubectl get pods -n kube-system -l k8s-app=kube-dns
    
    # Zobraziť logy CoreDNS podov
    kubectl logs -n kube-system -l k8s-app=kube-dns
    
    # Zobraziť konfiguráciu CoreDNS
    kubectl get configmap -n kube-system coredns -o yaml
  • Test DNS resolúcie z dočasného podu:
    # Spustí busybox pod a vykoná nslookup na internú službu
    kubectl run -it --rm test-pod --image=busybox -- nslookup <service-name>.<namespace>.svc.cluster.local
  • Diagnostika Calico (CNI):

    # Zistiť stav Calico podov
    kubectl get pods -n kube-system -l k8s-app=calico-node
    
    # Zobraziť logy Calico podov
    kubectl logs -n kube-system -l k8s-app=calico-node
    
    # Zobraziť konfiguráciu Calico
    kubectl get configmap -n kube-system calico-config -o yaml

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

  • Problém: nslookup zlyháva alebo vracia nesprávnu IP.
    • Riešenie: Skontrolujte logy CoreDNS. Častou chybou je nesprávne nakonfigurovaný forward na externý DNS resolver v ConfigMap coredns, alebo problém s konektivitou z CoreDNS podu von z clusteru.
  • Problém: calico-node pody sú v stave CrashLoopBackOff.
    • Riešenie: Prezrite logy týchto podov. Príčinou môže byť problém s prístupom k etcd (ak ho Calico používa), problém s BGP peeringom alebo nekompatibilita s verziou kernelu.

6. Finálny výsledok / Záver: Tento súbor príkazov umožňuje systematicky diagnostikovať dve najčastejšie príčiny sieťových problémov v Kubernetes: zlyhanie DNS a zlyhanie CNI pluginu. Správna funkčnosť oboch je nevyhnutná pre stabilný beh clusteru.

Vyriešené: 19. 8. 2025