Sobes.tech
Junior

Aký je rozdiel medzi headless službou a inými typmi služieb?

sobes.tech AI

Odpoveď od AI

Headless služba nemá klastrovú IP adresu a nevykonáva vyvažovanie záťaže. 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.

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 Vráti IP služby
NodePort Áno Kubernetes Vráti IP služby
Bez hlavy Nie Nie (klient) Vráti IP adresy podov

Definícia bezhlavej služby v YAML:

apiVersion: v1
kind: Service
metadata:
  name: moja-bezhlavá-služba
spec:
  selector:
    app: moja-aplikácia # Selektor pre pody
  clusterIP: None # Kľúčový rozdiel - chýba klastrová IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Namiesto prístupu k moja-bezhlavá-služba cez jedinú IP, klient dostane zoznam IP adries podov:

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

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