Obsah článku
title: "Riešenie problému s odchádzajúcou (Egress) sieťovou komunikáciou pre SearXNG v K3s"
slug: "k3s-searxng-egress-networking-hostnetwork"
technologies: ["Kubernetes", "K3s", "Docker", "SearXNG", "YAML", "Networking"]
tags: ["devops", "k3s", "searxng", "networking", "debug", "firewall"]
date_solved: "2025-08-20"
Projekt/Téma: Riešenie problému s odchádzajúcou (Egress) sieťovou komunikáciou pre SearXNG v K3s
-
Cieľ / Problém na vyriešenie: Po nasadení vyhľadávača SearXNG do K3s klastra aplikácia nefungovala správne, pretože nebola schopná kontaktovať externé vyhľadávače. Cieľom bolo diagnostikovať a vyriešiť problém s odchádzajúcou (egress) sieťovou konektivitou zvnútra podu.
-
Použité technológie a nástroje:
- Orchestrácia: Kubernetes (K3s)
- Kontajnerizácia: Docker
- Aplikácia: SearXNG
- Konfigurácia: YAML (Kubernetes manifesty)
- Nástroje:
kubectl,wget,nslookup
-
Kľúčové postupy a konfiguračné kroky:
- Overenie základnej DNS a sieťovej konektivity zvnútra bežiaceho podu SearXNG.
kubectl exec -it deployment/searxng-deployment -- nslookup google.com kubectl exec -it deployment/searxng-deployment -- wget -O- --timeout=10 https://www.google.com - Príkazy vyššie zlyhali, čo potvrdilo problém s externou konektivitou, zatiaľ čo interná komunikácia v rámci klastra mohla fungovať.
- Vytvorenie a aplikácia upraveného deployment manifestu, ktorý využíva sieť hostiteľa (
hostNetwork: true).kubectl apply -f searxng-hostnetwork.yaml - Diagnostika pomocou špecializovaného debugovacieho podu na overenie stavu siete v klastri nezávisle od aplikácie.
kubectl run debug --image=nicolaka/netshoot -it --rm -- bash
- Overenie základnej DNS a sieťovej konektivity zvnútra bežiaceho podu SearXNG.
-
Výsledné kódy a skripty:
- Kľúčová časť
searxng-hostnetwork.yaml:apiVersion: apps/v1 kind: Deployment metadata: name: searxng-deployment spec: replicas: 1 selector: matchLabels: app: searxng template: metadata: labels: app: searxng spec: hostNetwork: true # Kľúčové riešenie problému dnsPolicy: ClusterFirstWithHostNet containers: - name: searxng image: searxng/searxng:latest # ... zvyšok konfigurácie kontajnera
- Kľúčová časť
-
Zistené problémy a riešenia (Gotchas):
- Problém: Pod SearXNG nedokázal nadviazať spojenie so žiadnou externou službou na internete. DNS preklady fungovali, ale TCP spojenia časovali (timeout).
- Riešenie: Predpokladanou príčinou bola reštriktívna konfigurácia sieťového CNI (napr. Calico, Flannel) alebo firewall na úrovni klastra/nodu. Rýchlym a účinným riešením bolo povoliť pre pod SearXNG priamy prístup k sieťovému rozhraniu hostiteľského uzla nastavením
hostNetwork: truev špecifikácii podu. Týmto sa obišla virtuálna sieť klastra pre odchádzajúce spojenia.
-
Finálny výsledok / Záver: Po aplikovaní manifestu s
hostNetwork: truezačal SearXNG pod správne komunikovať s externými službami. Vyhľadávač sa stal plne funkčným. Toto riešenie potvrdilo, že problém bol v sieťovej vrstve klastra, nie v samotnej aplikácii.