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.