Sobes.tech
Junior

Mi a különbség a headless-szolgáltatás és más típusú szolgáltatások között?

sobes.tech MI

Válasz az MI-től

A fej nélküli szolgáltatásnak nincs klaszter IP címe, és nem végzi el a terheléselosztást. Ehelyett a DNS közvetlenül visszaadja az összes, a szolgáltató szelekciójával egyező pod IP-címét. Ez lehetővé teszi a kliens számára, hogy maga válassza ki, melyik podhoz csatlakozik, vagy saját terheléselosztó algoritmust használjon.

Tipikus felhasználási lehetőségek:

  • StatefulSets: Olyan alkalmazásokhoz, amelyek egyedi hálózati azonosítást és stabil adat tárolást igényelnek.
  • Discovery: A kliensek közvetlenül felfedezhetik a podokat és kezelhetik a kapcsolatokat.
  • Saját terheléselosztás: Az alkalmazások saját algoritmusokat valósíthatnak meg.

Összehasonlítás a ClusterIP és NodePort szolgáltatásokkal:

Szolgáltatástípus Klaszter IP Terheléselosztás DNS
ClusterIP Igen Kubernetes Visszaadja a szolgáltatás IP-jét
NodePort Igen Kubernetes Visszaadja a szolgáltatás IP-jét
Headless Nem Nem (kliens) Visszaadja a podok IP-címeit

Headless szolgáltatás YAML definíció:

apiVersion: v1
kind: Service
metadata:
  name: fej-nélküli-szolgáltatás
spec:
  selector:
    app: alkalmazásom # Podok kiválasztója
  clusterIP: None # A fő különbség - nincs klaszter IP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Ahelyett, hogy az fej-nélküli-szolgáltatás-hoz egyetlen IP-n keresztül férne hozzá, a kliens egy listát kap a podok IP-címeiről:

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

Ezután a kliens kiválaszthat bármelyik IP-t a kapcsolat létesítéséhez.