Sobes.tech
Junior

Jaký je rozdíl mezi headless službou a jinými typy služeb?

sobes.tech AI

Odpověď od AI

Služba bez hlavy nem má klastr IP adresu a nevykonáva záťažové vyvažovanie. Namiesto toho DNS priamo vracia IP adresy všetkých podov, ktoré zodpovedajú selektoru služby. To umožňuje klientovi sám si vybrať, ku ktorému podu sa pripojí, alebo použiť vlastný algoritmus vyvažovania záťaže.

Typické možnosti použitia:

  • StatefulSets: Pre aplikácie, ktoré vyžadujú jedinečnú sieťovú identifikáciu a stabilné ukladanie dát.
  • Discovery: Klienti môžu priamo objavovať pody a spravovať spojenia.
  • Vlastné vyvažovanie záťaže: Aplikácie môžu implementovať vlastné algoritmy vyvažovania.

Porovnanie s službami ClusterIP a NodePort:

Typ služby Klastr IP Vyvažovanie záťaže DNS
ClusterIP Áno Kubernetes Vracia IP služby
NodePort Áno Kubernetes Vracia IP služby
Bez hlavy Nie Nie (klient) Vracia IP adresy podov

Definícia služby bez hlavy v YAML:

apiVersion: v1
kind: Service
metadata:
  name: moje-bezhlavé-sluzba
spec:
  selector:
    app: moja-aplikacia # Selektor pre pody
  clusterIP: None # Kľúčový rozdiel - chýba klastr IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Namiesto prístupu k moje-bezhlavé-sluzba cez jedinú IP, klient dostane zoznam IP adries podov:

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

Potom si klient môže vybrať ktorúkoľvek z týchto IP na nadviazanie spojenia.