Sobes.tech
Middle+

Aké zložité úlohy ste museli riešiť v oblasti sieťovej interakcie medzi kontajnermi?

sobes.tech AI

Odpoveď od AI

Optimalizácia výkonu sieťovej interakcie medzi službami v mesh-sieti na základe Istio. Bolo potrebné identifikovať a odstrániť úzke miesta spojené s overheadom Service Proxy (Envoy), konfiguráciou mTLS a policy engine. To zahŕňalo analýzu metrík Istio (trvanie požiadaviek, počet chýb, oneskorenia), trasovanie distribuovaných požiadaviek a ladenie Envoy.

Riešenie problémov s routovaním prevádzky v dynamicky škálovateľných Kubernetes klastroch. Pri zmene škálovania služieb sa vyskytovali oneskorenia pri rozširovaní EndpointSlices a nesprávne vyvažovanie záťaže. Riešené bolo nastavením agresívnejších timeoutov cache v kube-proxy a použitím pokročilejších algoritmov vyvažovania záťaže na ingress kontroléri (napríklad, least_request).

Implementácia bezpečného vzájomného pôsobenia medzi kontajnermi v rôznych podsietiach s prísnymi pravidlami sieťových politík (Network Policies). Bolo potrebné nakonfigurovať politiky tak, aby povoľovali iba nevyhnutný prevádzku medzi špecifickými pármi podov alebo namespace-ov, pričom blokovali všetko ostatné. To si vyžadovalo hlboké pochopenie selektorov Network Policies a mechanizmov ich uplatňovania od tretích strán CNI pluginov (napríklad, Calico).

Ladenie problémov s rozpoznávaním mien (DNS) v kontajneroch, najmä v prostrediach s viacerými DNS servermi alebo zložitými pravidlami presmerovania. Bolo potrebné analyzovať prevádzku na úrovni podov pomocou tcpdump a kontrolovať konfiguráciu /etc/resolv.conf v kontajneroch, ako aj konfiguráciu CoreDNS v Kubernetes klastre.

# Príklad analýzy DNS prevádzky v pod
kubectl exec <pod-name> -- tcpdump -i any udp port 53 -v
# Príklad NetworkPolicy na povolenie prevádzky medzi dvomi namespace-ami
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

Riešenie zložitostí spojených s používaním nestandardných protokolov, ktoré nie sú podporované "z krabice" na úrovni Service Mesh alebo CNI, a vyžadujú vlastné nastavenia proxy alebo špecializované riešenia. Napríklad, organizácia komunikácie podľa protokolu odlišného od HTTP/1.1 alebo gRPC v rámci Istio, čo mohlo vyžadovať písanie vlastných Envoy filtrov.