Obsah článku
-----
```yaml
title: "Diagnostika konektivity medzi podmi a službami v k3s"
slug: "k3s-diagnostika-konektivita-podov-a-sluzieb"
technologies: ["k3s", "Kubernetes", "kubectl", "netcat", "ping", "ufw", "iptables"]
tags: ["k3s", "networking", "connectivity", "firewall", "pod-to-pod", "troubleshooting", "diagnostika"]
date_solved: "2025-08-19"
Projekt/Téma: Overenie priamej sieťovej konektivity medzi podmi a funkčnosti Kubernetes služieb (Services).
1. Cieľ / Problém na vyriešenie: Diagnostikovať situácie, kedy DNS resolúcia funguje, ale pokus o pripojenie na inú službu alebo pod zlyháva (napr. connection timeout). Cieľom je overiť priechodnosť siete na úrovni L4 (TCP/UDP) medzi podmi a skontrolovať, či hostiteľské firewally neblokujú potrebnú komunikáciu.
2. Použité technológie a nástroje:
kubectl exec: Na spúšťanie príkazov vo vnútri bežiacich kontajnerov.netcat (nc): Univerzálny nástroj na testovanie TCP/UDP konektivity.ping: Nástroj na testovanie L3 (IP) konektivity.ufw,iptables: Nástroje na správu a inšpekciu firewallu na hostiteľských Linux systémoch.
3. Kľúčové postupy a konfiguračné kroky:
- Pripojenie sa do zdrojového podu: Použiť
kubectl execna získanie interaktívneho shellu v pode, z ktorého chceme testovať konektivitu. - Test pripojenia na službu (Service): Z vnútra podu použiť
ncna otestovanie spojenia na cieľovú službu (napr.mysql-service.default.svc.cluster.local) na špecifickom porte. - Test pripojenia na IP adresu podu: Ak zlyháva spojenie na službu, otestovať priame spojenie na IP adresu jedného z cieľových podov pomocou
pingalebonc. Tým sa izoluje problém buď vkube-proxy/serviceLBalebo v CNI. - Kontrola hostiteľského firewallu: Prihlásiť sa na fyzický node a skontrolovať pravidlá
ufwaleboiptables, aby sa zaistilo, že neblokujú komunikáciu potrebnú pre CNI (napr. VXLAN, BGP porty).
4. Výsledné kódy a skripty:
-
Test konektivity z vnútra podu:
# Test spojenia na ClusterIP/DNS meno služby na danom porte kubectl exec -it -n <namespace> <pod-name> -- nc -zv <target-service>.<namespace>.svc.cluster.local <port> # Test spojenia priamo na IP adresu iného podu kubectl exec -it -n <namespace> <pod-name> -- ping -c 4 <target-pod-ip> -
Kontrola firewallu na hostiteľskom node:
# Zobrazenie stavu a pravidiel UFW (Uncomplicated Firewall) sudo ufw status # Detailný výpis všetkých iptables pravidiel sudo iptables -L -n -v
5. Zistené problémy a riešenia (Gotchas):
- Problém:
pingna IP podu funguje, alencna port služby nie.- Riešenie: Problém je pravdepodobne v mechanizme Kubernetes Services (
kube-proxyaleboserviceLB). Skontrolujte logy a stav týchto komponentov. Môže byť tiež aktívnaNetworkPolicy, ktorá blokuje spojenie.
- Riešenie: Problém je pravdepodobne v mechanizme Kubernetes Services (
- Problém:
pingna IP iného podu na inom node nefunguje.- Riešenie: Problém je v CNI plugine (napr. Calico) alebo v sieťovej infraštruktúre medzi nodmi. Skontrolujte CNI logy a overte, či firewall na nodoch alebo fyzický sieťový prvok neblokuje overlay sieť (napr. UDP port pre VXLAN).
- Problém: Nástroje
pingaleboncnie sú v kontajneri dostupné.- Riešenie: Použite kontajnerový obraz, ktorý tieto nástroje obsahuje (napr.
busybox,nicolaka/netshoot), alebo ich doinštalujte do bežiaceho kontajnera (ak to je možné a bezpečné).
- Riešenie: Použite kontajnerový obraz, ktorý tieto nástroje obsahuje (napr.
6. Finálny výsledok / Záver: Tieto postupy umožňujú hĺbkovú analýzu sieťovej cesty v rámci Kubernetes clusteru. Systematickým testovaním od služby až po priamu IP konektivitu je možné presne lokalizovať zdroj problému, či už ide o Kubernetes komponent, CNI alebo konfiguráciu hostiteľského systému.