Sobes.tech
Middle+

Koje složene zadatke ste morali da rešavate u oblasti mrežne interakcije između kontejnera?

sobes.tech АИ

Одговор од АИ

Optimizacija performansi mrežne interakcije između servisa u mesh-mreži zasnovanoj na Istio. Potrebno je bilo identifikovati i otkloniti uska grla povezana sa overhead-om Service Proxy (Envoy), konfiguracijom mTLS i policy engine-om. To je uključivalo analizu metrika Istio (trajanje zahteva, broj grešaka, kašnjenja), traciranje distribuiranih zahteva i podešavanje Envoy-a.

Rešavanje problema sa rutiranjem saobraćaja u dinamički skalabilnim Kubernetes klasterima. Prilikom promene skaliranja servisa javljali su se kašnjenja u širenju EndpointSlices i netačno uravnoteženje opterećenja. Rešeno je podešavanjem agresivnijih timeout-ova keširanja u kube-proxy i korišćenjem naprednijih algoritama za balansiranje na ingress kontroleru (npr. least_request).

Implementacija sigurnog međusobnog delovanja između kontejnera u različitim podsistemima sa strogim pravilima mrežnih politika (Network Policies). Potrebno je bilo konfigurisati politike tako da dozvole samo neophodan saobraćaj između specifičnih parova podova ili namespace-ova, istovremeno blokirajući sav ostali. To je zahtevalo duboko razumevanje selektora Network Policies i mehanizama njihove primene od strane spoljašnjih CNI dodataka (npr. Calico).

Otklanjanje problema sa rešavanjem imena (DNS) unutar kontejnera, posebno u okruženjima sa više DNS servera ili složenim pravilima preusmeravanja. Bilo je potrebno analizirati saobraćaj na nivou podova pomoću tcpdump i proveriti konfiguraciju /etc/resolv.conf u kontejnerima, kao i konfiguraciju CoreDNS u Kubernetes klasteru.

# Primer analize DNS saobraćaja unutar poda
kubectl exec <pod-name> -- tcpdump -i any udp port 53 -v
# Primer NetworkPolicy za dozvoljavanje saobraćaja između dva namespace-a
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

Rešavanje složenosti vezanih za korišćenje nestandardnih protokola, koji nisu podržani "iz kutije" na nivou Service Mesh ili CNI, i zahtevaju prilagođene konfiguracije proxy-ja ili specijalizovana rešenja. Na primer, organizacija međusobne komunikacije putem protokola koji nije HTTP/1.1 ili gRPC unutar Istio, što može zahtevati pisanje sopstvenih Envoy filtera.