Sobes.tech
Middle+

Jaké složité úkoly jste museli řešit v oblasti síťové komunikace mezi kontejnery?

sobes.tech AI

Odpověď od AI

Optimalizace výkonu síťové interakce mezi službami v mesh síti založené na Istio. Bylo nutné identifikovat a odstranit úzká místa související s overheadem Service Proxy (Envoy), konfigurací mTLS a politikovým engine. To zahrnovalo analýzu metrik Istio (délka požadavků, počet chyb, zpoždění), sledování distribuovaných požadavků a ladění konfigurace Envoy.

Řešení problémů s směrováním provozu v dynamicky škálovatelných Kubernetes clusterech. Při škálování služeb docházelo ke zpožděním v šíření EndpointSlices a nesprávnému vyvažování zátěže. To bylo vyřešeno nastavením agresivnějších časových limitů cache v kube-proxy a použitím pokročilejších algoritmů vyvažování zátěže v ingress kontroléru (například least_request).

Implementace bezpečné interakce mezi kontejnery v různých podsíťích s přísnými pravidly síťových politik (Network Policies). Bylo nutné nakonfigurovat politiky tak, aby povolovaly pouze nezbytný provoz mezi specifickými páry podů nebo namespace, zatímco vše ostatní bylo blokováno. To vyžadovalo hluboké pochopení selektorů Network Policies a mechanismů jejich aplikace přes externí CNI pluginy (například Calico).

Ladění problémů s řešením DNS uvnitř kontejnerů, zejména v prostředích s více DNS servery nebo složitými pravidly přesměrování. Pro analýzu provozu na úrovni podů byl použit tcpdump a byla zkontrolována konfigurace /etc/resolv.conf v kontejnerech a konfigurace CoreDNS v Kubernetes clusteru.

# Příklad analýzy DNS provozu uvnitř podu
kubectl exec <název-podu> -- tcpdump -i any udp port 53 -v
# Příklad NetworkPolicy pro povolení provozu mezi dvěma namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
  namespace: frontend-namespace
spec:
  podSelector:
    matchLabels:
      app: frontend
  policyTypes:
    - Egress
  egress:
    - to:
      - podSelector:
          matchLabels:
            app: backend
        namespaceSelector:
          matchLabels:
            name: backend-namespace

Řešení problémů spojených s používáním nestandardních protokolů, které nejsou "out of the box" podporovány na úrovni Service Mesh nebo CNI, a vyžadovaly vlastní konfigurace proxy nebo specializovaná řešení. Například organizace komunikace přes protokol odlišný od HTTP/1.1 nebo gRPC uvnitř Istio, což mohlo vyžadovat psaní vlastních filtrů Envoy.