Sobes.tech
Middle

Hogyan kommunikálnak egymással a Kubernetes-ben futó alkalmazások?

sobes.tech MI

Válasz az MI-től

A Kubernetesben az alkalmazások közötti kölcsönhatás elsősorban hálózati szolgáltatásokon keresztül történik.

  1. Szolgáltatás felfedezés: Az alkalmazások nem közvetlenül a podok IP-címeire hivatkoznak, mivel ezek múlandóak és újraalkotáskor változhatnak. Ehelyett a Szolgáltatás felfedezést használják, amely stabil DNS nevet és IP címet biztosít ugyanazon funkciót ellátó podok csoportjához.

    • ClusterIP: Alapértelmezett szolgáltatástípus, amely csak a klaszteren belül elérhető belső IP-t biztosít.
    • NodePort: Statikus portot nyit minden csomóponton, és a forgalmat a ClusterIP szolgáltatásra irányítja.
    • LoadBalancer: Külső terheléselosztót hoz létre (ha a felhős szolgáltató támogatja).
    • ExternalName: Lehetővé teszi a szolgáltatás számára, hogy külső DNS nevet hivatkozzon.
  2. DNS: A Kubernetes belső DNS szervert biztosít (pl. CoreDNS), amely automatikusan létrehoz DNS neveket a szolgáltatásokhoz. Az alkalmazás másik szolgáltatáshoz a service-name.namespace.svc.cluster.local névvel vagy rövidített formában service-name érheti el.

  3. Hálózati politikák: Meghatározzák, hogy a podok csoportjai hogyan léphetnek kölcsönhatásba egymással és külső hálózati végpontokkal. Ezeket a biztonság érdekében használják a hálózati forgalom izolálására.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-all-ingress
      namespace: default
    spec:
      podSelector: {} # Minden podra alkalmazva a default namespace-ben
      policyTypes:
      - Ingress
      ingress: [] # Minden bejövő forgalmat tilt
    
  4. Ingress: Kezeli a külső hozzáférést a klaszterben lévő szolgáltatásokhoz, általában HTTP/HTTPS-en keresztül. Az Ingress vezérlő (pl. Nginx Ingress, Traefik) az Ingress erőforrásban meghatározott szabályok szerint irányítja a forgalmat a külső hálózatról a belső szolgáltatásokhoz.

  5. Service Mesh: (pl. Istio, Linkerd) Egy további absztrakciós és funkcionalitási réteget ad hozzá a szolgáltatások közötti kommunikációhoz. Olyan képességeket kínál, mint a kölcsönös TLS, kéréskövetés, metrikák, forgalomkezelés (A/B tesztek, kanári kiadások) proxy-k (sidecar konténerek) szintjén, amelyeket minden podhoz hozzáadnak.

Így a fő kommunikációs mechanizmusok a DNS-en keresztüli Szolgáltatás felfedezés és különböző típusú szolgáltatások, kiegészítve Hálózati politikákkal a biztonság érdekében, valamint Ingress/Service Mesh a bonyolultabb forgalomkezelés és megfigyelhetőség érdekében.