Sobes.tech
Middle

Jak współdziałają uruchomione aplikacje w Kubernetes?

sobes.tech AI

Odpowiedź od AI

Interakcja między aplikacjami w Kubernetes odbywa się głównie za pośrednictwem usług sieciowych.

  1. Odkrywanie usług: Aplikacje nie komunikują się bezpośrednio z podami za pomocą ich adresów IP, ponieważ są efemeryczne i mogą się zmieniać podczas ponownego tworzenia. Zamiast tego korzystają z odkrywania usług, które zapewnia stabilną nazwę DNS i IP dla grupy podów wykonujących tę samą funkcję.

    • ClusterIP: Domyślny typ usługi, zapewniający wewnętrzny adres IP dostępny tylko w klastrze.
    • NodePort: Otwiera statyczny port na każdym węźle klastra, przekierowując ruch do usługi ClusterIP.
    • LoadBalancer: Tworzy zewnętrzny balansujący obciążenie (jeśli dostawca chmury to obsługuje).
    • ExternalName: Pozwala usłudze odwołać się do zewnętrznej nazwy DNS.
  2. DNS: Kubernetes zapewnia wewnętrzny serwer DNS (np. CoreDNS), który automatycznie tworzy nazwy DNS dla usług. Aplikacja może odwołać się do innej usługi po nazwie service-name.namespace.svc.cluster.local lub w skrócie service-name.

  3. Polityki sieciowe: Określają, jak grupy podów mogą wchodzić w interakcje ze sobą i z zewnętrznymi punktami końcowymi sieci. Są używane do izolacji ruchu sieciowego ze względów bezpieczeństwa.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-all-ingress
      namespace: default
    spec:
      podSelector: {} # Dotyczy wszystkich podów w namespace default
      policyTypes:
      - Ingress
      ingress: [] # Zabrania wszelkiego ruchu przychodzącego
    
  4. Ingress: Zarządza zewnętrznym dostępem do usług w klastrze, zwykle przez HTTP/HTTPS. Kontroler Ingress (np. Nginx Ingress, Traefik) kieruje ruch z sieci zewnętrznej do odpowiednich wewnętrznych usług na podstawie reguł zdefiniowanych w zasobie Ingress.

  5. Service Mesh: (np. Istio, Linkerd) Dodaje dodatkową warstwę abstrakcji i funkcjonalności dla interakcji usług. Zapewnia takie możliwości jak mutual TLS, śledzenie żądań, metryki, zarządzanie ruchem (testy A/B, wydania kanaryjne) na poziomie serwerów proxy (kontenery sidecar) dodawanych do każdego poda.

W ten sposób głównymi mechanizmami interakcji są odkrywanie usług przez DNS i różne typy usług, uzupełnione politykami sieciowymi dla bezpieczeństwa oraz Ingress/Service Mesh dla bardziej zaawansowanego zarządzania ruchem i obserwowalności.