Sobes.tech
Junior

Kuo skiriasi headless paslauga nuo kitų tipų paslaugų?

sobes.tech AI

Atsakymas iš AI

Headless paslauga neturi klasterio IP adreso ir nevykdo apkrovos paskirstymo. Vietoj to, DNS tiesiogiai grąžina visų podų, atitinkančių paslaugos selektorių, IP adresus. Tai leidžia klientui pats pasirinkti, prie kurio podo prisijungti arba naudoti savo paskirstymo algoritmą.

Tipinės naudojimo galimybės:

  • StatefulSets: Skirtos programoms, kurioms reikalinga unikali tinklo identifikacija ir stabilus duomenų saugojimas.
  • Discovery: Klientai gali tiesiogiai atrasti podus ir valdyti jungtis.
  • Savo paskirstymo algoritmas: Programos gali įgyvendinti savo paskirstymo algoritmus.

Palyginimas su ClusterIP ir NodePort paslaugomis:

Paslaugos tipas Klastr IP Paskirstymas DNS
ClusterIP Taip Kubernetes Grąžina paslaugos IP
NodePort Taip Kubernetes Grąžina paslaugos IP
Headless Ne Ne (klientas) Grąžina podų IP adresus

Headless paslaugos apibrėžimas YAML:

apiVersion: v1
kind: Service
metadata:
  name: mano-be-headless-servisas
spec:
  selector:
    app: mano-programa # Podų selektorius
  clusterIP: None # Pagrindinis skirtumas - nėra klasterio IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Vietoj to, kad prieiti prie mano-be-headless-servisas per vieną IP, klientas gaus sąrašą IP adresų:

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

Tada klientas gali pasirinkti bet kurį iš šių IP, kad užmegztų ryšį.