Sobes.tech
Junior

Kāda ir atšķirība starp headless pakalpojumu un citiem pakalpojumu veidiem?

sobes.tech AI

Atbilde no AI

Headless pakalpojums nav klastera IP adresi un neveic slodzes līdzsvarošanu. Tā vietā DNS tieši atgriež visus podu IP adreses, kas atbilst pakalpojuma selektoram. Tas ļauj klientam pats izvēlēties, pie kura poda pieslēgties vai izmantot savu slodzes līdzsvarošanas algoritmu.

Ierastie lietošanas gadījumi:

  • StatefulSets: Piemērots lietojumprogrammām, kurām nepieciešama unikāla tīkla identifikācija un stabila datu glabāšana.
  • Discovery: Klienti var tieši atrast podus un pārvaldīt savienojumus.
  • Pašs slodzes līdzsvarošana: Lietojumprogrammas var realizēt pielāgotus slodzes līdzsvarošanas algoritmus.

Salīdzinājums ar ClusterIP un NodePort pakalpojumiem:

Pakalpojuma tips Klastera IP Slodzes līdzsvarošana DNS
ClusterIP Kubernetes Atgriež pakalpojuma IP
NodePort Kubernetes Atgriež pakalpojuma IP
Headless Nē (klients) Atgriež podu IP adreses

Headless pakalpojuma definīcija YAML formātā:

apiVersion: v1
kind: Service
metadata:
  name: mana-headless-pakalpojums
spec:
  selector:
    app: mana-lietojumprogramma # Selektors podiem
  clusterIP: None # Galvenā atšķirība - nav klastera IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Tā vietā, lai piekļūtu mana-headless-pakalpojums ar vienotu IP, klients saņems podu IP sarakstu:

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

Turpmāk klients var izvēlēties jebkuru no šiem IP, lai izveidotu savienojumu.