Sobes.tech
Junior

Koja je razlika između headless servisa i drugih tipova servisa?

sobes.tech АИ

Одговор од АИ

Headless servis nema klaster IP adresu i ne vrši balansiranje opterećenja. Umesto toga, DNS direktno vraća IP adrese svih podova koji odgovaraju selektoru servisa. Ovo omogućava klijentu da sam odabere na koji pod da se poveže ili da koristi sopstveni algoritam balansiranja.

Tipične opcije za korišćenje:

  • StatefulSets: Za aplikacije koje zahtevaju jedinstvenu mrežnu identifikaciju i stabilno skladištenje podataka.
  • Discovery: Klijenti mogu direktno otkrivati podove i upravljati vezama.
  • Sopstveno balansiranje opterećenja: Aplikacije mogu implementirati sopstvene algoritme balansiranja.

Upoređenje sa ClusterIP i NodePort servisima:

Tip servisa Klasterski IP Balansiranje opterećenja DNS
ClusterIP Da Kubernetes Vraća IP servisa
NodePort Da Kubernetes Vraća IP servisa
Headless Ne Ne (klijent) Vraća IP adrese podova

Definicija headless servisa u YAML:

apiVersion: v1
kind: Service
metadata:
  name: moj-headless-servis
spec:
  selector:
    app: moja-aplikacija # Selektor za podove
  clusterIP: None # Ključna razlika - nema klasterski IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Umesto pristupa moj-headless-servis putem jedne IP adrese, klijent će dobiti listu IP adresa podova:

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

Zatim, klijent može odabrati bilo koju od ovih IP adresa za uspostavljanje veze.