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 priestorekube-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:
- 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. - 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. - Overenie CNI (Calico): Podobne ako pri CoreDNS, skontrolovať stav
calico-nodepodov (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:
nslookupzlyháva alebo vracia nesprávnu IP.- Riešenie: Skontrolujte logy CoreDNS. Častou chybou je nesprávne nakonfigurovaný
forwardna externý DNS resolver vConfigMap coredns, alebo problém s konektivitou z CoreDNS podu von z clusteru.
- Riešenie: Skontrolujte logy CoreDNS. Častou chybou je nesprávne nakonfigurovaný
- Problém:
calico-nodepody sú v staveCrashLoopBackOff.- 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.