Sobes.tech
Junior

Mis vahe on headless-teenusel ja teiste teenusetüüpide vahel?

sobes.tech AI

Vastus AI-lt

Headless-teenus ei oma klastri IP-aadressi ega tee koormuse jaotamist. Selle asemel tagastab DNS otse kõigi podide IP-aadressid, mis vastavad teenuse selektorile. See võimaldab kliendil ise valida, millisele podile ühenduda või kasutada oma jaotamisalgoritmi.

Tüüpilised kasutusviisid:

  • StatefulSets: Sobib rakendustele, millel on vaja unikaalset võrgutuvastust ja stabiilset andmete salvestamist.
  • Discovery: Kliendid saavad otse avastada podid ja hallata ühendusi.
  • Oma jaotamise algoritm: Rakendused saavad rakendada kohandatud jaotamisalgoritme.

Võrdlus ClusterIP ja NodePort teenustega:

Teenuse tüüp Klastr IP Koormuse jaotamine DNS
ClusterIP Jah Kubernetes Tagastab teenuse IP
NodePort Jah Kubernetes Tagastab teenuse IP
Headless Ei Ei (klient) Tagastab podide IP-aadressid

Headless-teenuse määratlus YAML-is:

apiVersion: v1
kind: Service
metadata:
  name: minu-headless-teenus
spec:
  selector:
    app: minu- rakendus # Selektor podidele
  clusterIP: None # Peamine erinevus - puudub klastri IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Asendades minu-headless-teenus ühe IP-ga, saab klient nimekirja podide IP-aadressidest:

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

Seejärel saab klient valida ühe neist IP-dest ühenduse loomiseks.