Sobes.tech
Junior

Czym różni się usługa headless od innych typów usług?

sobes.tech AI

Odpowiedź od AI

Usługa bez głowy nie ma adresu IP klastra i nie wykonuje równoważenia obciążenia. Zamiast tego, DNS bezpośrednio zwraca adresy IP wszystkich podów odpowiadających selektorowi usługi. To pozwala klientowi samodzielnie wybrać, z którym podem się połączyć, lub użyć własnego algorytmu równoważenia.

Typowe zastosowania:

  • StatefulSets: Dla aplikacji wymagających unikalnej identyfikacji sieciowej i stabilnego przechowywania danych.
  • Discovery: Klienci mogą bezpośrednio wykrywać pody i zarządzać połączeniami.
  • Własne równoważenie obciążenia: Aplikacje mogą implementować własne algorytmy równoważenia.

Porównanie z usługami ClusterIP i NodePort:

Typ usługi IP klastra Równoważenie obciążenia DNS
ClusterIP Tak Kubernetes Zwraca IP usługi
NodePort Tak Kubernetes Zwraca IP usługi
Bez głowy Nie Nie (klient) Zwraca adresy IP podów

Definicja usługi bez głowy w YAML:

apiVersion: v1
kind: Service
metadata:
  name: moja-usluga-bez-glowy
spec:
  selector:
    app: moja-aplikacja # Selekcja dla podów
  clusterIP: None # Kluczowa różnica - brak IP klastra
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Zamiast odwoływać się do moja-usluga-bez-glowy za pomocą pojedynczego IP, klient otrzyma listę adresów IP podów:

$ kubectl get pods -l app=moja-aplikacja -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME            IP
moja-aplikacja-abcde    10.42.0.10
moja-aplikacja-fghij    10.42.0.11
moja-aplikacja-klmno    10.42.0.12

Następnie klient może wybrać dowolny z tych adresów IP, aby nawiązać połączenie.