Sobes.tech
Middle

Jak spolu komunikují spuštěné aplikace v Kubernetes?

sobes.tech AI

Odpověď od AI

Interakce mezi aplikacemi v Kubernetes probíhá především prostřednictvím síťových služeb.

  1. Objevování služeb: Aplikace nekomunikují přímo s kontejnery podle jejich IP adres, protože ty jsou efemérní a mohou se při znovuvytváření měnit. Místo toho používají Objevování služeb, které poskytuje stabilní DNS jméno a IP adresu pro skupinu kontejnerů vykonávajících stejnou funkci.

    • ClusterIP: Výchozí typ služby, který poskytuje interní IP adresu dostupnou pouze uvnitř clusteru.
    • NodePort: Otevírá statický port na každém uzlu clusteru, který přesměrovává provoz na službu ClusterIP.
    • LoadBalancer: Vytváří externí vyvažovač zátěže (pokud to poskytovatel cloudu podporuje).
    • ExternalName: Umožňuje službě odkazovat na externí DNS jméno.
  2. DNS: Kubernetes poskytuje interní DNS server (například CoreDNS), který automaticky vytváří DNS jména pro služby. Aplikace se může na jinou službu odkazovat jménem service-name.namespace.svc.cluster.local nebo zkráceně service-name.

  3. Síťová pravidla: Určují, jak se skupiny kontejnerů mohou vzájemně komunikovat a s externími síťovými body. Používají se k izolaci síťového provozu z bezpečnostních důvodů.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-all-ingress
      namespace: default
    spec:
      podSelector: {} # Platí na všechny kontejnery v namespace default
      policyTypes:
      - Ingress
      ingress: [] # Zakazuje veškerý příchozí provoz
    
  4. Ingress: Řídí externí přístup ke službám v clusteru, obvykle přes HTTP/HTTPS. Ingress kontrolér (například Nginx Ingress, Traefik) směruje provoz z externí sítě na odpovídající vnitřní služby na základě pravidel definovaných v Ingress zdroji.

  5. Service Mesh: (například Istio, Linkerd) Přidává další vrstvu abstrakce a funkcionality pro komunikaci mezi službami. Poskytuje možnosti jako vzájemné TLS, sledování požadavků, metriky, řízení provozu (A/B testy, kanárské vydání) na úrovni proxy (sidecar kontejnery), které jsou přidány ke každému podu.

Takže hlavní mechanismy interakce jsou Objevování služeb přes DNS a různé typy služeb, doplněné o síťová pravidla pro bezpečnost a Ingress/Service Mesh pro složitější řízení provozu a sledovatelnost.